audio - 将 avi 文件中的音频标准化

标签 audio ffmpeg normalization

我有一个具有不同音频级别的 avi 文件。有没有办法在需要的地方使用 ffmpeg 适本地减少和增加我的文件的音频?

最佳答案

在 ffmpeg 中,您可以使用音量过滤器来更改轨道的音量。确保下载该程序的最新版本。

找出要申请的 yield

首先,您需要分析音频流的最大音量,看看标准化是否会得到返回:

ffmpeg -i video.avi -af "volumedetect" -f null /dev/null

在 Windows 上将/dev/null 替换为 NUL。这将输出如下内容:
[Parsed_volumedetect_0 @ 0x7f8ba1c121a0] mean_volume: -16.0 dB
[Parsed_volumedetect_0 @ 0x7f8ba1c121a0] max_volume: -5.0 dB
[Parsed_volumedetect_0 @ 0x7f8ba1c121a0] histogram_0db: 87861

如您所见,我们的最大音量为 -5.0 dB,因此我们可以应用 5 dB 增益。如果您获得 0 dB 的值,则无需对音频进行归一化。

应用音量过滤器:

现在我们将音量过滤器应用于音频文件。请注意,应用过滤器意味着我们必须重新编码音频流。当然,您想要的音频编解码器取决于原始格式。这里有些例子:

纯音频文件:只需使用您需要的任何编码器对文件进行编码:
ffmpeg -i input.wav -af "volume=5dB" output.mp3

当然,您的选择非常广泛。

AVI 格式:通常在 AVI 容器中包含带有视频的 MP3 音频:
ffmpeg -i video.avi -af "volume=5dB" -c:v copy -c:a libmp3lame -q:a 2 output.avi

在这里,我们选择了质量级别 2。值范围从 0 到 9,越低意味着越好。有关设置质量的更多信息,请查看 MP3 VBR 指南。例如,您还可以使用 -b:a 192k 设置固定比特率。

MP4 格式:使用 MP4 容器,您通常会找到 AAC 音频。我们可以使用 ffmpeg 内置的 AAC 编码器。
ffmpeg -i video.mp4 -af "volume=5dB" -c:v copy -c:a aac -strict experimental -b:a 192k output.mp4

在这里您还可以使用其他 AAC 编码器。其中一些也支持 VBR。有关一些提示,请参阅此答案和 AAC 编码指南。

在上面的示例中,将使用 -c:v copy 复制视频流。如果您的输入文件中有字幕或多个视频流,请在输出文件名前使用选项 -map 0。

作者信息是:Jon SkarpeteigSuperUser

关于audio - 将 avi 文件中的音频标准化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24145702/

相关文章:

python - 如何在 python 中将文本转换为语音(mp3 文件)?

ffmpeg - 如何获取使用 ffmpeg 更改帧速率时丢弃的帧数

mysql - SQL 查询和结果

mysql - 合并或分离表格

python - 使用 pydub 为 Google Speech 导出音频

java - 如何读取音频文件

objective-c - 从 sqlite 数据库 Objective-C 播放音频文件

android - 为什么编译器不能从 sp<android::MetaData> 隐式转换为 bool?

c++ - 如何分析文件并检测文件是否为 H.264 视频格式?

python - 谁能解释 tf.random_normal 和 tf.truncated_normal 形状参数?