如果我使用 AVAssetExportPresetPassthrough,AVAssetExportSession AudioMix 将被忽略
AVAssetExportSession AudioMix ignored if I'm using AVAssetExportPresetPassthrough
我正在尝试 仅 通过 AVAssetExportSession
AudioMix
属性.
修改视频音频
除了声音修改之外,我没有修剪或做任何其他事情。因此,我尝试使用 AVAssetExportPresetPassthrough
并应用相关的 AudioMix
,AVAssetExportSession
有效,但声音保持不变。如果我将预设更改为 AVAssetExportPresetHighestQuality
,它会慢得多,但音频更改会起作用。
代码:
let exportSession = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetPassthrough)
exportSession.audioMix = audioMix // ignored
let exportSession = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetHighestQuality)
exportSession.audioMix = audioMix // works
知道为什么吗?提前致谢!
通过修改audioMix
,你不是路过。并且没有单程方式说“通过视频轨道和 decode/apply audioMix
然后重新编码为 AVAssetExportPresetHighestQuality
”,因此您可以尝试两步法:
使用 AVAssetExportPresetHighestQuality
:
自行导出音轨 [创建仅包含该音轨的 AVMutableComposition
let exportSession = AVAssetExportSession(asset: audioOnlyMutableComposition, presetName: AVAssetExportPresetHighestQuality)
exportSession.audioMix = audioMix
然后创建一个包含原始视频轨道和新创建的混合音轨的新 AVMutableComposition
并将合成通过 AVAssetExportPresetPassthrough
AVAssetExportSession
.
我正在尝试 仅 通过 AVAssetExportSession
AudioMix
属性.
除了声音修改之外,我没有修剪或做任何其他事情。因此,我尝试使用 AVAssetExportPresetPassthrough
并应用相关的 AudioMix
,AVAssetExportSession
有效,但声音保持不变。如果我将预设更改为 AVAssetExportPresetHighestQuality
,它会慢得多,但音频更改会起作用。
代码:
let exportSession = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetPassthrough)
exportSession.audioMix = audioMix // ignored
let exportSession = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetHighestQuality)
exportSession.audioMix = audioMix // works
知道为什么吗?提前致谢!
通过修改audioMix
,你不是路过。并且没有单程方式说“通过视频轨道和 decode/apply audioMix
然后重新编码为 AVAssetExportPresetHighestQuality
”,因此您可以尝试两步法:
使用 AVAssetExportPresetHighestQuality
:
AVMutableComposition
let exportSession = AVAssetExportSession(asset: audioOnlyMutableComposition, presetName: AVAssetExportPresetHighestQuality)
exportSession.audioMix = audioMix
然后创建一个包含原始视频轨道和新创建的混合音轨的新 AVMutableComposition
并将合成通过 AVAssetExportPresetPassthrough
AVAssetExportSession
.