如何在IOS中使视频的音轨淡入淡出

时间:2013-10-09 08:06:37

标签: ios audio video avfoundation

我正在使用AVMutableComposition& AVAssetExportSession和用于将音乐与视频合并的内容(输出为mp4)

整个过程很好,但当我尝试使用音频混合添加淡化效果时,导出会失败

这是用于添加淡入淡出效果的代码片段

AVMutableAudioMix* exportAudioMix = nil;
if(CMTimeCompare(videoAsset.duration, CMTimeMakeWithSeconds(2, 25)) == 1) {
    exportAudioMix = [AVMutableAudioMix audioMix];
    AVMutableAudioMixInputParameters *mixParam 
        = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:compositionAudioTrack];
    for(int i = 0; i <= 5; i++) {
        CMTime t = CMTimeMake(i * 5 , 25);
        [mixParam setVolume:0.2 * i atTime:t];
        [mixParam setVolume:0.2 * (5 - i) atTime:CMTimeAdd(videoAsset.duration, t)];
    }
    exportAudioMix.inputParameters = @[mixParam];
}
_assetExport.audioMix = exportAudioMix;//export won't fail if I remove this line

我尝试使用setVolumeRamp ...但它不起作用(无法导出)所以我改为setVolume,其行为相同。所以我认为问题不应该存在。

1 个答案:

答案 0 :(得分:0)

好吧,经过一番努力,我想出了问题。我的答案是在这里,任何其他人遇到这个错误(虽然似乎这个问题只是由一个愚蠢的错误引起)。

我如何设置音频混音没有问题。问题是我使用 passthrough 预设初始化了导出会话,这将使输入按原样,如果有音频混合修改音轨,则会失败。

我将预设更改为 AVAssetExportPresetHighestQuality ,一切运作良好。