iphone - AVMutableComposition - 是否可能有 2 个并行音轨?

标签 iphone video audio avfoundation

我成功地将一个视频和一个音轨混合在一起,并将其导出到一个新的 .m4v 文件。

我现在的问题是,我想将相同的视频文件和 2 个音频文件混合在一起,它们是两个 AVAssetTrack 并且具有相同的时间线。就像您在音频编辑器中所做的那样,您可以对两个或多个声音文件进行混音,然后得到一个合并文件。

这可能吗?如果是,我该如何进行?

目前我只听到一个声音文件,而不是两个。

顺便说一句:我的目标是“简单地”在已经有声音的视频中包含一个额外的声音文件,并将其与新的声音文件混合在一起。但似乎 AVAssetTrack 只允许音频或视频,因此我从原始视频中制作了一个新的音频 AVAssetTrack。也许这是错误的...

提前致谢!

最佳答案

好吧,如果没有看到您的代码,就很难为您提供帮助。也许这段代码可以帮助:

    AVMutableComposition* composition = [AVMutableComposition composition];

    AVURLAsset* videoAsset = [[AVURLAsset alloc]initWithURL:videoURL options:nil];
    AVURLAsset* audioAsset1 = [[AVURLAsset alloc]initWithURL:audioURL1 options:nil];
    AVURLAsset* audioAsset2 = [[AVURLAsset alloc]initWithURL:audioURL1 options:nil];

    AVMutableCompositionTrack *compositionVideoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];

        NSError* error = NULL;

        [compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero,videoAsset.duration) 
                                       ofTrack:[[videoAsset tracksWithMediaType:AVMediaTypeVideo]objectAtIndex:0] 
                                        atTime:kCMTimeZero  
 AVMutableCompositionTrack *compositionAudioTrack1 = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];

        [compositionAudioTrack1 insertTimeRange:CMTimeRangeMake(kCMTimeZero,audioAsset1.duration) 
                                       ofTrack:[[audioAsset1 tracksWithMediaType:AVMediaTypeAudio]objectAtIndex:0] 
                                        atTime:kCMTimeZero
                                         error:&error];

 AVMutableCompositionTrack *compositionAudioTrack2 = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];

        [compositionAudioTrack2 insertTimeRange:CMTimeRangeMake(kCMTimeZero,audioAsset2.duration) 
                                       ofTrack:[[audioAsset2 tracksWithMediaType:AVMediaTypeAudio]objectAtIndex:0] 
                                        atTime:kCMTimeZero
                                         error:&error];

现在只需使用 AVExportSession 导出此合成。并且不要忘记释放 Assets 。

关于iphone - AVMutableComposition - 是否可能有 2 个并行音轨?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4072986/

相关文章:

ios - 录音获取文件大小

flash - 混合声音数据而无需在actionscript 3.0中播放

iphone - 如果表为空,cellForRowAtIndexPath 应该返回什么?

objective-c - 在 Objective C 中将公历日期转换为儒略日计数

android - 跨Android、IOS的视频共享

javascript - HTML5视频时长

video - 如何使用 Accord.FFMPEG.Video 将 H.264 流保存到 mp4 容器

Java - 我的游戏的背景歌曲(如何添加它)

iphone, 图像处理

iphone - 为什么 UIBezierPath 比 Core Graphics 路径快?