是否可以在iOS中为视频文件添加额外的音轨?

时间:2014-02-09 04:07:50

标签: ios cocoa-touch video avfoundation

我正在创建一个应用程序,我希望能够录制视频(和声音),然后在录制音频时播放它。在此之后,我将留下一个视频文件(包含音频)和一个单独的音频文件(完全不同于视频的音轨)。

是否可以使用AVMutableCompositionTrack撰写包含一个视频曲目和两个单独音轨的新视频文件,然后使用AVAssetExportSession将其导出为一个将这些音轨分开的独立视频文件?我希望用此实现的是用户以后可以观看该视频文件并选择是否应播放一个或两个音轨。我知道有可能使用多个AVAssets同步来自不同音频/视频文件的播放,但我想知道我是否可以创建包含可分离音轨的一个文件,然后再创建将每个音频轨道定义为AVAsset以控制同步。

我知道一些视频格式/编解码器等能够改变音频语言,即使它只有一个文件。我也知道AVFoundation非常支持处理曲目。我不知道的是,如果它们彼此兼容:AVFoundation可以在一个文件中处理单独的轨道吗?是否有任何编解码器支持iOS的这种跟踪(例如.mp4,.mov,...)?

我想如果标准视频播放器试图观看这个产生的电影文件(可能只播放带有第一个音轨的视频)会出现“问题”,但我想我已经可以假设有两个(或更多)音轨,可以做到吗? 这有可能吗?

1 个答案:

答案 0 :(得分:0)

是的,可以使用AVAssetWriterInputGroup创建具有多个音轨的视频文件。 reference说:

使用此类将与多个AVAssetWriterInput实例相对应的轨道彼此互斥,以进行回放或其他处理。 例如,如果您要使用不同的口语语言创建具有多个音轨的资产,并且一次只能播放一个音轨,则将与这些音轨相对应的输入分组为{{ 1}},然后使用AVAssetWriterInputGroup方法AVAssetWriter将组添加到AVAssetWriter实例。