ドラクエの戦闘シーンチェンジエフェクトを作る

ニコニコ動画に投稿された「DQエンカウント風AviUtlシーンチェンジ用素材 sm30578410 (自主削除)」を元に ffmpeg でも同じことを実装する。配布されたファイルは 8bit PNG なのでそれを使い、グラデーションマスクを作成し2入力を合わせる方法をとる。サンプルコマンドの出力コーデックは適宜変える。input1.mp4 と input2.mp4 は 640X360 30000/1001 fps の動画である。それに伴って。color ソースもそれに統一する。シーンチェンジは input1.mp4 から input2.mp4 の順番に切り替わるのがドラクエの戦闘シーンチェンジエフェクトになる。

動画は削除されたが素材は削除されずダウンロードできる。パスワードは検索すると見つかる。

Continue reading “ドラクエの戦闘シーンチェンジエフェクトを作る”

白と黒を使ったフェード効果

白や黒にフェードインする効果と、白や黒から入力した映像にフェードアウトする効果の解説。入力した映像が YUV、または RGB で処理が異なる。効果は2秒から4秒に掛けての2秒間で行う。適宜効果の時間は設定を変える。

フェード単体のフィルタもある。
フェードイン、フェードアウトの設定ができる fade

ffmpeg 4.3 から手軽にトランジションできるフィルタが追加される予定。
映像のトランジションの設定ができる xfade

関連記事
数式で線や円、模様が描ける geq
特定の時間だけフィルタを当てるタイムライン編集について

Continue reading “白と黒を使ったフェード効果”

2017年3月のニコ生統計

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

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

数式で線や円、模様が描ける geq

ffmpeg のフィルタの中でおそらく最も使い方が難解なgeq(generic equation)フィルタの使い方。YUV と RGB、A のそれぞれを設定により色を変えたり、回転・反転させたり、グラデーションや線、円や矩形も描ける。さらにマスクも作れるのでトランジションへの応用もできるが処理速度はかなり遅い。その書き方はすべて縦横の座標とその値を評価式で計算する。

ffmpeg で使える評価式

Continue reading “数式で線や円、模様が描ける geq”

モノクロで点滅する効果を作る

YUVの映像なら彩度を0にするか、UVを128にする方法で、RGBの映像ならRGB各値をそれぞれ一定倍率を掛け合わせる方法をとり、点滅するフレーム間隔を指定するのにタイムライン編集を行う。

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

Continue reading “モノクロで点滅する効果を作る”

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

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

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

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”