30000/1001fpsのインターレースの動画からアニメの24000/1001fpsのプログレッシブ動画にするためにインターレースを解除、逆テレシネする。フレームを間引くにはいくつかの方法があるので目的に合わせてフィルタを使う。
ポイントはフレームを間引く必要があるかどうかと、テロップなどの片フィールド補間がいるかどうか。フレーム間引きするにはdecimateを併用し、pullup、detelecineには必要ない。
片フィールドを補間した 60pはw3fdifだけ使うのが手軽だが、他にもyadifとbwdif、nnedi、estdifもBob化できる。yadif、bwdif、estdifの第1引数を1にする必要があるのは片フィールド補間しBob化する場合である。
逆テレシネするならfieldmatchフィルタを使って、逆テレシネ漏れにestdifフィルタの併用がよさそう。毎フレームのフィールドが動く映像は逆テレシネはせずにbwdifフィルタで片フィールド補間するか、30pにするのが無難にきれいになる。
片フィールドを補間しない場合にnnediは速度の割にはあまり品質はよくないかもしれない。
インターレース解除、または逆テレシネとリサイズを併用する場合は、インターレース解除、または逆テレシネした後にリサイズする。
yadif,scale=1280:-2
フレームを間引くのならインターレース解除した後に行うことでリサイズするフレーム数を減らせて処理がはやくなる。
yadif,decimate,scale=1280:-2
リサイズする scale
Zライブラリを使ったリサイズフィルタ zscale
24pの処理速度比較
8 < 7 < 6 < 5 << 4 << 3 < 2 << 1
- フィールドパターンを手動の逆テレシネして、間引きも手動指定
“separatefields,shuffleframes=0 1 4 3 6 5 8 9 -1 -1,setfield=tff,weave,setpts=(N*1001)/(24000*TB),setparams=field_mode=prog” -r 24000/1001 -fps_mode cfr
- フィールドパターンを手動の逆テレシネして、間引きは自動
detelecine=start_frame=3
- 手動インターレース解除して、間引きも手動指定
fieldhint=hint.txt:pattern,select=mod(n-1\,5),fps=24000/1001
- 高速なプログレVFR(
-rで固定フレームにできる)(速度を重視)
pullup -r 24000/1001
- 意外に速くて高品質で 24fps化(品質と速度を両立)
fieldmatch,decimate
- 一般的な 24fps化(品質と速度を両立)
yadif=0:-1:1,decimate
- yadif より高画質(常に高画質とは限らない)な 24fps化(速度より品質重視)
bwdif=0:-1:1,decimate
- IVTCとyadifを併用して24fps化(速度より品質重視)
fieldmatch=mode=pc:cthresh=40,yadif=0:-1:1,decimate
- 一般的なインターレース解除(品質と速度を両立)
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
Continue reading “ffmpeg でインターレース解除”