2013-04-09 68 views
5

我已经使用了以下方法,但视频未合并,并且在输出中添加到AVMutableCompositionTrack的最后一个视频获取存储在库中。如何在iPhone中使用AVMutableComposition合并视频sdk

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]; 

任何人都可以请帮我吗?

回答

2

现在您有两个曲目的AVMutableComposition s,您需要为它们两个创建 - - AVMutableVideoCompositionLayerInstruction

  • 创建AVMutableVideoCompositionInstruction为您的合并的轨道,其目的将是
    在由AVMutableVideoCompositionLayerInstruction 用于第一和第二轨道的阵列具有instructions

  • 创建AVMutableVideoComposition用于合并跟踪对象并提供以上
    AVMutableVideoCompositionInstruction

这种方法是从一个很好的教程this链接。

+0

嗯,这个..它工作!但我正在解决问题...视频方向设置为横向,这是AVAsset的默认设置。我使用了链接给出的教程,但方向问题即将到来。你能帮我解决这个问题吗? – 2013-04-10 09:07:42

+0

很高兴能够帮助...对于定位,如果没有工作,那么你可以尝试AVPlayerLayer上的'transform'属性,通过根据设备方向进行转换(CGAfflineTransform)。 – BhushanVU 2013-04-10 09:16:12

+1

感谢您的代码!哦,等等,你没有留下任何... -1 – 2015-11-17 22:50:01

相关问题