指定した場所を四角で囲ったり、埋めたりできるdrawboxフィルタの使い方。四角以外で囲むならgeqフィルタを使う。

数式で線や円、模様が描ける geq

基本コマンド

  • オプション無指定の場合は上下左右の端に4ピクセルの黒枠が描写される

    ffmpeg -i input -vf drawbox output

  • 左上の縦横10ピクセルの位置から幅100X200に太さ8ピクセルの青枠を描写

    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

    アルファチャンネルをグレーで出力する 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:ボックスの線の太さ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)