AVAssetResourceLoaderDelegate
프로토콜에서 일부 메시지를 다시 가져 오려고했지만 호출 된 적이없는 것 같습니다. 나는 모든 것이 주 스레드에서 일어나고 있음을 확인했다. AVURLAsset
작성에서 AVPlayerItem
작성, 위임 작성 및 위임 대기열이 기본 스레드로 설정됩니다. 웹 호스팅 MP4 콘텐츠 및 암호화되지 않은 HLS 콘텐츠를 스트리밍하려고합니다.AVAssetResourceLoaderDelegate가 호출되지 않음
내 선언 : 비디오 재생을위한
@property (readwrite, strong) AVPlayer* player;
@property (strong) AVPlayerItem* playerItem;
@property (strong) id<AVAssetResourceLoaderDelegate> resourceLoaderDelegate;
코드 :
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 5 (테스트 결과는 동일하게 나타남)를 사용하여 테스트하고 있습니다.
모든 코드가 동일한 스레드에 있어야한다는 것을 this question에서 읽었 기 때문에 모든 코드가 주 스레드에서 실행되고 있는지 확인했습니다.
누구든지 제안을하거나이 대리자가 실제로 호출 된 일부 소스 코드에 대한 참조를 갖고 있습니까?
업데이트 : URL이 로컬 파일 인 경우이 코드가 제대로 작동하지만 원격 파일 인 경우이 코드는 작동하지 않습니다. 예상되는 동작입니까 아니면 원격 파일에 대해이 작업을 수행 할 수있는 방법입니까?
_playerItem 및 _resourceLoaderDelegate가 선언 된 코드를 게시 할 수 있습니까? – Acey
위 코드를 업데이트했습니다. 또한 url이 로컬 파일을 가리키는 경우 대리자가 호출되는 것으로 확인되었습니다. 대의원에게 전화하는 것을 속이는 방법이 있습니까? – MxSagan
당신과 비슷한 문제가있을 수 있습니다. http://stackoverflow.com/questions/26649865/avassetresourceloaderdelegate-methods-not-working-on-device 그리고 내 대답이 있습니다. – Chugaister