[英]NSError error code -11819 on iOS when trying to play media using AVPlayer
[英]AVPlayer and AVFoundationErrorDomain Code=-11819
我正在開發一個應用程序,其中使用來自雲服務的歌曲通過 AVPlayer 播放音樂。 一切正常,大部分文件都可以正常播放。
我最近從特定文件中收到錯誤消息,並且收到來自 AVPlayer 的消息,我無法確定是網絡通信問題還是文件本身的編碼問題:
錯誤域=AVFoundationErrorDomain 代碼=-11819“無法完成操作”UserInfo=0x176abd80 {NSLocalizedRecoverySuggestion=稍后重試。, NSLocalizedDescription=無法完成操作}
查看文檔我發現代碼 11819 意味着:
AVErrorMediaServicesWereReset
- 由於媒體服務不可用,操作無法完成。
有沒有人經歷過這個?
在將 AVURLAsset 加載到 AVPlayerItem 之前,我通過使用以下方法找到了解決方案
它在特定曲目中崩潰的原因是因為其中一些是 mp3 文件,並且他們沒有立即可用的有關歌曲的所有信息(例如持續時間)。
如前所述, keys
是 AVAsset 上的屬性。 Apple 在其文檔中表示,您應該始終在 iOS 中使用它(但我懷疑基於文件的視頻是否需要它)。
我為此苦苦掙扎,最后這無關緊要 - 但無論如何,這可能會對將來的某人有所幫助:
asset = AVAsset(url: videoURL)
let keys = ["duration", "playable", "preferredRate", "preferredVolume", "hasProtectedContent", "providesPreciseDurationAndTiming", "metadata"]
asset.loadValuesAsynchronously(forKeys: keys) {
for key in keys {
var error: NSError? = nil
let status = self.asset.statusOfValue(forKey: key, error: &error)
print("KEY:", key, terminator: "")
switch status {
case .loading:
print(" Loading")
case .loaded:
print(" Sucessfully loaded, continue processing")
case .failed:
print(" Failed with error \(error!)")
case .cancelled:
print(" CANCELLED")
case .unknown:
print(" Unknown")
default:
print(" DEFAULT")
}
}
print("WAIT A BIT...")
DispatchQueue.main.async {
print("...RUN IT")
self.runMovie()
}
}
同樣的解決方案也適用於播放電影。 如果您在使用 mp4 資產時遇到Cannot Complete Action
錯誤,只需添加:
asset.loadValuesAsynchronously(forKeys: ["metadata"]) {
self.runMovie()
}
在將 AVURLAsset 加載到 AVPlayerItem 之前
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.