iOS视频编辑 - 是否可以使用iOS 4 AVFoundation类将两个视频文件合并(并排而不是一个接一个)?

Nag*_*aga 11 avfoundation video-editing adobe-premiere ios4 avvideocomposition

我知道你可以合并多个剪辑并通过使用AVFoundation类 - AVURLAsset,AVMutableComposition,AVMutableCompositionTrack等一个接一个地追加来创建单个视频.

有像'Video-Joiner'这样的应用程序可以做到这一点.

我想要做的是并置2个视频.

我的应用创意 - SelfInterviewer请不要偷:)

首先,我使用前置摄像头向左侧框架录制视频1.然后视频2站在右边.在视频1中提出问题并在视频中2我回答.

当我合并时,看起来我自己正在接受采访.

我几乎肯定它在iOS中不可行,只是想确认一下.

此外,如果不行,我会对任何服务器端解决方案感兴趣 - 上传两个视频并完成相同的操作.我认为adobe premiere可以做到.不确定他们是否有任何公共API.

欣赏任何想法.

谢谢.

小智 11

是的,可以合并2个视频:
1.在开始时间0
将两个资源添加到AVMutableComposition.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...

}
Run Code Online (Sandbox Code Playgroud)