透過のテキストはできるが透過の動画はoverlay
フィルタだけを使って動画を重ねても透過にならないので、blend
フィルタを応用して透過したオーバーレイ動画を作る方法。コツは透過する画像の周りを背景となる映像と同じ映像をオーバーレイしてblend
のaverageで同じ映像同士の平均は同じというのを利用する。透過する映像の位置は overlay フィルタで指定する。前回記事の「ffmpeg で差分動画を作る」と同じように「:c0_opacity=.5」と等とすることで透過具合を変更することもできる。
追記 2015/01/15
識別子の c が表示されていなかったので c0 に変更した。
関連記事
コマンド例
- 左上に縦横半分にした透過映像を配置(背景の動画をフルカラーに)
ffplay -f lavfi "movie=left,scale=iw/2:ih/2[a];movie=right,split[b][c0];[b][a]overlay[ba];[c0][ba]blend=c0_mode=average"
ffmpeg -i left -i right -filter_complex "[0:0]scale=iw/2:ih/2[a];[1:0]split[b][c0];[b][a]overlay[ba];[c0][ba]blend=c0_mode=average" -acodec copy output - 左上に縦横半分にした透過映像を配置(透過する動画をフルカラーに)
ffplay -f lavfi "movie=left,scale=iw/2:ih/2[a];movie=right,split[b][c0];[b][a]overlay[ba];[ba][c0]blend=c0_mode=average"
ffmpeg -i left -i right -filter_complex "[0:0]scale=iw/2:ih/2[a];[1:0]split[b][c0];[b][a]overlay[ba];[ba][c0]blend=c0_mode=average" -acodec copy output - right の音声を使う場合(既定値は最初に入力した left)
ffplay -f lavfi "movie=left,scale=iw/2:ih/2[a];movie=right,split[b][c0];[b][a]overlay[ba];[ba][c0]blend=c0_mode=average[out0];amovie=left[out1]"
ffmpeg -i left -i right -filter_complex "[0:0]scale=iw/2:ih/2[a];[1:0]split[b][c0];[b][a]overlay[ba];[ba][c0]blend=c0_mode=average" -map 1:1 -acodec copy output - 音声を左右に割り振る場合(フィルタに取り入れるので音声のコピーはできない)
ffplay -f lavfi "movie=left,scale=iw/2:ih/2[a];movie=right,split[b][c0];[b][a]overlay[ba];[ba][c0]blend=c0_mode=average[out0];amovie=left,pan=stereo|c0=c0+c1[a];amovie=right,pan=stereo|c1=c0+c1[b];[a][b]amix[out1]"
ffmpeg -i left -i right -filter_complex "[0:0]scale=iw/2:ih/2[a];[1:0]split[b][c0];[b][a]overlay[ba];[ba][c0]blend=c0_mode=average;[0:1]pan=stereo|c0=c0+c1[a];[1:1]pan=stereo|c1=c0+c1[b];[a][b]amix" output
どうも、いつも参考になる記事をありがとうございます。
動画にロゴを挿入して挿入したロゴだけを透過させるということは可能でしょうか?
イメージ的にはAvidmuxのフィルタ機能、ロゴを追加のような感じです。
ググってもたどりつけなかったので、もしよろしければ記事にしていただけたらと思います。
誠に身勝手ではありますがよろしくお願いいたします。