gpt4 book ai didi

FFmpeg amix + 音量过滤器创建饱和输出?

转载 作者:行者123 更新时间:2023-12-04 14:53:51 25 4
gpt4 key购买 nike

First of all, this is a question asked more out of curiosity than desperate need of fixing. I seem to have "fixed" it by upgrading from FFmpeg 3.4.6 to FFmpeg 4.3.1. Or so I think, at least the result is much better.

我正在尝试使用 FFmpeg amix 过滤器混合 2 个音频文件(相同长度,所以这里没有音阶变化):

  • 开始时声音很大,然后直到结束时几乎安静的音乐,
  • 音频以静音开始(基本上只要音乐响亮),然后是一个人以“平均”音量说话

现在,我了解到过滤器会将每个输入音量除以 1/nb_active_inputs(在我的例子中是 2),所以我在输出上添加了一个音量过滤器以将其音量乘以 2 . 我的命令基本上是这样的:

ffmpeg -i music.mp3 -i voice.mp3 -filter_complex amix=inputs=2:duration=first[mix];[mix]volume=2[out] -map [out] output.mp3

在那个复杂的过滤器之后,我的最终输出完全失真了。声音整体听起来非常响亮和饱和。

我不是音频方面的专家,也不是 FFmpeg 方面的专家,所以我想我遗漏了什么。我试图了解发生了什么以及为什么我会得到这个结果,因为我在这两种情况下都使用了相同的输入、过滤器和过滤器选项。只有 FFmpeg 版本不同。

我已尝试阅读 af_amix.c 的代码以了解这两个版本,但似乎无法找到任何关于该差异的解释。我已经看到 4.3.1 有一个用于输入的 weights 选项,但据我了解,如果未指定,它们默认为 1.0。任何线索将不胜感激。

最佳答案

你必须设置声音再现的输入和输出方法(立体声,单声道)的数量,并像这样一一设置音量:

ffmpeg -i $firstAudio -i $secondAudio -filter_complex [0:a]volume=$firstAudioVolume[A];[1:a]volume=$secondAudioVolume[B];[A][B]amerge=inputs=2,pan=stereo|c0<c0+c2|c1<c1+c3 $outputAudio

和这个使用示例:

ffmpeg -i music.mp3 -i voice.mp3  -filter_complex '[0:a]volume=3.0[A];[1:a]volume=1.0[B];[A][B]amerge=inputs=2,pan=stereo|c0<c0+c2|c1<c1+c3'   output.mp3

关于FFmpeg amix + 音量过滤器创建饱和输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68532529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com