FFmpeg - フィルタチェーンとマッピング出力

FFmpeg - フィルタチェーンとマッピング出力

FFmpeg では、フィルター チェーンの途中から出力をマップすることは可能ですか?

たとえば、このコマンドでは次のようになります。

ffmpeg -f lavfi -i smptehdbars=rate=25:size=1920x1080 -filter_complex "[0:v]drawtext=text=text1:x=100/2:y=100:fontsize=50[txt1];[txt1]drawtext=text=text2:x=200/2:y=200:fontsize=50[txt2];[txt2]drawtext=text=text3:x=300/2:y=300:fontsize=50[txt3];[txt3]drawtext=text=text4:x=400/2:y=400:fontsize=50[txt4]" -map "[txt4]" -t 10 -y ~/Desktop/mapping.mp4

これは機能します: -map "[txt4]"。-map "[txt3]" (または txt2、または txt1) しようとすると、"

ラベル 'txt3' の出力は、定義されたフィルタ グラフに存在しないか、すでに他の場所で使用されています。"

完全なコマンドを呼び出し、フィルター チェーン ( -map [$val]) の異なる部分を使用して、異なるファイルを出力したいと思います。

ありがとう

答え1

それは可能ですが、スプリット「中間フィルター」のフィルター。

「中間フィルター」が他のフィルターへの入力として使用されると、そのフィルターによって「消費」され、後で使用することはできません。


以下は、1 つのコマンドですべての「中間フィルター」からビデオ ファイルを作成する例です。

ffmpeg -y -f lavfi -i smptehdbars=rate=25:size=1920x1080 -filter_complex "[0:v]drawtext=text=text1:x=100/2:y=100:fontsize=50:fontfile=arial.ttf,split[txt1][txt1out];[txt1]drawtext=text=text2:x=200/2:y=200:fontsize=50:fontfile=arial.ttf,split[txt2][txt2out];[txt2]drawtext=text=text3:x=300/2:y=300:fontsize=50:fontfile=arial.ttf,split[txt3][txt3out];[txt3]drawtext=text=text4:x=400/2:y=400:fontsize=50:fontfile=arial.ttf[txt4]" -t 10 -map "[txt1out]" mapping1.mp4 -t 10 -map "[txt2out]" mapping2.mp4 -t 10 -map "[txt3out]" mapping3.mp4 -t 10 -map "[txt4]" mapping4.mp4


各ファイルを個別にエンコードするには、ストリームセレクトフィルターチェーンの最後にあるフィルター:

[txt1out][txt2out][txt3out][txt4]streamselect=4:map=1[out]

map=0選択用に設定[txt1out]map=1選択用に設定[txt2out]...

サンプルコマンド:

ffmpeg -y -f lavfi -i smptehdbars=rate=25:size=1920x1080 -filter_complex "[0:v]drawtext=text=text1:x=100/2:y=100:fontsize=50:fontfile=arial.ttf,split[txt1][txt1out];[txt1]drawtext=text=text2:x=200/2:y=200:fontsize=50:fontfile=arial.ttf,split[txt2][txt2out];[txt2]drawtext=text=text3:x=300/2:y=300:fontsize=50:fontfile=arial.ttf,split[txt3][txt3out];[txt3]drawtext=text=text4:x=400/2:y=400:fontsize=50:fontfile=arial.ttf[txt4];[txt1out][txt2out][txt3out][txt4]streamselect=4:map=1[out]" -t 10 -map "[out]" mapping2.mp4


注: Windows で動作させるには
追加fontfile=arial.ttfが必要でした。drawtext

関連情報