Я пытаюсь заставить два видео воспроизводиться последовательно. Я пробовал AVQueuePlayer, но между двумя клипами возникает огромная "отрыжка". Мне нужно, чтобы они воспроизводились без перерыва.
Поэтому я пытаюсь использовать AVMutableComposition и AVPlayer, но не могу добиться нужного результата.
Вот мой код (не обращайте внимания на утечки памяти, просто тестирую в пустом проекте...):
composition = [[AVMutableComposition alloc] init];
NSString * path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"];
NSURL * url = [NSURL fileURLWithPath:path];
AVURLAsset * asset = [[AVURLAsset alloc] initWithURL:url options:nil];
NSError * error = NULL;
[composition insertTimeRange:CMTimeRangeMake(CMTimeMake(0,1000),CMTimeMake(4,1000)) ofAsset:asset atTime:CMTimeMake(0,1000) error:&error];
if(error) NSLog(@"error: %@",error);
path = [[NSBundle mainBundle] pathForResource:@"chug1" ofType:@"mp4"];
url = [NSURL fileURLWithPath:path];
asset = [[AVURLAsset alloc] initWithURL:url options:nil];
error = NULL;
[composition insertTimeRange:CMTimeRangeMake(CMTimeMake(0,1000),CMTimeMake(3,1000)) ofAsset:asset atTime:CMTimeMake(4.1,1000) error:&error];
if(error) NSLog(@"error: %@",error);
AVPlayerItem * item = [[AVPlayerItem alloc] initWithAsset:composition];
AVPlayer * player = [AVPlayer playerWithPlayerItem:item];
AVPlayerLayer * layer = [AVPlayerLayer playerLayerWithPlayer:player];
[layer setFrame:CGRectMake(0, 0, 320, 480)];
[[[self view] layer] addSublayer:layer];
[player play];
Код кажется мне правильным. Первый кадр каждого видео действительно выводится на экран. Но видео не воспроизводится вообще. Я что-то упускаю? Мне нужно разобраться, как использовать MutableTrack?