Воспроизвести AVMutableComposition с помощью AVPlayer?

Я пытаюсь заставить два видео воспроизводиться последовательно. Я пробовал 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?

8
задан GEOCHET 28 November 2011 в 22:44
поделиться