11

我知道您可以通过使用 AVFoundation 类(AVURLAsset、AVMutableComposition、AVMutableCompositionTrack 等)一个接一个地附加来合并多个剪辑并创建一个视频。

有像“Video-Joiner”这样的应用程序可以做到这一点。

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

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

首先,我使用站在画面左侧的前置摄像头录制视频 1。然后视频 2 站在右边。在视频 1 中提出问题,在视频 2 中我回答。

当我合并时,它应该看起来像是在接受我自己的采访。

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

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

欣赏任何想法。

谢谢。

4

2 回答 2

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...

}
于 2011-04-26T11:23:01.710 回答
2

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

视频处理

于 2014-01-15T07:12:57.710 回答