30000/1001fps のインターレースの動画からアニメの 24000/1001fps のプログレッシブ動画にするためにインターレースを解除してフレームを間引くにはいくつかの方法があるので目的に合わせてフィルタを使う。
ポイントはフレームを間引く必要があるかどうかと、テロップなどの片フィールド補間がいるかどうか。フレーム間引きするにはdecimate
を併用し、pullup
には必要ない。fieldmatch
後にインターレースフラグだけインターレース解除する場合アルゴリズムを変えても結果は同じで速度も同じになる。
片フィールドを補間した 60p はw3fdif
だけ使うのが手軽だが、他にもyadif
とbwdif
、nnedi
も Bob化できる。yadif
とbwdif
の第1引数を 1 にする必要があるのは片フィールド補間した Bob化する場合である。
片フィールドを補間しない場合にnnedi
は速度の割にはあまり品質はよくないかもしれない。
インターレース解除とリサイズを併用する場合は、インターレース解除した後にリサイズする。
yadif,scale=1280:-2
フレームを間引くのならインターレース解除した後に行うことでリサイズするフレーム数を減らせて処理がはやくなる。
yadif,decimate,scale=1280:-2
リサイズする scale
Zライブラリを使ったリサイズフィルタ zscale
24pの処理速度比較
6 < 5 < 4 < 3 << 2 << 1
setpts
フィルタは最後に当てる。
- 手動インターレース解除して、間引きも手動指定
fieldhint=hint.txt:relative,select=’mod(n-1,5)’,fps=24000/1001 - 高速なプログレVFR(
-r
で固定フレームにできる)(速度を重視)
pullup -r 24000/1001 - 意外に速くて高品質で 24fps化(品質と速度を両立)
fieldmatch,decimate,setpts=N/(24000/1001)/TB - 一般的な 24fps化(品質と速度を両立)
yadif=0:-1:1,decimate,setpts=N/(24000/1001)/TB - yadif より高画質(常に高画質とは限らない)な 24fps化(速度より品質重視)
bwdif=0:-1:1,decimate - IVTC と yadif を併用して 24fps化(速度より品質重視)
fieldmatch=order=auto:combmatch=none,yadif=0:-1:1,decimate,setpts=N/(24000/1001)/TB - 一般的なインターレース解除(品質と速度を両立)
yadif=0:-1:1 - yadif より高画質(常に高画質とは限らない)
bwdif=0:-1:1 - テロップなど 60p の Bob
yadif=1:-1:1 - テロップなど 60p の Bob
bwdif=1:-1:1 - テロップなど 60p の Bob
w3fdif=1:0 - テロップなど 60p の Bob(かなり遅いが一番高画質)
nnedi=deint=1:field=af
関連記事
- インターレースを解除する bwdif
- インターレース解除フィルタ w3fdif
- 手動でフィールド処理を行う fieldhint
- ffmpeg でのフレームレート設定の違い
- 高速で万能な逆テレシネフィルタ pullup
- フレームを間引くdecimate、mpdecimate
- デノイズとインターレース解除ができる pp
- 一番メジャーなインターレース解除フィルタ yadif
- QSV でインターレース解除 : qsv 対応の ffmpeg をつくる
- ニューラルネットワーク予測を使ってインターレース解除する nnedi
- vmaf スコアをインターレース解除とデノイズのフィルタを使って調べてみた
公式ドキュメント
- FFmpeg Filters Documentation : pullup
- FFmpeg Filters Documentation : fps
- FFmpeg Filters Documentation : yadif
- FFmpeg Filters Documentation : mcdeint
- FFmpeg Filters Documentation : bwdif
- FFmpeg Filters Documentation : decimate
- FFmpeg Filters Documentation : fieldmatch
- FFmpeg Filters Documentation : fieldhint
- FFmpeg Filters Documentation : w3fdif
ロゴ消しはこちら:ffmpeg できれいにロゴを消す方法
一定周期ではない重複フレームを除く場合はmpdecimate
フィルタを使う。
Remove sequentially duplicate frames when using FFmpeg – Stack Overflow
追記
全体のコマンドを直して、bwdif
を追加。2016年2月29日
Bob の部分を追記した。2016年3月1日
fieldhint
を追加してリンクを追加。2016年4月7日
エンコードの元になる動画の説明を加えた。2016年10月30日
fieldmatch,decimate
を追加。2018年5月3日
setpts=N/(24000/1001)/TB を追加。2019年2月25日
リサイズする場合のフィルタ順の明記。2019年5月23日
リサイズのコマンドが間違っていたのを直した。2019年12月3日