AVAssetExportSession AudioMix 忽略,如果我使用的是 AVAssetExportPresetPassthrough



我试图通过AVAssetExportSessionAudioMix属性修改视频音频。

除了声音修改之外,我没有修剪或做任何其他事情。因此,我尝试使用AVAssetExportPresetPassthrough并应用相关AudioMixAVAssetExportSession有效,但声音保持不变。如果我将预设更改为AVAssetExportPresetHighestQuality它会慢得多,但音频更改有效。

法典:

let exportSession = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetPassthrough)
exportSession.audioMix = audioMix // ignored
let exportSession = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetHighestQuality)
exportSession.audioMix = audioMix // works

知道为什么吗?提前感谢!

通过修改audioMix,你不是通过。而且没有单程方法可以说"通过视频轨道并解码/应用audioMix然后按AVAssetExportPresetHighestQuality重新编码",因此您可以尝试两步方法:

使用AVAssetExportPresetHighestQuality导出音轨本身[创建仅包含该音轨的AVMutableComposition]:

let exportSession = AVAssetExportSession(asset: audioOnlyMutableComposition, presetName: AVAssetExportPresetHighestQuality)
exportSession.audioMix = audioMix

然后创建一个包含原始视频轨道和新创建的混合音轨的新AVMutableComposition,并将乐曲传递到AVAssetExportPresetPassthroughAVAssetExportSession

相关内容

  • 没有找到相关文章

最新更新