人気ブログランキング | 話題のタグを見る

ffmpeg で 24fps 化

■ffmpeg で 30fps, 60fps から 24fps 化に悩む

テレビの放送は59.94i, フィールドを合成すれば 29.97p になります。でもって内容によっては元は23.976p で撮影されたコンテンツがあって、放送に乗せるためにはフレーム数をテレシネして水増ししますね。 23.976p で再生できれば水増しフレームは邪魔なだけで、29.976p で再生するとパンしたときに余分なフレームのところは重複フレームなので一瞬引っかかったような表現になります。 これがいやでなんとか 24fps に戻せないか、試行錯誤を始めてからずいぶん経ちました。
ということで、24fps 化の私的メモ。。。

当初は簡単に済まそうと、



ffmpeg -i inputfile.avi -vf pullup -r 24000/1001 output.mp4

単純に pullup だけでなんとかしようとしてたんですけど、入力ファイルによって、うまくいくときもあれば間引かれすぎて余計がたつきがひどくなる時も。2,3プルダウンだと pullup 割とうまく動きそうな印象ですが、 4.1 プルダウンで 30fps 化されたファイルは間引かれすぎてがたつきがひどい。

色々調べていってたどり着いたのが、こんな感じ。


ffmpeg -hide_banner -i input.mp4 -c:v hevc_nvenc -bf 3 -g 48 -crf 10 -tag:v hvc1 -filter_complex "dejudder,fps=30000/1001,fieldmatch,decimate,fps=24000/1001" -movflags faststart -c:a copy -n output.mp4


こんな感じになりました。 30fps化されたファイルをきれいに24fps へもどしてくれています。 再生してみると 30fps の時よりなんかしっくり、落ち着いた印象の映像が出てきました。パンニングした時も引っ掛かりがなく、映画風な印象。 

上手く変換できている元の映像は、1,2,3,4,4 みたいな感じで 24fps から Pulldown された 30fps で、 4フレーム先に再生して1フレームダブっているので1回休みみたいな、先に行って休むを繰り返しているので4フレームを120% で早送りしてから1フレームつじつまを合わせているようなある意味落ち着きのない映像ともいえるでしょうか。

さてと。



-filter_complex のところの dejudder はインターレースフィールドがあった時のおまじないかな?

fieldmatch で、同じフィールドが有った時にフラグが立つようです。ただしフラグを立てる作業のみでフィールドを削ることはしてくれないので decimate,fps=24000/1001 でフラグの立っているフィールドを削除する、てな感じなんですかね。

まだ使い始めて数ファイルしか処理していないのでもうちょっと使い込んでみるとまた違った感想が出てくるかもしれません。いまのところは Good Job!! ってなかんじです。まあ何といっても ffmpeg ってホント奥が深い。


by gontamaru48 | 2021-07-20 10:57 | ffmpeg | Trackback | Comments(0)