ffmpeg は -af と -filter_complex フィルターの両方を組み合わせます (左のトラックを使用してモノラルのみのトラックを作成し、オーディオを正規化します)

ffmpeg は -af と -filter_complex フィルターの両方を組み合わせます (左のトラックを使用してモノラルのみのトラックを作成し、オーディオを正規化します)

ビデオテープのロスレス ビデオ キャプチャがあり、これを FFV1 と FLAC に変換する予定です。一部のテープについては、その過程でオーディオをモノラルに変換する必要があります (元の録音はモノラルであるため、左トラックのみ存在しますが、キャプチャ デバイスは常にステレオで録音します)そしてビデオカメラは非常に静かで、キャプチャ デバイスのオーディオ レベルを調整する方法がなかったため、音量を均一に調整する方法でオーディオを正規化する必要があります (圧縮など、絶対に必要な範囲を超えてサウンドを歪ませる方法は使用しないでください)。

これまでのところ、次の 2 つのフィルターが必要であると判断しました。

右チャンネルを削除して、左トラックのみのモノラル録音を作成します。

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

オーディオを正規化する:

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

しかし、これら 2 つのフィルターをどのように組み合わせればよいかわかりません。試したことは次のとおりです。

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

これら 2 つのフィルターを組み合わせるにはどうすればよいでしょうか?

答え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

注: 私の回答は構文の正確さに関するものであり、オーディオ フィルターとパラメーターの正確さに関するものではありません (オーディオに関する私の知識は非常に限られています)。

関連情報