小编ons*_*wai的帖子

AVAssetResourceLoaderDelegate方法不在设备上工作

我一直在研究一种简单的AVPlayer加密HLS媒体.

我正在使用它AVAssetResourceLoaderDelegate来处理密钥检索过程,因此可以使用有效密钥播放加密媒体.

该程序在模拟器上完美运行,但它在设备上根本不起作用.

以下是代码:

- (void) playUrlByAVPlayer:(NSString *) videoUrl
{
    NSURL *streamURL = [NSURL URLWithString:videoUrl];

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

    [asset.resourceLoader setDelegate:self queue:dispatch_get_main_queue()];

    self.playerItem = [AVPlayerItem playerItemWithAsset:asset];                           
    self.player = [AVPlayer playerWithPlayerItem:self.playerItem];

    self.playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
    [self.playerLayer setFrame:self.view.frame];
    [self.view.layer addSublayer:self.playerLayer];

    [self.player play];
}
Run Code Online (Sandbox Code Playgroud)

经过一些调试,我意识到委托方法shouldWaitForLoadingOfRequestedResource从未在设备上调用过.

我读过其他相关问题:

AVAssetResourceLoaderDelegate未被调用

AVAssetResourceLoaderDelegate - 仅请求前两个字节?

我试图包围内的所有代码dispatch_async,dispatch_get_main_queue块,但有解决我的运气不好.

目前,我的上述代码未被任何调度队列块包围.

有关这个问题的任何想法?

avfoundation ios

4
推荐指数
1
解决办法
2547
查看次数

标签 统计

avfoundation ×1

ios ×1