在調(diào)試視頻時出現(xiàn)黑屏的情況,然后發(fā)現(xiàn)是 AVPlayerItemStatusFailed 的,通過打印 item.error 得到 Error Domain=AVFoundationErrorDomain Code=-11850 "操作停止" 的錯誤提示。
基本上網(wǎng)絡(luò)上給出的都是 Domain=AVFoundationErrorDomain Code=-11850操作停止如何解決 的解答,通過聯(lián)系服務(wù)商進行了解決,如果自己處理視頻的請自行聯(lián)系服務(wù)端人員解決。
然而我這邊不一樣,我發(fā)現(xiàn)是 是 AVPlayerItem 初始化用法不同
[AVPlayerItem playerItemWithAsset:asset];
[[AVPlayerItem alloc] initWithURL:localVideoUrl];
用了前者,發(fā)現(xiàn)就是有這個問題,后者沒有。
進一步發(fā)現(xiàn)是我們項目中,用了AVURLAssetPreferPreciseDurationAndTimingKey這個 key . 這個key對應(yīng)的value是一個布爾值, 用來表明資源是否需要為時長的精確展示,以及隨機時間內(nèi)容的讀取進行提前準(zhǔn)備.
然而實際告訴以上不同,都不是。
+ (NSURL *)fileURLWithPath:(NSString *)path;
+ (nullable instancetype)URLWithString:(NSString *)URLString
前者會自動帶上 file:// 的前綴的,所以一般我們作如下區(qū)別
- 訪問的是本地資源,而且不包含協(xié)議頭,使用fileURLWithPath創(chuàng)建URL
- 使用fileURLWithPath創(chuàng)建URL時,不用擔(dān)心URL中混有中文的問題,系統(tǒng)會自動實現(xiàn)轉(zhuǎn)換
我這邊是引用本地的鏈接,所以應(yīng)該是自己用 fileURLWithPath, 問題到此才找到答案的。