标准化单个视频中不同的音频级别

标准化单个视频中不同的音频级别

我有一个处理/编码视频的脚本。有些视频的音频级别不同(例如,两个视频合并在一起,一个音频响亮,另一个音频安静)。我想通过降低响亮音频并增加安静音频的方式标准化音频,使两者几乎相等。虽然我使用 HandbrakeCLI 进行编码,但任何其他可以从 Linux 终端使用的解决方案(如 ffmpeg)都可以使用。

我做了一些研发工作,但我对音频的了解非常有限,所以我无法让它发挥作用。我一直在研究的一些解决方案是音频规范化和 Replaygain(只是一个标签,但我需要在编码时直接更改视频,而不仅仅是添加一个标签)。

我有一个示例输入和一个示例输出。示例输出是通过手动选择响亮的音频并降低其值以及手动选择安静的音频并增加其值来创建的。

输入: 原始音频

输出: 规格化音频

正如您在原始音频中看到的,除了最后一小部分声音太大之外,整个音频都很安静,并且在输出中两者几乎相等。但问题是我想自动执行此操作。

编辑:

的结果ffmpeg -i in.mp4 -af "dynaudnorm" -vcodec copy out.mp4dynaudnorm 之后

答案1

还有级别效果和伴随vlevel-bin程序。它使用前瞻缓冲器来查看即将出现的声音是否比设定的阈值更安静或更响亮,并开始调整音量以适应即将发生的事情。

优点:没有需要配置。仅给出一个音频文件,它将把它们设置为一致的级别,因此如果每个视频都使用 vlevel 进行处理,它们将彼此标准化。

缺点:它不是内置的 ffmpeg 效果;您必须从视频中提取声音,将其转换为适合 vlevel-bin 的正确比特率和格式,然后将声音重新编码回视频。它还会(必然)压缩音频的动态范围。不会达到响度之争的极端程度,但峰值和谷值会明显被压缩。

我曾经在一些电视节目中使用过这个功能,这些节目依赖于安静对话方式之间不断的爆炸声,并且它使得人们可以在没有音量控制的情况下观看整个剧集。

相关内容