FFmpeg, Insert a logo (watermark) in the movie, pass it through, fading in and out
fading in and out
FFmpegで動画にロゴ(watermark)を挿入して透過させてフェードイン・フェードアウトする
FFmpegでプレビュー
ffmpeg -i input.mp4 -loop 1 -i logo.png -filter_complex "[1]format=yuva420p,lut=a='val*0.9',fade=in:st=1:d=2:alpha=1,fade=out:st=7:d=2:alpha=1[a];[0][a] overlay=(W-w)/2:(H-h)/2:shortest=1" -f matroska - | ffplay -i -
ffmpeg -i input.mp4 -loop 1 -i logo.png -filter_complex "[1]format=yuva420p,lut=a='val*0.9',fade=in:st=1:d=2:alpha=1,fade=out:st=7:d=2:alpha=1[a];[0][a] overlay=(W-w)/2:(H-h)/2:shortest=1" -movflags +faststart -pix_fmt yuv420p -c:v libx264 -crf 20 "output.mp4"
[1]format=yuva420p,lut=a='val*0.9',fade=in:st=3:d=2:alpha=1,fade=out:st=30:d=2:alpha=1[a];で二番目に入力した画像logo.pngのフォーマット形式をアルファ(透過)チャンネル付きのyuva420pに変換して、透過をした後、フェードインフェードアウトの時間設定をして[a]という任意の名前を付けています。
[0][a] overlay=(W-w)/2:(H-h)/2:shortest=1で一番目に入力した動画input.mp4と[a]を合成して[a]の貼り付け位置の指定をして一番目に入力した動画が終わったら動画の出力を終了するという指定をしています。
-loop 1 -loopオプションは入力した画像をループするために使用できます。ここでは画像をフェードインフェードアウトするために-loop 1で無限ループさせて使用しています。
入力した画像が動きのあるgifアニメーションの場合は-loop 1の代わりに-ignore_loop 0でgifアニメーションをループさせます。
FFmpegでプレビュー
ffmpeg -i input.mp4 -ignore_loop 0 -i logo.gif -filter_complex "[1]format=yuva420p,lut=a='val*0.9',fade=in:st=1:d=2:alpha=1,fade=out:st=7:d=2:alpha=1[a];[0][a] overlay=(W-w)/2:(H-h)/2:shortest=1" -f matroska - | ffplay -i -
ffmpeg -i input.mp4 -ignore_loop 0 -i logo.gif -filter_complex "[1]format=yuva420p,lut=a='val*0.9',fade=in:st=1:d=2:alpha=1,fade=out:st=7:d=2:alpha=1[a];[0][a] overlay=(W-w)/2:(H-h)/2:shortest=1" -movflags +faststart -pix_fmt yuv420p -c:v libx264 -crf 20 "output.mp4"
画像をループさせるコマンド
-loop 1
gifアニメーションをループさせるコマンド
-ignore_loop 0
画像を透過させるコマンド
format=yuva420p,lut=a='val*0.9'
画像をフェードフェードインフェードアウトするコマンド
fade=in:st=3:d=2:alpha=1,fade=out:st=7:d=2:alpha=1
Middle
合成した画像を真ん中に貼り付けるコマンド
overlay=(W-w)/2:(H-h)/2
合成した画像を左上に貼り付けるコマンド(10pxづつ隙間を空ける)
合成した画像を左上に貼り付けるコマンド(隙間を空けない場合)
overlay 又は overlay=0:0
合成した画像を右上に貼り付けるコマンド(10pxづつ隙間を空ける)
overlay=(W-w)-10:10
合成した画像を右上に貼り付けるコマンド(隙間を空けない場合)
overlay=(W-w):0 又は overlay=x=(W-w)
overlay=10:(H-h)-10
合成した画像を左下に貼り付けるコマンド(隙間を空けない場合)
overlay=0:(H-h) 又は overlay=y=(H-h)
合成した画像を右下に貼り付けるコマンド(10pxづつ隙間を空ける)
overlay=(W-w)-10:(H-h)-10
合成した画像を右下に貼り付けるコマンド(隙間を空けない場合)
overlay=(W-w):(H-h)