gpt4 book ai didi

ios - 当状态为 AVKeyValueStatusFailed 时重新加载 AVAsset 中的键

转载 作者:可可西里 更新时间:2023-11-01 04:46:48 25 4
gpt4 key购买 nike

我正在做以下事情:

  • 使用给定的 URL 创建一个新的 AVAsset。该 URL 指向远程网络服务器上的视频。
  • 尝试通过调用 loadValuesAsynchronouslyForKeys:completionHandler:
  • 加载 tracks 属性
  • 初始请求失败,因为不存在互联网连接
  • 我注意到通过调用 statusOfValueForKey:error:
  • 请求失败了
  • 然后我等待连接重新出现(使用一些可达性代码)。一旦完成,我再次调用 loadValuesAsynchronouslyForKeys:completionHandler:

这就是问题开始的地方。我想 AVAsset 会继续并尝试重新加载 tracks 属性,因为它之前失败了。然而,这似乎并没有发生。 statusOfValueForKey:error: 仍将返回 AVKeyValueStatusFailed,尽管互联网连接可用并且视频可以播放。

有没有办法重置这个给定属性的状态并尝试另一个加载?还有其他方法可以解决这个问题吗?

最佳答案

  1. 您是要创建新的 AVURLAsset 还是只是重复使用之前的 AVURLAsset?
  2. loadValuesAsynchronouslyForKeys:completionHandler: 的完成处理程序中,您是否正在分派(dispatch)回主线程?

如果您在准备好重试时再次调用此方法(或类似的方法)会发生什么情况。

- (void)setContentURL:(NSURL *)contentURL
{
if (_contentURL != contentURL) {
_contentURL = contentURL;

AVURLAsset *asset = [AVURLAsset URLAssetWithURL:_contentURL options:nil];

NSArray *requestedKeys = [NSArray arrayWithObjects:ISIVideoPlayerControllerTracksKey, ISIVideoPlayerControllerPlayableKey, nil];

[asset loadValuesAsynchronouslyForKeys:requestedKeys completionHandler: ^{
dispatch_async(dispatch_get_main_queue(), ^{
[self prepareToPlayAsset:asset withKeys:requestedKeys];
});
}];
}
}

关于ios - 当状态为 AVKeyValueStatusFailed 时重新加载 AVAsset 中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21139806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com