Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios AVPlayer和AVFoundationErrorDomain代码=-11819_Ios_Objective C_Avfoundation_Avplayer - Fatal编程技术网

Ios AVPlayer和AVFoundationErrorDomain代码=-11819

Ios AVPlayer和AVFoundationErrorDomain代码=-11819,ios,objective-c,avfoundation,avplayer,Ios,Objective C,Avfoundation,Avplayer,我正在开发一个应用程序,通过AVPlayer使用云服务中的歌曲播放音乐。一切正常,大多数文件都在播放,没有任何问题 最近,我从特定文件中收到一个错误,由于来自AVPlayer的消息,我无法确定这是网络通信问题还是文件本身的编码问题: 错误域=AVFoundationErrorDomain代码=-11819“无法完成 操作“UserInfo=0x176abd80{nsLocalizedRecoverysSuggestion=重试 稍后,NSLocalizedDescription=无法完成操作}

我正在开发一个应用程序,通过AVPlayer使用云服务中的歌曲播放音乐。一切正常,大多数文件都在播放,没有任何问题

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

错误域=AVFoundationErrorDomain代码=-11819“无法完成 操作“UserInfo=0x176abd80{nsLocalizedRecoverysSuggestion=重试 稍后,NSLocalizedDescription=无法完成操作}

通过查看文档,我发现代码11819表示:

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


以前有人经历过这种情况吗?

在将avurlaste加载到AVPlayerItem之前,我使用以下方法找到了解决方案

  • (void)LoadValuesSynchronouslyForkeys:(NSArray*)键完成处理程序:(void(^)(void))处理程序

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

如前所述,
键是AVAsset上的属性。苹果在其文档中说,你应该在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()
        }
    }

如果你不介意分享,你在这里传递哪些密钥来让它工作?只是持续时间?我希望这也能解决我的玩家问题。仅供参考…这并没有解决我的问题+答案是1