ffmpeg 统一音量/调整音量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ffmpeg 统一音量/调整音量相关的知识,希望对你有一定的参考价值。

参考技术A ffmpeg的loudnorm音频过滤器,可以把音频的音量统一到某个数值,默认是-24,而YouTube用的是 -14 :

ffmpeg -i <input.mp3> -af loudnorm=i=-14 <output.mp3>

如果想把音频转成单声道,用: -ac 1 ,这个1就是1个声道。
如果想调整mp3的品质,用: -q:a 9 ,数字0~9,9代表质量最低,0代表最高。
还可以直接修改比特率,用: -ab 64K ,人声的话32K也比较清晰,比特率越高越清晰。

ffmpeg -i <input.mp3> -af loudnorm=i=-14 -ab 32K -ac 1 <output.mp3>

基于ffmpeg开发的多音频文件音量均衡程序

前言

audio_balance

✨ 基于ffmpeg开发的多音频文件音量均衡程序 ✨

项目地址

GitHub:https://github.com/Ikaros-521/audio_balance
gitee:https://gitee.com/ikaros-521/audio_balance

使用说明

Python:3.9+
程序依赖 ffmpeg实现。请先安装ffmpeg并配置到环境变量后使用。(官方仓库:https://github.com/FFmpeg/FFmpeg
如果你本地装了格式工厂,可以直接把格式工厂安装路径配置到环境变量path中(格式工厂自带ffmpeg)
注意:使用时请清空 out文件夹(即输出音频的文件夹)

使用参考

1、获取期待音量分贝

使用 get_mean_volume.py 获取音频文件平均音量。此处建议传入你认为合适音量的音频文件获取信息,以做为基准。

# 打开cmd,在工程路径下运行以下命令,其中 data/origin.mp3 为需要解析的音频文件
python get_mean_volume.py data/origin.mp3

命令执行返回关键内容截取

[Parsed_volumedetect_0 @ 000001d73eb72840] n_samples: 5329246
[Parsed_volumedetect_0 @ 000001d73eb72840] mean_volume: -20.7 dB
[Parsed_volumedetect_0 @ 000001d73eb72840] max_volume: -2.0 dB
[Parsed_volumedetect_0 @ 000001d73eb72840] histogram_2db: 57
[Parsed_volumedetect_0 @ 000001d73eb72840] histogram_3db: 390
[Parsed_volumedetect_0 @ 000001d73eb72840] histogram_4db: 1226
[Parsed_volumedetect_0 @ 000001d73eb72840] histogram_5db: 3330
[Parsed_volumedetect_0 @ 000001d73eb72840] histogram_6db: 6770
id3v2_parse

data/origin.mp3 平均音量:-20.7dB

2、执行多音频均衡

在步骤1中我们看到 data\\origin.mp3的mean_volume(平均音量)为 -20.7dB,我们期望音量为 -10dB。

# 打开cmd,在工程路径下运行以下命令
# 请依次传入 目标平均音量(默认-10dB,做为基准,实际不会调至此) 待处理音频路径(默认data\\) 输出音频路径(默认out\\)
python audio_balance.py -10 data\\ out\\

运行完毕后输出内容

待处理音频路径:data\\
输出音频路径:out\\
目标平均音量:-10.0dB
待处理音频文件总数:4
out\\data\\1 创建成功
data\\1\\origin.mp3 平均音量:-20.7dB
ffmpeg -i data\\1\\origin.mp3 -filter:a "volume=10.7dB" out\\data\\1\\origin.mp3
转换完毕,输出至:out\\data\\1\\origin.mp3
data\\high.mp3 平均音量:-11.1dB
ffmpeg -i data\\high.mp3 -filter:a "volume=1.1dB" out\\data\\high.mp3
转换完毕,输出至:out\\data\\high.mp3
data\\low.mp3 平均音量:-30.7dB
ffmpeg -i data\\low.mp3 -filter:a "volume=20.7dB" out\\data\\low.mp3
转换完毕,输出至:out\\data\\low.mp3
data\\origin.mp3 平均音量:-20.7dB
ffmpeg -i data\\origin.mp3 -filter:a "volume=10.7dB" out\\data\\origin.mp3
转换完毕,输出至:out\\data\\origin.mp3
运行完毕
请按任意键继续. . .`

然后可以使用 get_mean_volume.py 再获取下输出文件的平均音量查看情况

3、批量查看文件夹下音频信息(平均音量等)

在步骤1中我们只看了一个,如果你觉得看起来有点慢,基准文件需要批量参考,可以使用这个命令

# 打开cmd,在工程路径下运行以下命令
# 请传入 需要获取平均音量的音频文件夹路径 是否只显示平均音量(是1 否0)
python get_mean_volume_plus.py data\\ 1

输出内容

文件夹路径:data\\
音频文件总数:4
data\\1\\origin.mp3 平均音量:-20.7dB
data\\high.mp3 平均音量:-11.1dB
data\\low.mp3 平均音量:-30.7dB
data\\origin.mp3 平均音量:-20.7dB

参考文档

思路参考:https://wenku.baidu.com/view/ac883e43986648d7c1c708a1284ac850ad02042e.html?wkts=1668941587940&bdQuery=python%E8%8E%B7%E5%8F%96%E9%9F%B3%E9%A2%91%E9%9F%B3%E9%87%8F%E5%A4%A7%E5%B0%8F
ffmpeg参考:https://blog.csdn.net/ternence_hsu/article/details/91407681
遍历文件参考:https://blog.csdn.net/weixin_41521681/article/details/92768157

以上是关于ffmpeg 统一音量/调整音量的主要内容,如果未能解决你的问题,请参考以下文章

使用 FFMPEG 仅更改其中一个音频通道的音量

如何在FL Studio中对整首歌曲音量进行调整

FFmpeg:如何在音频文件中间降低几秒钟的音量? [复制]

通过移动设备音量调高按钮调整 chromecast 电视音量

如何使用 ffmpeg 增加 mp3 文件间隔的音量?

UISlider 跟随音量,不工作