我正在尝试使用AVPlayer
自定义 URL 加载(自定义NSURLProtocol
子类)。但它似乎[NSURLProtocol registerClass]
不适用于真实设备中的 AVPlayer(请参阅此线程)。
现在我正在尝试使用AVAssetResourceLoaderDelegate
来进行自定义 URL 加载。但是,如何触发委托对我来说有点令人困惑。我处理的 URL 看起来像这样https://some_ip_address:port/resource/
,但似乎我的委托没有被调用来获取这样的 URL。我试图将方案更改为非 HTTP(例如“quic”)并且能够触发委托代码,但我真的不想破解该方案。
以下是相关代码:
(委托在不同的文件中实现)
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
AVAssetResourceLoader *resourceLoader = asset.resourceLoader;
[resourceLoader setDelegate:delegate
queue:dispatch_queue_create("MyURLDelegate loader", nil)];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];
AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];
AVPlayerViewController *controller = [[AVPlayerViewController alloc] init];
controller.player = player;
[player play];
[self presentViewController:controller animated:false completion:^{}];
有了上述内容,如果 url 具有“https”方案,我看不到在委托中触发了任何方法。我缺少什么来允许委托为“https”URL 进行自定义 URL 加载?
谢谢