通常はタイムライン編集で時間別にフィルタのオンオフを行うが、アルファチャンネルの濃さを調整することでフィルタの強弱を時間でつけることができる。
ffmpeg で使える映像のテストソース
手元に映像ファイルがなくても単色や、カラーバーを作ることが出来る。
公式wiki:FancyFilteringExamples – FFmpeg
基本コマンド
ffmpeg -f lavfi -i color -vframes 1 color.png
ffmpeg -f lavfi -i color=s=1280x720:r=30:d=10 output.mp4
ffplay -f lavfi -i color=c=black:s=340x240:r=25:sar=1/1:d=60
より正確なテストソース。
ffmpeg -f lavfi -i sws_flags=+accurate_rnd+bitexact;color -sws_flags accurate_rnd+bitexact -flags +bitexact -fflags +bitexact -vframes 1 color.png
ffplay -f lavfi -i sws_flags=+accurate_rnd+bitexact;color=c=black:s=340x240:r=25:sar=1/1:d=60 -sws_flags +accurate_rnd+bitexact -flags +bitexact -fflags +bitexact
音声のテストソースも同時に扱う。
ffmpeg -f lavfi -i smptehdbars=1920x1080:d=10 -f lavfi -i sine=frequency=1000:d=10 output.mp4
ffplay -f lavfi -i smptehdbars=1920x1080[out0];sine=frequency=1000[out1]"
ピクセルフォーマットやビット深度の変更は入力ソースで変更する。
ffmpeg -f lavfi -i yuvtestsrc=d=5,format=yuv422p10le -c:v prores_ks -profile:v 4444xq -pix_fmt yuv422p10le yuvtestsrc.mov
ピクセルフォーマット一覧。
ffmpeg -pix_fmts
各種ソースは-filter_complex
内で作ることもできる。d=3で3秒のファイルにshortest=1ですべての出力を時間指定した3秒で止めるようにしている。
ffmpeg -f lavfi -i testsrc2=d=3 -filter_complex "mptestsrc,scale=320x240[1];sierpinski=320x240,[0][1]vstack=3:shortest=1" output
2入力する映像のフィルタを詳しく設定する
2つ以上の映像を入力してフィルタを当てるときにそれらの読み込み開始時間は等しくなる。これを-ss
オプションやtrim
フィルタを使って読み込み開始時間をずらす方法。対象となるフィルタはoverlay, blend
などの2映像のチャンネルを合わせるフィルタである。
2017年2月のニコ生統計
集計期間は週間のニコ生統計の2月分である。2015年の1月の2週目から取得漏れの R-18 放送を含めて Vita API で取得し始めたのでそれ以前と比べて取得放送数が増えている。
ffmpeg で ocr
Tesseract-OCRを使ったocr
フィルタで文字認証を行う。ffmpegにはlibtesseractを有効化する。本家と同様に英語や日本語などたくさんの言語に対応している。ただし日本語の漢字の精度はかなりよくない。2018年10月にリリースした 4.0 でひらがなとカタカナの識字率はかなり上がった。ただし漢字は似た漢字になる場合も多い。
以下の wiki によると、識字率は OCR する前に対象文字周辺をcrop
フィルタで切り取ると上がるが文字周辺ギリギリはよくない。また解像度が小さすぎても大きすぎても識字率は下がることがある。
2017年1月のニコ生統計
集計期間は週間のニコ生統計の1ヶ月分である。2015年の1月の2週目から取得漏れの R-18 放送を含めて Vita API で取得し始めたのでそれ以前と比べて取得放送数が増えている。
ffmpeg でドット絵風の低画質に変換する
画像をドット絵風の低画質に変換するTwitter Bot「低画質」を作った – razokulover publogで話題になったのを ffmpeg のフィルタでドット絵風の低画質に変換する。
2つの映像のヒストグラムをうまく揃えるように調整する midequalizer
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まで
tmidequalizer
連続するフレームでピクセル値の変化を緩やかにするtmidequalizer
フィルタの使い方。
基本コマンド
ffmpeg -i input -vf tmidequalizer=5:0.5:15 -c:a copy output
ffplay -i input -vf tmidequalizer=5:0.5:15
公式ドキュメント:FFmpeg Filters Documentation : tmidequalizer
オプション
- radius[int]
半径の指定。小さな値ほど変化が急で、大きな値ほど緩やかになる
既定値:5
範囲:1から127まで - sigma[float]
強度指定。0にすると効果がなくなる
既定値:0.5
範囲:0から1まで - planes[int]
フィルタを当てるチャンネル指定
詳しくはffmpeg について | チャンネルの順番と注意点を参照
既定値:15(すべてのチャンネル)
範囲:0から15まで
ffmpeg 3.2 リリース
追記 2017年2月10日
3.2.4 がリリースされた。
git.videolan.org Git – ffmpeg.git/shortlog
git.videolan.org Git – ffmpeg.git/blobdiff – Changelog
追記 2017年2月8日
3.2.3 がリリースされた。
git.videolan.org Git – ffmpeg.git/shortlog
git.videolan.org Git – ffmpeg.git/blobdiff – Changelog
閾値の指定で2つのフィルタを使い分けやすくする threshold
ffmpeg 3.3 から追加されたフィルタ。4つの映像を入力して、1、2入力の比較で3、4入力を使い分けて1出力するthreshold
フィルタの使い方。高ビット深度対応の YUV, GBRP, GRAY, アルファ に対応している。2つのフィルタを使い分けたり、白黒2色のマスクが手軽に設定できる。4つの映像は同じ解像度、フレームレート、アスペクト比でなければならない。
具体的に説明すると1入力と2入力をの YUV/GBR の値を比較して、1 <= 2 の部分に4入力が、2 < 1 部分に3入力が割り当てられる。planes指定でフィルタを当てなければ1入力がそのまま出力される。planes指定でフィルタを当てても1映像のまま出力する場合でも映像が変わらなければ負荷は変わらない。