指定した場所を四角で囲ったり、埋めたりできるdrawbox
フィルタの使い方。四角以外で囲むならgeq
フィルタを使う。
基本コマンド
-
ffmpeg -i input -vf drawbox output
-
ffmpeg -i input -vf drawbox=10:10:100:200:blue:8 output
ffmpeg -i input -vf drawbox=x=10:y=10:w=100:h=200:c=blue:t=8 output - 左上に縦横10ピクセルから幅200X100に枠内を輝度反転した四角を描写
ffmpeg -i input -vf drawbox=10:10:200:100:invert:fill output
- ボックス部分だけ透過させる。
format
フィルタでアルファチャンネルをつけても最初は全画面255(透明ではない)なので、lutyuv
フィルタで 0(透明)にしてボックス部分だけ255にしている。アルファチャンネルの確認にはalphaextract
フィルタを使う
ffmpeg -i input -vf format=yuva420p,lutyuv=a=0,drawbox=0:0:100:100:replace=1 output
ffplay -i input -vf format=yuva420p,lutyuv=a=0,drawbox=0:0:100:100:replace=1,alphaextract - 透過部分をcolor, cの指定色に入れ替えてアルファチャンネルをなくす
ffmpeg -i alpha.png -vf "[0]split=2[bg][fg];[bg]drawbox=c=blue@1:replace=1:t=fill[bg];[bg][fg]overlay=format=auto" output.png
FFmpeg: Convert transparency to a certain color – Super User
公式ドキュメント:FFmpeg Filters Documentation : drawbox
オプション
- x[string]
ボックスを描写する左上の横座表の指定。評価式が使える
既定値:0 - y[string]
ボックスを描写する左上の縦座表の指定。評価式が使える
既定値:0 - width, w[string]
ボックスの横幅。評価式が使える
既定値:0 - height, h[string]
ボックスの縦幅。評価式が使える
既定値:0 - color, c[string]
ボックスの色指定。色名指定とrrggbb形式、“invert”(輝度の反転)が使える。色の書式設定を参考。@で続けて透過率の指定も可能
既定値:”black” - thickness, t[string]
ボックスの線の太さ。w, hをともに 0 にしていると映像の上下左右の端に枠が描写される。“fill”を使うと枠内が指定した色で埋まる。評価式が使える
既定値:4 - replace[boolean]
アルファチャンネルがあれば、ボックス部分に255の値を描写する。t=fillを併用すると透過部分だけにcolorで指定した色にする
既定値:0
x, y, w, h と t に使える評価式
ffmpeg で使える評価式を使って複雑な計算ができる。時間で変わるオプションがないので途中でサイズは変えられない。
- in_w, iw:入力映像の横幅
- in_h, ih:入力映像の縦幅
- hsu:水平方向のクロマサブサンプル値。yuv422p なら 2
- vsub:垂直方向のクロマサブサンプル値。yuv422p なら 1
- sar:サンプルアスペクト比
- dar:(w / h) * sar
- x:x で指定した値
- y:y で指定した値
- w:ボックスの横幅
- h:ボックスの縦幅
- t:ボックスの線の太さ