【问题标题】:AVPlayer and AVFoundationErrorDomain Code=-11819AVPlayer 和 AVFoundationErrorDomain 代码=-11819
【发布时间】:2013-12-14 09:22:03
【问题描述】:

我正在开发一个应用程序,通过 AVPlayer 使用来自云服务的歌曲播放音乐。一切正常,大部分文件都可以正常播放。

我最近收到来自特定文件的错误消息,并且来自 AVPlayer 的消息我无法确定这是网络通信问题还是文件本身的编码:

错误域=AVFoundationErrorDomain 代码=-11819 "无法完成 Action" UserInfo=0x176abd80 {NSLocalizedRecoverySuggestion=再试一次 稍后,NSLocalizedDescription=无法完成操作}

查看文档我发现代码 11819 的意思是:

AVErrorMediaServicesWereReset - 由于媒体服务不可用,操作无法完成。

有没有人经历过这种情况?

【问题讨论】:

    标签: ios objective-c avfoundation avplayer


    【解决方案1】:

    在将 AVURLAsset 加载到 AVPlayerItem 之前,我通过以下方法找到了解决方案

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

    它在特定曲目中崩溃的原因是因为其中一些曲目包含 mp3 文件,并且它们没有立即可用的有关歌曲的所有信息(例如持续时间)。

    【讨论】:

    • 如果您不介意共享,您会在此处传递哪些密钥以使其正常工作?只是持续时间?
    • 我希望这也能解决我的播放器问题。
    • 仅供参考...这对我来说没有解决问题。 +1 回答虽然
    【解决方案2】:

    如前所述,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()
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-30
      • 2017-09-15
      • 1970-01-01
      • 2016-01-12
      • 2018-12-16
      • 2017-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多