タグ別アーカイブ: alpha_channel

フェードイン、フェードアウトの設定ができる fade

フェードするチャンネルにアルファチャンネルあるなしで用途が異なる fade フィルタの使い方。アルファチャンネルがない場合のフェードインは指定色から元映像にフェードし、フェードアウトは元映像から指定色にフェードする。アルファチャンネルがあればクロスフェードのように2映像をきれいにつなげることができる。そのほかにアルファチャンネルの濃度の変化をマスクとして利用し、別のフィルタの濃度変化にも使える。

基本コマンド

元映像から始まり開始2秒から白に1秒間でフェードインする
ffplay -f lavfi -i testsrc,fade=t=out:st=1:d=2:c=white

赤から始まり開始2秒から元映像に1秒間でフェードアウトする
ffplay -f lavfi -i testsrc,fade=t=in:st=1:d=2:c=0xff0000
続きを読む フェードイン、フェードアウトの設定ができる fade

前後フレームの差分で動いた部分だけマスクする モーションマスク

前後フレームの YUV 差分をマスクしてフィルタを当てなくするモーションマスクの使い方。マスクするチャンネルは Y だけと、YUV のすべてを指定でき、マスクを反転することもできる。使うフィルタは tblend で前後フレームを1入力で取り込み、maskedmerge で1,2入力の割合を決めている。

前後フレームの差分をブレンドする tblend
マスクして2入力を合わせる maskedmerge
続きを読む 前後フレームの差分で動いた部分だけマスクする モーションマスク

エッジ検出フィルタ sobel, prewitt

ffmpeg 3.2 でリリース予定のビデオフィルタ。エッジ検出フィルタに単体では edgedetectfrei0rsobel があり、カーネルを指定する convolution でもエッジ検出ができるが、今回のこれらのフィルタは手軽でエッジ部分の線が太いのでマスクするのにも便利。sobelprewitt はカーネルが少し異なるがオプションは同じである。

ffmpeg でエッジ検出をする edgedetect
ffmpeg で使える frei0r フィルタの使い方
先鋭化やぼかし、エンボス処理などができる convolution
ffmpeg でエッジマスク

基本コマンド

既定値のオプションを当てる
ffmpeg -i input -vf sobel=planes=15:scale=1:delta=0 output
ffmpeg -i input -vf sobel=15:1:0 output
ffplay -i input -vf sobel=15:1:0

公式ドキュメント:FFmpeg Filters Documentation : sobel
公式ドキュメント:FFmpeg Filters Documentation : prewitt
続きを読む エッジ検出フィルタ sobel, prewitt

ウェーブレットデノイザ vaguedenoiser

ffmpeg 3.2 でリリース予定のビデオフィルタ。Cohen-Daubechies-Feauveau(CDF) 9/7 のウェーブレットデノイザ。フィルタを当てるチャンネルを指定できる。

基本コマンド

ffmpeg -i input -vf vaguedenoiser=threshold=2:method=2:nsteps=6:percent=85:planes=15 output
ffmpeg -i input -vf vaguedenoiser=2:2:6:85:15 output
ffplay -i input -vf vaguedenoiser=2:2:6:85:15

公式ドキュメント:FFmpeg Filters Documentation : vaguedenoiser
続きを読む ウェーブレットデノイザ vaguedenoiser

2入力の LUT を手軽に入れ替えられる lut2

ffmpeg 3.2 でリリース予定のビデオフィルタ。映像の YUV や RGB を別の映像と入れ換えるときに今までは extractplanes で対象チャンネルを取り出して、mergeplanes で合わせていたのが lut2 だけで入れ換えることができる。ただし複数入力するビデオフィルタでは同じ解像度と SAR でないとエラーが出る。

各映像チャンネルを分離する extractplanes
各映像チャンネルを結合する mergeplanes

また1入力で各チャンネルを入れ換えるには shuffleplanes や、swapuv フィルタがある。

plane を入れ替え、コピーする shuffleplanes

基本コマンド

1入力の Y(または R)をそのままに、1入力の UV(またはGB)を2入力の UV(またはGB)と入れ換える
ffmpeg -i input1 -i input2 -filter_complex lut2=c0=x:c1=y:c2=y output
ffmpeg -i input1 -i input2 -filter_complex lut2=x:y:y output

公式ドキュメント:FFmpeg Filters Documentation : lut2
続きを読む 2入力の LUT を手軽に入れ替えられる lut2

映像の差分を加算する maskedclamp

ffmpeg 3.2 でリリース予定のビデオフィルタ。映像を3入力し、1入力を基本の映像として、1入力と比較して2入力は差分の値がプラスのときに、1入力と比較して3入力は差分の値がマイナスのときに、その差分だけ1入力と入れ換える maskedclamp フィルタの使い方。同じようなことが blend フィルタでもできるが、こちらは3入力できるところが特徴である。

基本コマンド

同じ映像を3入力しても出力映像は変わらない
ffmpeg -i input -vf split=3[0][1][2];[0][1][2]maskedclamp=undershoot=0:overshoot=0:planes=15 output
ffmpeg -i input -vf split=3[0][1][2];[0][1][2]maskedclamp=0:0:15 output
ffplay -i input -vf split=3[0][1][2];[0][1][2]maskedclamp=0:0:15

公式ドキュメント:FFmpeg Filters Documentation : maskedclamp
続きを読む 映像の差分を加算する maskedclamp

アルファチャンネルをグレースケールで出力する alphaextract

映像にアルファチャンネルがあるときに alphaextract を使えばグレースケールで取り出すことができる。同時にフォーマットもグレースケール YUV に変換される。同じ効果のフィルタに extractplanes=a があり、これもグレースケールで出力する。透過部分の値は小さく、透過しない部分の値は大きくなる。

各映像チャンネルを分離する extractplanes

基本コマンド

0000bf(青)の透過した部分を黒で、透過しない部分を白の alphaextract.png で出力する。設定するオプションはない。
ffmpeg -f lavfi -i smptebars=d=1 -vf colorkey=0x0000bf:.01:.1,alphaextract -vframes 1 alphaextract.png

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

別ファイルの情報から元映像を透過させる alphamerge

alphamerge は2番目の入力のグレースケール(グレースケールでなければ変換される)の白黒具合に応じて1番目の入力に透過情報を加える。透過具合については黒が透過し、白に近いほど透過しなくなり、出力は YUVA または ARGB, RGBA になる。アルファチャンネルを含む映像になるのでそれに対応したコーデックで出力しないとアルファチャンネルが消えてしまうのに注意。YUVA なら ffv1。RGBA なら utvideo または ffv1 で出力する。同じ機能のフィルタに mergeplanes があるがこちらの方が負荷が少し軽く、アルファチャンネルを追加する maskedmerge と負荷は変わらない。

各映像チャンネルを結合する mergeplanes
マスクして2入力を合わせる maskedmerge

基本コマンド

YUVA 出力の場合は ffv1
ffmpeg -i yuv -i gray -filter_complex alphamerge -vcodec ffv1 output.mkv
RGBA 出力の場合は utvideo または ffv1
ffmpeg -i rgb -i gray -filter_complex alphamerge -vcodec utvideo output.mkv
mergeplanes を使う例
ffmpeg -i yuv -i gray -filter_complex mergeplanes=0x00010210:yuva420p -vcodec ffv1 output.mkv

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