我對 FFmpeg 有點陌生,但我已經了解了很多基礎知識。我試圖了解如何使用 Opus 編碼音訊。我對音訊、位元率、取樣率和赫茲的了解有點薄弱。
我的 MP4 輸入檔(音樂影片)使用 AAC 音訊進行編碼,並具有以下 FFprobe 音訊參數:
[sample_rate] => 44100
[channels] => 2
[channel_layout] => stereo
[bit_rate] => 127999
我使用以下 FFmpeg 命令將此 MP4 檔案轉換為 WEBM:
ffmpeg -i input.mp4 -map 0:s? -map 0:v -map 0:a? -vf scale=-2:720 -movflags +faststart -c:v libvpx-vp9 -crf 32 -b:v 1024k -c:a libopus output.webm
當我執行 shell 命令時,我收到以下警告:
[libopus @ 0x55ccad7dc440] No bit rate set. Defaulting to 96000 bps.
據我了解,Opus 應該預設啟用可變位元率(VBR),並且應該檢測並匹配輸入音訊位元率。然而,opus 似乎與原始的 127,999 bps 不匹配。
這是否意味著 Opus 正在降低音訊品質?輸出中的音樂聽起來確實不錯大部頭書,但我有聽力問題。根據我的閱讀,很多人都可以感受到比特率高達 256kbps 的音訊品質差異,而這些音樂影片是供觀眾觀看的,而不僅僅是我自己。音樂品質對於這些來說至關重要。
我也不想設定恆定的比特率-b:a 256k
,因為輸入可能沒有那麼高,這只會浪費磁碟空間來嘗試升級。我希望 opus 能夠-vbr
最大限度地提高音訊質量,至少與原始輸入質量一樣好!但如果 96k 與 Opus 一樣高-vbr
,這意味著如果輸入具有更高的保真比特率,我們就會損失很多音訊質量,對吧?我假設輸入檔的更高位元率相當於更高的音訊品質?
幫助我理解。您會在 Opus 的 FFmpeg 指令中使用哪些標誌來最大限度地提高音訊品質?
答案1
libopus 編碼器不支援基於品質的編碼。
預設位元率基於通道數。您必須設定一些手動比特率。它可以高達256k * # of channels
。 VBR 預設為啟用狀態,這表示並非所有音訊幀都將被限制為固定位元率。它將徘徊在目標位元率附近。