Tag: avsoundation

AVAssetResourceLoaderDelegate不被调用

我一直试图得到一些AVAssetResourceLoaderDelegate协议的消息,但它似乎永远不会被调用。 我已经validation了一切正在主线上发生; 从创buildAVURLAsset ,创buildAVPlayerItem ,创build委托,并将委托队列设置为主线程。 我正在尝试使用networking托pipe的MP4内容和未encryption的HLS内容。 我的声明: @property (readwrite, strong) AVPlayer* player; @property (strong) AVPlayerItem* playerItem; @property (strong) id<AVAssetResourceLoaderDelegate> resourceLoaderDelegate; 播放video的代码: AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil]; … self->_resourceLoaderDelegate = [[MyAssetResourceLoaderDelegate alloc] init]; [asset.resourceLoader setDelegate:self->_resourceLoaderDelegate queue:dispatch_get_main_queue()]; … self->_playerItem = [AVPlayerItem playerItemWithAsset:asset]; … [self setPlayer:[AVPlayer playerWithPlayerItem:self->_playerItem]]; 但是, resourceLoader:shouldWaitForLoadingOfRequestedResource:永远不会被调用(其他任何委托方法都不会)。 为了清楚起见,我使用iOS模拟器以及运行iOS 8的iPhone 5s进行testing(结果看起来完全相同)。 我已经validation了所有的代码正在主线程上执行,正如我在这个问题中读到的,一切都必须在同一个线程上。 有没有人有任何build议,或者也许是一些可用的代码实际被调用的源代码的引用? 更新:我已经确定,这个代码工作正常,当url是一个本地文件,但它仍然无法正常工作时,它是一个远程文件。 是预期的行为还是有办法我可以这样做的远程文件?