簡體   English   中英

AVPlayer 和 AVFoundationErrorDomain 代碼=-11819

[英]AVPlayer and AVFoundationErrorDomain Code=-11819

我正在開發一個應用程序,其中使用來自雲服務的歌曲通過 AVPlayer 播放音樂。 一切正常,大部分文件都可以正常播放。

我最近從特定文件中收到錯誤消息,並且收到來自 AVPlayer 的消息,我無法確定是網絡通信問題還是文件本身的編碼問題:

錯誤域=AVFoundationErrorDomain 代碼=-11819“無法完成操作”UserInfo=0x176abd80 {NSLocalizedRecoverySuggestion=稍后重試。, NSLocalizedDescription=無法完成操作}

查看文檔我發現代碼 11819 意味着:

AVErrorMediaServicesWereReset - 由於媒體服務不可用,操作無法完成。

有沒有人經歷過這個?

在將 AVURLAsset 加載到 AVPlayerItem 之前,我通過使用以下方法找到了解決方案

  • (void)loadValuesAsynchronouslyForKeys:(NSArray *)keys completionHandler:(void (^)(void))handler

它在特定曲目中崩潰的原因是因為其中一些是 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM