FFmpeg 是一款功能强大的音频和视频文件处理工具。您可能想用 FFmpeg 执行的常见任务之一是调整音频流或视频文件的音量。用 FFmpeg 来做这件事非常简单,它还包括处理音频文件的音频剪切、动态范围压缩(DRC)、标准化等工具。
在本文中,我们将解释音量的概念、如何使用 FFmpeg 调整音量以及在调整过程中可能遇到的一些问题。
什么是音量?让我们先来了解一下!
音量是衡量声音大小的标准。
它通常用分贝 (dB) 表示,分贝是对数单位,表示声压级与参考声压级的比值。
- 人类听力的参考电平为 0 dB,相当于听力阈值。
- 比另一种声音大 10 dB 的声音,其声压高出 10 倍。
- 声音大 20 分贝,声压就会增加 100 倍。
音频流或视频文件的音量取决于两个因素:
- 音频样本的振幅
- 播放设备的增益。
音频采样的振幅是表示特定时间点声波大小的数值。重放设备的增益是音频采样的振幅在发送到扬声器或耳机之前所乘以的系数。用户可以通过音量旋钮或滑块控制增益,这就是音频播放器中的旋钮。
接下来,学习一下如何使用 FFmpeg 调整音量。
FFmpeg 如何处理音频音量?
FFmpeg 为调整音频音量提供了多种过滤器和选项。过滤器是以某种方式修改音频或视频数据的操作。
FFmpeg 有多种过滤器可用于调整音量,如 volume
、loudnorm
、dynaudnorm
和 compand
。最常用的音量调节过滤器是 volume
过滤器。该过滤器可以按指定系数增大或减小音频电平,或将其设置为绝对值。
要在输入文件中应用过滤器,需要使用 -filter:a
或 -af
选项来处理音频流,还需要用引号指定过滤器的名称和参数。
使用 FFmpeg 调整音量 – 说明
让我们深入了解使用 FFmpeg 调整音量的实际操作。下面,我们将探讨使用音量过滤器的基本语法,并对每个参数进行解释。
基本语法
使用音量过滤器调整音量的基本语法如下:
ffmpeg -i input.mp4 -af "volume=<volume_level>" output.mp4
input.mp4
:输入的视频文件。-af
:代表音频过滤器。此选项告诉 FFmpeg 应用音频过滤器。"volume=<volume_level>"
:您可以在此处指定音量调整。<volume_level>
可以是正数或负数,其中正值增大音量,负值减小音量。output.mp4
:输出视频文件。
使用 FFmpeg 调节音量的示例
使用 FFmpeg 增加音频音量
要将音轨的音量增加 3 dB,可以使用以下命令:
ffmpeg -i input.mp4 -af "volume=3dB" output.mp4
使用 FFmpeg 降低音频音量
要将音轨的音量降低 6 dB,可以使用以下命令:
ffmpeg -i input.mp4 -af "volume=-6dB" output.mp4
高级音量调节
除了基本的音量调整之外,FFmpeg 还提供更高级的选项来微调过程。
动态范围压缩 (DRC)
动态范围压缩 (DRC) 是一种用于减少音频中最响亮和最柔和部分之间差异的技术。这在音频电平变化很大的情况下非常有用。FFmpeg 提供了acompressor
过滤器来实现这一点。这是一个例子:
ffmpeg -i input.mp4 -af "acompressor=threshold=0.05:ratio=10:attack=200:release=1000" output.mp4
threshold
:指定压缩开始的级别。ratio
:设置压缩率。attack
:定义压缩器响应音频电平变化的速度。release
:确定一旦音频电平低于阈值压缩器停止压缩的速度。
使用 FFmpeg 的 Loudnorm Filter 进行标准化
标准化是将音频音量调整到特定目标级别的过程。FFmpeg 的loudnorm
过滤器可以用于此目的:
ffmpeg -i input.mp4 -af "loudnorm=I=-16:LRA=11" output.mp4
I
:以 LUFS(满量程响度单位)为单位指定目标综合响度级别。LRA
:设置响度范围调整。
常见问题及解决方案
使用 FFmpeg 调节音量时,可能会遇到一些常见问题,以下是一些问题及其解决方案:
避免使用 dynaudnorm
裁剪
当音频音量增加到超过最大允许幅度的水平时,就会发生削波,从而导致失真。为了避免削波,请使用dynaudnorm
过滤器动态调整音频电平而不超过最大幅度:
ffmpeg -i input.mp4 -af "dynaudnorm=p=1" output.mp4
p
:指定感知响度。值越高,标准化程度越强。
使用动态过滤器避免音频质量损失
过多的音量调整可能会导致音频质量下降。为了缓解这种情况,请考虑使用较低比率的acompressor
过滤器或使用dynamics
过滤器进行更受控制的调整:
ffmpeg -i input.mp4 -af "dynamics=gate=0.1" output.mp4
gate
:设置音频级别,低于该级别的音频将被视为静音。
批量处理
如果需要同时调整多个文件的音量,可以使用简单的 Bash 脚本来自动处理。下面是一个处理目录中所有 .mp4 文件的脚本示例:
#!/bin/bash for file in *.mp4; do ffmpeg -i "$file" -af "volume=3dB" "output_$file" done
该脚本将对当前目录下的所有 .mp4 文件进行 3 分贝音量增大,并以 “output_”为前缀保存处理后的文件。
结论
调整音频音量是视频工程和内容创建中的一项基本任务。FFmpeg 提供了一组强大的工具和过滤器,例如volume
、acompressor
、 和loudnorm
,帮助您实现精确的音量调整。
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/43309.html