我正在尝试让两个视频按顺序播放。我尝试过 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 的东西吗?