9

我知道你可以合并多个片段,并通过使用AVFoundation类 - AVURLAsset,AVMutableComposition,AVMutableCompositionTrack等iOS视频编辑 - 是否可以将两个视频文件合并为一个(使用iOS 4 AVFoundation类)?

还有像“视频乔伊纳”是做应用程序附加一个其他后建立一个单一的视频。

我想要做的是并列2个视频。

我的应用程序的想法 - SelfInterviewer请不要使用前置摄像头站在不偷:)

首先我录制视频1留给框架。然后视频2站在右侧。在视频1中提出一个问题,在视频2中我回答。

当我合并时,它应该看起来像我正在接受采访。

我几乎肯定它在iOS中不可行,只是想确认。另外,如果这是不行的话,我会对任何服务器端解决方案感兴趣 - 上传两个视频并完成相同的操作。我认为Adobe Premiere可以做到这一点。不知道他们是否有任何公共API。

欣赏任何想法。

谢谢。

+0

你找到了解决方案? – 2014-01-14 08:40:11

回答

9

是能够合并2个视频:
1.添加两个资产到AVMutableComposition在开始时间为0。
2.将优选变换到铁轨上,在这个例子中尺度变换。

- (void) mergeVideos{ 
    ///... after getting hold or your assets....firstAsset, secondAsset 

    AVMutableComposition* mixComposition = [AVMutableComposition composition]; 

    AVMutableCompositionTrack *firstTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo 
                     preferredTracfirst:kCMPersistentTracfirst_Invalid]; 
    [firstTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, firstAsset.duration) 
         ofTrack:[[firstAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] 
         atTime:kCMTimeZero error:nil]; 

    AVMutableCompositionTrack *secondTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo 
                     preferredTracfirst:kCMPersistentTracfirst_Invalid]; 

    [secondTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, secondAsset.duration) 
         ofTrack:[[secondAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] 
          atTime:kCMTimeZero error:nil];  

    [secondTrack setPreferredTransform:CGAffineTransformMakeScale(0.25f,0.25f)]; 

    //... export video here... 

} 
+0

谢谢,我会试试看。不幸的是,由于我是新手,因此无法就答案投票。 – Naga 2011-04-27 14:09:29

+0

但是,addMutableTrackWithMediaType:preferredTracfirst:API不存在。只有API addMutableTrackWithMediaType:preferredTrackID:存在。我尝试使用API​​ addMutableTrackWithMediaType:preferredTrackID本身,我只获取导出视频中的第一个视频。 – spd 2011-12-14 08:24:51

+0

对不起,延迟回复。 YOu应该使用一个MutableComposition而不是两个。 – Splendid 2011-12-15 16:08:45

2

我发现,当我尝试做同样的事情这个环节,但对我来说它不是并排,另一个视频的视频之上,你可以通过这个链接

做同样的事情Video Manipulation