AVAsset не работает с потоковым файлом HLS - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь воспроизвести файл m3u8 и файл mp3 одновременно:

NSURL *audioURL = [NSURL URLWithString:@"https://XXX.de/XXX.mp3"];
AVAsset *audioAsset = [AVAsset assetWithURL:audioURL];

NSURL *videoURL = [NSURL URLWithString:@"https://XXX.de/XXX.m3u8"];
AVAsset *videoAsset = [AVAsset assetWithURL:videoURL];


NSError *error;

AVMutableComposition* mixAsset = [[AVMutableComposition alloc] init];

AVMutableCompositionTrack* audioTrack = [mixAsset addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
[audioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, audioAsset.duration) ofTrack:[[audioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0] atTime:kCMTimeZero error: &error];

AVMutableCompositionTrack* videoTrack = [mixAsset addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
[videoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration) ofTrack:[[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:kCMTimeZero error: &error];

AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:mixAsset];

movie = [AVPlayer playerWithPlayerItem:playerItem];

, но он не работает. Я получаю следующую ошибку:

*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array

С mp4-файлами он работает, но не с файлом m3u8. В документах Apple говорится, что avasset работает с локальными или удаленными URL: https://developer.apple.com/documentation/avfoundation/avasset?language=objc

Интересно, не работает ли m3u8?

...