我有一个具有不同音频级别的avi文件。有没有办法使用ffmpeg减少和适当增加我的文件的音频?
答案 0 :(得分:16)
在ffmpeg中,您可以使用音量过滤器来更改音轨的音量。确保下载该程序的最新版本。
找出要应用的收益
首先,您需要分析最大音量的音频流,看看规范化是否会得到回报:
ffmpeg -i video.avi -af "volumedetect" -f null /dev/null
在Windows上用NUL替换/ dev / null。这将输出如下内容:
[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设置固定比特率:例如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 Skarpeteig
中的SuperUser答案 1 :(得分:0)
您可以使用我的ffmpeg-normalize
脚本。
首先,安装最新版本的ffmpeg。然后,通过ffmpeg-normalize input.avi -o output.mkv -c:a aac -b:a 192k
安装,然后在AVI文件上运行:
class UserForm(forms.ModelForm):
password = forms.CharField(
label='Password',
max_length=32,
required=True,
widget=forms.PasswordInput,
)
password2 = forms.CharField(
label='Confirm',
max_length=32,
required=True,
widget=forms.PasswordInput,
help_text="Make sure they match!",
)
class Meta:
model = User
fields = ('username', 'email', 'first_name', 'last_name', 'password', 'password2')
class StudentForm(forms.ModelForm):
class Meta:
model = Student
fields = ('phone', 'student_ID', 'photo')
在这里,我们选择以192 kBit / s的AAC重新编码音频,并将视频流复制到输出。这将执行EBU R128 normalization,但也可以进行简单的峰值/ RMS归一化。