fieldmatch+decimate+yadifというfilter chainのparameter tuningを行うことで安定して高品質な結果を得る方法に限界を感じて、自前でvisual filterを書いてしまった。
https://github.com/gitune/vf_fmdif
fmdif=field match deinterlace filterの意ですが、yadifをベースにfieldmatchの櫛検出+field match処理を前段に組み込んだもの。櫛の生じないマッチしたfieldが見つかればyadifの処理の代わりにそちらを使います。
自前で作った、とはいえ自分の書いたコードはほとんどなくて、ほぼyadifとfieldmatchのキメラです。ホントはfieldmatchはマッチしたfieldを探すのに櫛検出とは別の方法を使っていますが(多分そっちの方が軽い)、そちらはよく分からなかったので櫛検出のみを拝借。
通常のyadifと比べると櫛検出のためにfield毎に2 frame作るのでちょっと重くなっているはずですが、後段のAV1 encodeに比べれば誤差レベルかな…
この週末の自由になる時間を全て使ったので制作時間は5~6時間、ってところか。そこまで家事に影響するほどでなくて良かった。
そんなわけで最新のfilter chainはこんな感じ↓。
-vf “fps=30000/1001,fmdif=1:-1:1”
めっちゃ短くなった(汗。