iOS 视频编辑 - 是不是可以使用 iOS 4 AVFoundation 类将两个视频文件合并(并排而不是一个接一个)为一个?
Posted
技术标签:
【中文标题】iOS 视频编辑 - 是不是可以使用 iOS 4 AVFoundation 类将两个视频文件合并(并排而不是一个接一个)为一个?【英文标题】:iOS Video Editing - Is it possible to merge (side by side not one after other) two video files into one using iOS 4 AVFoundation classes?iOS 视频编辑 - 是否可以使用 iOS 4 AVFoundation 类将两个视频文件合并(并排而不是一个接一个)为一个? 【发布时间】:2011-08-11 01:47:45 【问题描述】:我知道您可以使用 AVFoundation 类(AVURLAsset、AVMutableComposition、AVMutableCompositionTrack 等)一个接一个地附加来合并多个剪辑并创建一个视频。
有像“Video-Joiner”这样的应用可以做到这一点。
我想做的是并列 2 个视频。
我的应用创意 - SelfInterviewer 请不要窃取 :)
首先,我使用站在画面左侧的前置摄像头录制视频 1。然后视频 2 站在右边。在视频 1 中提出问题,在视频 2 中我回答。
当我合并时,应该看起来像是在接受我自己的采访。
我几乎可以肯定它在 ios 中不可行,只是想确认一下。
另外,如果不行,我会对任何服务器端解决方案感兴趣 - 上传两个视频并完成相同的操作。我认为adobe Premiere可以做到。不确定他们是否有任何公共 API。
欣赏任何想法。
谢谢。
【问题讨论】:
你找到解决方案了吗?? 嗨@Krishnan,你好吗...我需要您的帮助,说真的...我遇到了同样的问题...合并后我必须并排显示视频。 .. 两个视频都在显示,但没有像并排一样正确显示... 【参考方案1】:是的,可以合并 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...
【讨论】:
谢谢,我会试试的。不幸的是,我无法对答案投票,因为我是 SO 新手。 但是,addMutableTrackWithMediaType: preferredTracfirst: API 不存在。只有 API addMutableTrackWithMediaType:preferredTrackID: 存在。我尝试使用 API addMutableTrackWithMediaType:preferredTrackID 本身,我只得到导出视频中的第一个视频。 抱歉回复晚了。你应该使用一个 MutableComposition 区域而不是两个。 [secondTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, secondAsset.duration) ofTrack:[[secondAsset trackingWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:kCMTimeZero error:nil];我收到此警告,这是警告-“找不到实例方法'-setPreferredTransform:'(返回类型默认为'id')”-知道为什么会这样。 我只得到导出视频中的第一个视频,但持续时间是正确的。我的MutableComposition
按说明分配一次。请帮忙。【参考方案2】:
我在尝试做同样的事情时发现了这个链接,但对我来说它不是并排的,它的视频在另一个视频的顶部,你可以通过这个链接做同样的事情
Video Manipulation
【讨论】:
@Torongo 你确定,它可以工作,以防万一abdulazeem.wordpress.com/2012/04/02/… 嗨@Torongo ...我在本教程中需要您的帮助...虽然上面的链接是一个很棒的教程...但是我怎样才能并排显示视频,就像卡拉OK应用程序一样或者你可以像二重唱视频一样说...我将非常感谢您的指导...谢谢 嗨@Mr.G,你好吗...我在本教程中需要您的帮助...虽然上面的链接是一个很棒的教程...但是我怎样才能并排显示视频,就像卡拉 OK 应用程序一样,或者您可以说像二重唱视频一样...我将非常感谢您的指导...谢谢 @Mr.Ahtazaz 我在 4 年前做过这个,但我认为这并不难,我认为你需要调整视频视图框架 @Mr.G 如何在播放大视频之前重复播放一个视频?以上是关于iOS 视频编辑 - 是不是可以使用 iOS 4 AVFoundation 类将两个视频文件合并(并排而不是一个接一个)为一个?的主要内容,如果未能解决你的问题,请参考以下文章
IOS - 使用 Youtube API 检查 Youtube 视频是不是存在