chromakeyフィルタは指定した色の部分が透過した YUVA で出力し透過した部分にオーバーレイして別の映像を映すのに使う。バージョンは3.0 以降から使える。

RGBA で処理するcolorkeyはこちら:ffmpeg でクロマキー合成

基本コマンド

colorkeyと基本的には同じ。
ffmpeg -i input1 -i input2 -filter_complex [1:v]chromakey=red:.03:.1[1v];[0:v][1v]overlay output
ffmpeg -i input1 -i input2 -filter_complex [1:v]chromakey=0xff0000:.03:.1[1v];[0:v][1v]overlay output

公式ドキュメント:FFmpeg Filters Documentation : chromakey

オプション内容

  • color[color]
    指定した色を透過させる。16進数形式か、色名を指定
    既定値:”black”
  • similarity[float]
    一致の範囲指定。0.01は完全一致、1は全画面。大きい値ほど透過範囲が広く濃くなる
    既定値:0.01
    範囲:0.01から1まで
  • blend[float]
    似た色の透過の影響具合、0は指定した色だけで大きくするほど似た色も少しずつ透過する。つまり透過のグラデーションがきれいになる
    既定値:0
    範囲:0から1まで
  • yuv[boolean]
    colorパラメーターを RGB の代わりに YUV を使う
    既定値:0
    範囲:0と1

透過具合を調べる

アルファチャンネルを調べるにはそのチャンネルの暗さ具合を調べることで透過具合を調べられる。アルファチャンネルだけを調べるには2つの方法があり、extractplanes=aalphaextractがある。どちらもアルファチャンネルをグレースケールで出力する。このとき白(255.255.255)が透過しない部分になる。暗さを調べるには YUV の Y の最小値をsignalstats,metadataで調べる。

ffmpeg -f lavfi -i smptebars=d=1 -vf chromakey=0x0000af:.01:.1,alphaextract,signalstats,metadata=print:key=lavfi.signalstats.YMIN -vframes 1 test.png

各映像チャンネルを分離する extractplanes
YUV のデータを数値で表示する signalstats
メタデータをコンソールに表示する metadata, ametadata

YUVA の動画で出力する

YUVA 対応のコーデックは多くないが ffv1 が対応している。ただし一般的に動画編集ツールで正しく読める保証はないので rgba に変換した方無難。この場合はcolorkeyフィルタで RGB 処理した方が透過設定がしやすいかも。

こちらが YUVA 出力
ffmpeg -i input1 -vf chromakey=red:.03:.1 -vcodec ffv1 output.mkv
こちらが RGBA 出力
ffmpeg -i input1 -vf colorkey=red:.03:.1 -vcodec utvideo output.mkv

コメントを残す

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

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