時間でフィルタに強弱をつける

通常はタイムライン編集で時間別にフィルタのオンオフを行うが、アルファチャンネルの濃さを調整することでフィルタの強弱を時間でつけることができる。

特定の時間だけフィルタを当てるタイムライン編集について

Continue reading “時間でフィルタに強弱をつける”

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]"

テストシグナルの音声を作る sine

ピクセルフォーマットやビット深度の変更は入力ソースで変更する。
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

Continue reading “ffmpeg で使える映像のテストソース”

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

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

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

2017年2月のニコ生統計

集計期間は週間のニコ生統計の2月分である。2015年の1月の2週目から取得漏れの R-18 放送を含めて Vita API で取得し始めたのでそれ以前と比べて取得放送数が増えている。

Continue reading “2017年2月のニコ生統計”

ffmpeg で ocr

Tesseract-OCRを使ったocrフィルタで文字認証を行う。ffmpegにはlibtesseractを有効化する。本家と同様に英語や日本語などたくさんの言語に対応している。ただし日本語の漢字の精度はかなりよくない。2018年10月にリリースした 4.0 でひらがなとカタカナの識字率はかなり上がった。ただし漢字は似た漢字になる場合も多い。
以下の wiki によると、識字率は OCR する前に対象文字周辺をcropフィルタで切り取ると上がるが文字周辺ギリギリはよくない。また解像度が小さすぎても大きすぎても識字率は下がることがある。

Continue reading “ffmpeg で ocr”

2017年1月のニコ生統計

集計期間は週間のニコ生統計の1ヶ月分である。2015年の1月の2週目から取得漏れの R-18 放送を含めて Vita API で取得し始めたのでそれ以前と比べて取得放送数が増えている。

Continue reading “2017年1月のニコ生統計”

ffmpeg でドット絵風の低画質に変換する

画像をドット絵風の低画質に変換するTwitter Bot「低画質」を作った – razokulover publogで話題になったのを ffmpeg のフィルタでドット絵風の低画質に変換する。

関連記事
ぼやけた画像からドット絵を抽出する – Posts – Seaside Laboratory

Continue reading “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

オプション

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

Continue reading “ffmpeg 3.2 リリース”

閾値の指定で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映像のまま出力する場合でも映像が変わらなければ負荷は変わらない。

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