2014-06-10 71 views
4

我有一個具有不同音頻級別的avi文件。有沒有一種方法可以根據需要使用ffmpeg來適當減少和增加文件的音頻?在avi文件中規範化音頻

+1

它聽起來不像你想要規範化......它聽起來像你想要一個壓縮器。 – Brad

+3

在http://avp.stackexchange.com上提問這個問題 – Brad

+0

@Brad好的,布拉德謝謝你!我不知道這件事! – zinon

回答

14

在ffmpeg中,您可以使用音量過濾器來更改音軌的音量。確保你下載了最新版本的程序。

瞭解申請

首先,你需要分析音頻流的最大音量,看是否正火甚至會還清增益:

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

替代/ dev /對空與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格式:通常有與視頻MP3音頻附帶在AVI容器:

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副本複製視頻流。如果輸入文件中有字幕或多個視頻流,請在輸出文件名之前使用選項-map 0。

作者的信息是:Jon SkarpeteigSuperUser

+2

使用'-vn'運行'ffmpeg -i video.avi -af「volumedetect」-f null/dev/null'要快得多,如下所示:'ffmpeg -i video.avi -vn -af「volumedetect」 - f null/dev/null',因爲'-vn'將會完全跳過視頻流並且只能處理音頻。 – InverseTelecine

0

你可以用我ffmpeg-normalize腳本這一點。

首先,安裝最新版本的ffmpeg。然後,通過pip install ffmpeg_normalize安裝,然後在AVI文件運行它:

ffmpeg-normalize input.avi -o output.mkv -c:a aac -b:a 192k 

這裏,我們選擇重新編碼爲192 kbit/s的支持AAC音頻,並通過將輸出複製視頻流。這將執行EBU R128 normalization,但簡單的峯值/ RMS歸一化也是可能的。