ffmpeg を使用して、ビデオの最初の 30 秒間にロゴを追加しようとしています。 というビデオd1.mp4
と というロゴがありますlogo.png
。
ビデオが始まると、透かしはビデオの左上または右上隅に表示され、30 秒後に消えます。
追加する方法を教えていただけますか?
答え1
ffmpeg -i in.mp4 -framerate 30000/1001 -loop 1 -i logo.png -filter_complex
"[1:v] fade=out:st=30:d=1:alpha=1 [ov]; [0:v][ov] overlay=10:10 [v]" -map "[v]"
-map 0:a -c:v libx264 -c:a copy -shortest out.mp4
これは、ロゴがアルファ チャネルを持つ単一の静止画像であり、フレーム レートが 30000/1001 (NTSC レート) のビデオにオーバーレイすることを前提としています。-framerate
が異なる場合は、入力ビデオに合わせて を変更します。ロゴがビデオの場合は、 を省略します-framerate 30000/1001 -loop 1
。ロゴにアルファ チャネルがない場合は、format=yuva420p,
の直前に例を挿入してアルファ チャネルを追加しますfade
。
これにより、ロゴが x,y 位置 10,10 に 30 秒間表示され、その後 1 秒間フェードアウトします。
答え2
使用overlay
ビデオフィルタービデオにロゴを追加するには:
ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay" \
-codec:a copy out.mp4
このコマンドを理解するには、ストリーム指定子であり、読んでいるFFmpeg フィルタリング入門が役立ちます。[0:v]
は最初の入力 ( ) のビデオ ストリームを参照しvideo.mp4
、[1:v]
は 2 番目の入力 ( logo.mp4
) のビデオ ストリームを参照します。これにより、overlay
使用する入力を判断できます。 を省略しても機能します[0:v][1:v]
がoverlay
、明示的に指定し、不明な可能性のあるデフォルトに依存しないようにすることをお勧めします。
デフォルトでは、ロゴは左上に配置されます。
-codec:a copy
willの使用ストリームコピーオーディオ。これはオーディオを再エンコードするのではなく、単にオーディオを再多重化するだけです。オーディオの「コピー アンド ペースト」と考えてください。
ロゴの移動
この例では、ロゴを右に 10 ピクセル、下に 10 ピクセル移動します。
ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay=10:10" \
-codec:a copy out.mp4
この例では、ロゴを右側から 10 ピクセル、下へ 10 ピクセル移動します。
ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=main_w-overlay_w-10:10" -codec:a copy out.mp4
main_w
は「メイン」入力(背景または[0:v]
)の幅を指し、 はoverlay_w
「オーバーレイ」入力(ロゴまたは )の幅を指します。したがって、この例では、これはまたは[1:v]
に変換できます。overlay=320-90-10:10
overlay=220:10
オーバーレイのタイミング
一部のフィルターはタイムライン編集これにより、算術式フィルターをいつ適用するかを決定します。ffmpeg -filters
タイムライン編集をサポートするフィルターを確認するには、を参照してください。
この例では、ロゴが 30 秒間表示されます。
ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=10:10:enable=between(t\,0\,30)" -codec:a copy out.mp4
ロゴを消したい場合は、mark4oの回答。