我有無損視訊擷取的錄影帶,我要將其轉換為 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
注意:我的答案是指語法的正確性,而不是音訊濾波器和參數的正確性(我對音訊的了解相當有限)。