Я пытаюсь использовать AVPlayer
с пользовательской загрузкой URL (пользовательский NSURLProtocol
подкласс). Но, похоже, [NSURLProtocol registerClass]
не работает с AVPlayer на реальном устройстве (см. Этот поток ).
Теперь я пытаюсь использовать AVAssetResourceLoaderDelegate
для пользовательской загрузки URL. Однако меня немного смущает, как делегат будет активирован. URL, с которым я имею дело, выглядит следующим образом https://some_ip_address:port/resource/
, но, похоже, мой делегат не вызван для такого URL. Я попытался изменить схему на не HTTP (например, «qui c») и смог вызвать код делегата, но я действительно не хочу взламывать схему.
Вот соответствующий код:
(делегат реализован в другом файле)
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». Чего мне не хватает, чтобы делегат мог выполнять пользовательскую загрузку URL-адресов для https-адресов?
Спасибо