ffmpeg 結合 -af 和 -filter_complex 過濾器(使用左軌道創建單聲道軌道*和*標準化音訊)

ffmpeg 結合 -af 和 -filter_complex 過濾器(使用左軌道創建單聲道軌道*和*標準化音訊)

我有無損視訊擷取的錄影帶,我要將其轉換為 FFV1 和 FLAC。對於選定的幾盤磁帶,在此過程中,我還需要將音訊轉換為單聲道(只有左軌道存在,因為原始錄音是單聲道,但捕獲設備始終以立體聲錄製)我需要以均勻調整音量的方式標準化音訊(沒有像壓縮或其他任何會使聲音失真超出絕對必要的內容),因為攝影機非常安靜,並且無法調整捕獲設備的音訊等級。

到目前為止,我已經確定我需要這兩個過濾器:

刪除右聲道以建立僅包含左軌道的單聲道錄音:

-filter_complex "[0:a]channelsplit=channel_layout=stereo:channels=FL[left]" -map "[left]"

標準化音訊:

-af loudnorm=I=-16:LRA=11:TP=-1.5

但是,我無法確定如何組合這兩個過濾器。我試過了:

ffmpeg -i "input.avi" -filter_complex "[0:a]channelsplit=channel_layout=stereo:channels=FL[left]" -map "[left]", loudnorm=I=-16:LRA=11:TP=-1.5" -c:v ffv1 -level 3 -slicecrc 1 -c:a flac -compression_level 12 "output.mkv"

產生:

loudnorm=I=-16:LRA=11:TP=-1.5 -c:v ffv1 -level 3 -slicecrc 1 -c:a flac -compression_level 12 output.mkv: Invalid argument

如何組合這兩個過濾器?

答案1

當連結簡單的過濾器(單一輸入和輸出)時,我們可以簡單地,在連結的過濾器之間使用逗號()。

逗號語法意味著第一個過濾器的輸出是下一個過濾器的輸入:"[0:a]channelsplit=channel_layout=stereo:channels=FL,loudnorm=I=-16:LRA=11:TP=-1.5[left]"

我們還必須使用 來映射視訊-map 0:v


完整命令列:

ffmpeg -i input.avi -filter_complex "[0:a]channelsplit=channel_layout=stereo:channels=FL,loudnorm=I=-16:LRA=11:TP=-1.5[left]" -map "[left]" -map 0:v -c:v ffv1 -coder 1 -context 1 -g 1 -slices 24 -slicecrc 1 -c:a flac -compression_level 12 output.mkv

注意:我的答案是指語法的正確性,而不是音訊濾波器和參數的正確性(我對音訊的了解相當有限)。

相關內容