如何在iPhone sdk中使用AVMutableComposition合并视频

Par*_*lim 5 iphone ios4 ios ios5 ios6

我使用了以下方式,但视频没有合并,在输出中,添加到AVMutableCompositionTrack的最后一个视频存储在库中.

NSArray *arrVideoUrl=[objApp.dictSelectedVideos allKeys];
AVURLAsset *video1=[[AVURLAsset alloc]initWithURL:[arrVideoUrl objectAtIndex:0] options:nil];
AVURLAsset *video2=[[AVURLAsset alloc]initWithURL:[arrVideoUrl objectAtIndex:1] options:nil];
AVURLAsset *audioAsset=[[AVURLAsset alloc]initWithURL:songUrl options:nil];

AVMutableComposition *mixcomposition=[AVMutableComposition composition];

AVMutableCompositionTrack *track1=[mixcomposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
[track1 insertTimeRange:CMTimeRangeMake(kCMTimeZero, video1.duration) ofTrack:[[video1 tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]
                 atTime:kCMTimeZero error:nil];


AVMutableCompositionTrack *track2=[mixcomposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];

[track2 insertTimeRange:CMTimeRangeMake(kCMTimeZero, video2.duration) ofTrack:[[video2 tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]
                 atTime:kCMTimeZero error:nil];
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?

Bhu*_*nVU 3

现在您已经AVMutableComposition为两个轨道创建了 s,您需要AVMutableVideoCompositionLayerInstruction为它们创建 -- - 。

  • 为合并的轨道创建AVMutableVideoCompositionInstruction,其对象将
    包含instructions在由第一和第二轨道组成的数组中AVMutableVideoCompositionLayerInstruction

  • 创建AVMutableVideoComposition合并轨道对象并在上面提供
    AVMutableVideoCompositionInstruction

这种方法来自链接的一个非常好的教程。