Я пытаюсь воспроизвести файл 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?