AVURLAsset状态卡在AVKeyValueStatusLoading上; loadValuesAsynchronouslyForKeys:completionHandler永远不会完成

mkc*_*842 5 ios avplayer

我正在使用AVPlayer来传输音频.在开始播放URL之前,我打电话

[self.currentlyLoadingAsset loadValuesAsynchronouslyForKeys:@[@"playable", @"duration"] completionHandler:^{
    [self evaluateAssetStatusForEpisode:episode asset:self.currentlyLoadingAsset];
}];
Run Code Online (Sandbox Code Playgroud)

只有当completionHandler执行时,我才会重新评估该项目,看它是否已准备就绪.

但对于一个用户来说,completionHandler突然没有开火.他不能从网络传输音频(但仍然可以播放下载的曲目).记录

AVKeyValueStatus status = [asset statusOfValueForKey:@"playable" error:&error];
Run Code Online (Sandbox Code Playgroud)

,我发现状态是连续的AVKeyValueStatusLoading.它永远不会更新,但AVKeyValueStatusLoading永远不会返回错误.

我尝试过loadValuesAsynchronouslyForKeys主线程,删除duration密钥,并创建currentlyLoadingAsset一个属性以确保它不会被释放.