タグ別アーカイブ: Video_Filters

2入力する映像のフィルタを詳しく設定する

2つ以上の映像を入力してフィルタを当てるときにそれらの読み込み開始時間は等しくなる。これを -ss オプションや trim フィルタを使って読み込み開始時間をずらす方法。対象となるフィルタは overlay, blend などの2映像のチャンネルを合わせるフィルタである。
続きを読む 2入力する映像のフィルタを詳しく設定する

ffmpeg で ocr

Tesseract-OCR を使った ocr フィルタで文字認証を行う。本家と同様に英語や日本語などたくさんの言語に対応している。ただし日本語の漢字の精度はかなりよくない。識字率を上げるのに OCR する前に対象文字周辺を crop フィルタで切り取ると上がりそうだがその他はわからない。

x:y は出力解像度。横:縦
w:h は出力解像度の左上隅の座標。横:縦
Windows の ffmpeg で生放送する方法 : crop
crop=x:y:w:h,ocr
続きを読む ffmpeg で ocr

2つの映像のヒストグラムをうまく揃えるように調整する midequalizer

ffmpeg 3.3 から追加予定のフィルタ。2つの映像を入力して2つ目の映像のヒストグラムを1つ目の映像にうまく揃える midequalizer フィルタの使い方。高ビット深度対応の YUV, GBRP, GRAY, アルファ に対応している。同じ場面を映している2台のカメラ、例えばステレオカメラで、映像の明るさを揃えるのに使う。

基本コマンド

ffmpeg -i input1 -i input2 -filter_complex midequalizer=15 output

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

オプション

planes[int]
フィルタを当てるチャンネル指定
詳しくは ffmpeg について | チャンネルの順番と注意点 を参照
既定値:15(すべてのチャンネル)
範囲:0 から 15 まで

閾値の指定で2つのフィルタを使い分けやすくする threshold

ffmpeg 3.3 から追加予定のフィルタ。4つの映像を入力して、1、2入力の比較で3、4入力を使い分けて1出力する threshold フィルタの使い方。高ビット深度対応の YUV, GBRP, GRAY, アルファ に対応している。2つのフィルタを使い分けたり、白黒2色のマスクが手軽に設定できる。

具体的に説明すると1入力と2入力を比較して、1 < = 2 の部分に4入力が、2 < 1 部分に3入力が割り当てられる。planes 指定でフィルタを当てなければ1入力がそのまま出力される。planes 指定でフィルタを当てても1映像のまま出力する場合でも映像が変わらなければ負荷は変わらない。
続きを読む 閾値の指定で2つのフィルタを使い分けやすくする threshold

輪郭を保護しながらシャープにしたりぼかしたりする unsharp

似たフィルタに smartblur があり、こちらもぼかしたりシャープにできる。RGB の映像は YUV に変換され、輝度だけ、彩度だけ、また両方にフィルタを掛けられる。

基本コマンド

ffmpeg -i input -vf unsharp=lx=5:ly=5:la=1:cx=5:cy=5:ca=0:opencl=0 output
ffplay -i input -vf unsharp=5:5:1:5:5:0:0

公式ドキュメント:FFmpeg Filters Documentation : unsharp
続きを読む 輪郭を保護しながらシャープにしたりぼかしたりする unsharp

輪郭を保護しながらぼかしたりシャープにする smartblur

似たフィルタに unsharp があり、こちらもぼかしたりシャープにできる。RGB の映像は YUV に変換され、輝度だけ、彩度だけ、また両方にフィルタを当てられる。

基本コマンド

輝度、または彩度の片方しか指定しなかった場合はもう片方も同じように指定される。片方のオプションを無効にするには luma_strength, chroma_strength のオプションを 0 にする。

ffmpeg -i input -vf smartblur=lr=1:ls=1:lt=0:cr=-0.9:cs=-2:ct=-31 output
ffplay -i input -vf smartblur=1:1:0:-0.9:-2:-31

公式ドキュメント:FFmpeg Filters Documentation : smartblur
続きを読む 輪郭を保護しながらぼかしたりシャープにする smartblur

フェードイン、フェードアウトの設定ができる 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

色相を動的に変更できる hue

YUV の輝度と彩度を調整できる hue フィルタ。値の指定にフレーム数やタイムスタンプが使えるので時間によって動的に変えられる。

基本コマンド

既定値では変化ない
ffmpeg -i input -vf hue=h=0:s=1:b=0 output
ffplay -i input -vf hue=0:1

色相を動的に変える例
ffplay -i input -vf hue=n
評価式(計算書式)の print を使えば値を調べられる
ffplay -i input -vf hue=print(n)
ffmpeg で使える計算書式

公式ドキュメント:FFmpeg Filters Documentation : hue
続きを読む 色相を動的に変更できる hue

ユーフォ2期OP冒頭部分のモノクロ部分だけ黒にする

ユーフォ2期,1話から5話までのOP冒頭部分のモノクロ部分だけ黒にする。モノクロ部分の UV が 128 になるのを利用してこの部分以外をマスクして真っ黒にする。

コマンド例
ffmpeg -i video.ts -vf bwdif=0:-1:1,decimate,removelogo=logo.bmp,split=3[0][1][2];[2]format=yuv444p,avgblur=3:2,shuffleplanes=1:1:1,lutyuv=between(val\,120\,135)\*255:val:val[2a];[1]lutyuv=0:val:val[1a];[0]format=yuvj420p[0a];[0a][1a][2a]maskedmerge=0x7,format=yuv420p -acodec copy output.mp4
続きを読む ユーフォ2期OP冒頭部分のモノクロ部分だけ黒にする