任意のソースビデオを使用して、ビデオ全体でさまざまなタイミングで最低3つの.pngオーバーレイ/透かしを独立してフェードイン/フェードアウトしたいと思います。私はフィルタチェーンの構文の権利を取得するのに問題があります。FFMPEGを使用して複数の(3+)オーバーレイ画像をビデオと独立してフェードイン/フェードインするにはどうすればよいですか?
これらの失敗した試みでは、同じサイズのソース入力ビデオを使用して1920x1080の4つの透明な.png画像を使用しています。スケーリング/ポジショニングは必要ありません。定義された時間にオーバーレイがフェードインまたはフェードアウトするだけです。
私はそうのように、「有効にする」unsing、機能がフェードせずに作業があります。
ffmpeg -i vid1.mp4 -loop 1 -i img1.png -i img2.png -i img3.png -i img4.png -filter_complex
"overlay=0:0:enable='between(t,8,11)' [tmp];
[tmp]overlay=0:0:enable='between(t,10,15)'[tmp1];
[tmp1]overlay=0:0:enable='between(t,15,138)'[tmp2];
[tmp2]overlay=0:0:enable='between(t,140,150)"
-c:v libx264 -c:a copy
-flags +global_header -shortest -s 1920x1080 -y out.mp4
私はちょうどで/フェードアウトを使用して、同じ制御をしたいです。
次のはほぼですが、出力ストリーム全体がフェードアウトしないようにしたいと思います。私は、7行目の8,122,249,9にfade = outを追加すると、(7行目から)合成された出力がフェードアウトしていることに気付きましたが、実際には各オーバーレイ画像がフェードアウトしているのと同じくらい近いです。 3行目、4行目、5行目で定義されているフェードは、何にも影響を与えません。それらを出力ストリームにコピーすると、フェードは各オーバーレイ画像で機能しますが、出力ストリーム全体、つまり個々のオーバーレイには影響したくありません。
ffmpeg -i vid1.mp4 -loop 1 -i img1.png -i img2.png -i img3.png -i img4.png -filter_complex
"[1:v]fade=out:st=3:d=1[watermark0];
[2:v]fade=out:st=4:d=1[watermark1];
[3:v]fade=out:st=5:d=1[watermark2];
[4:v]fade=out:st=6:d=1[watermark3];
[0:v][watermark0] overlay=0:0 [tmp0];
[tmp0][watermark1] overlay=0:0,fade=out:st=4:d=1 [tmp1];
[tmp1][watermark2] overlay=0:0,fade=out:st=6:d=1 [tmp2];
[tmp2][watermark3] overlay=0:0,fade=out:st=8:d=1 [out]" -map "[out]" -c:v libx264 -c:a copy
-flags +global_header -shortest -s 1920x1080 -y out.mp4
私はまた、上記と同様の結果で「スプリット」しようとしましたが、フェードは(この1つは、同様にフェードを使用しています)最初の画像の上に動作するようです:
ffmpeg -i vid.mp4 -loop 1 -i img1.png -i img2.png -i img3.png -i img4.png -filter_complex
"[1:v]split=4[wm1][wm2][wm3][wm4];
[wm1]fade=in:st=1:d=1:alpha=1,fade=out:st=3:d=1:alpha=1[ovr1];
[wm2]fade=in:st=2:d=1:alpha=1,fade=out:st=4:d=1:alpha=1[ovr2];
[wm3]fade=in:st=3:d=1:alpha=1,fade=out:st=5:d=1:alpha=1[ovr3];
[wm4]fade=in:st=4:d=1:alpha=1,fade=out:st=6:d=1:alpha=1[ovr4];
[0:v][ovr1]overlay=0:0[base1];
[base1][ovr2]overlay=0:0[base2];
[base2][ovr3]overlay=0:0[base3];
[base3][ovr4]overlay=0:0[out]" -map "[out]"
-t 10 -c:v libx264 -c:a copy -flags +global_header -shortest -s 1920x1080 -y out.mp4
どんな助けでも大歓迎です! :)
これはうまく機能しますが、私は出力ビデオで音声を失います。別にマッピングする必要がありますか、またはプライマリビデオのソースオーディオをどのように含める必要がありますか?お手伝いありがとう! – blahblahber
はい、 '-map 0:a'を追加してください – Mulvya