ffmpegのエンコードの設定は何が最適か

libx265 ではエンコード速度に難あり(crf:28 --> speed=0.0392x) 圧縮するとしたら libx265 だが、実用上で最適な変換方法を分析する。
結論、crf 18-23 程度, preset veryfast が良いかも。
環境
- RaspberryPi4
- サンプル動画:mt2s 形式(5 分)
コマンド
$ ffmpeg -fflags +discardcorrupt -i input.m2ts -c:a copy -bsf:a aac_adtstoasc -vsync 1 -c:v libx264 -crf 23 -preset medium output.mp4
# -fflags +discardcorrupt : 破損したフレームを破棄してくれる
# -bsf:a aac_adtstoasc : 音声がaacの場合に必要らしい
# -vsync 1 : これを付けると音声ズレしない
# -c:a copy : 音声はそのまま複製
# -c:v libx264 : 映像はH264でコーデックする / -c:v copy : そのまま複製
# -crf : 画質を決める。デフォルトは23で、低いほど品質が良い(容量は大)
# -preset: エンコード速度と品質もしくは出来上がるファイルサイズを決定する
# [ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo]
- エンコードなし
- エンコードは一瞬で終わる。容量は 10%減でほぼ変わらない。
- Mac で再生不可。
frame= 9076 fps=471 q=-1.0 Lsize= 490297kB time=00:05:03.52 bitrate=13232.8kbits/s speed=15.7x
video:483009kB audio:6982kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.062370%
- crf 23
- 遅い。画質は問題なし。
frame= 9101 fps=8.7 q=-1.0 Lsize= 141513kB time=00:05:03.56 bitrate=3818.8kbits/s dup=27 drop=0 speed=0.291x
video:136518kB audio:4678kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.224830%
- crf 28
- 画質がやや気になる
frame= 9101 fps= 11 q=-1.0 Lsize= 68991kB time=00:05:03.56 bitrate=1861.8kbits/s dup=27 drop=0 speed=0.362x
video:61692kB audio:6982kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.462220%
- crf 23, preset ultrafast
- ほぼ 1 倍で速いが、音ズレあり
frame= 9101 fps= 32 q=-1.0 Lsize= 335892kB time=00:05:03.63 bitrate=9062.2kbits/s dup=27 drop=0 speed=1.08x
video:328653kB audio:6982kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.076388%
- crf 22, preset veryfast
- ultrafast よりは遅いが音ズレなし。容量は 60%程度。
frame= 9101 fps= 22 q=-1.0 Lsize= 137178kB time=00:05:03.56 bitrate=3701.8kbits/s dup=27 drop=0 speed=0.733x
video:129879kB audio:6982kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.231860%
- crf 28, preset veryfast
- ultrafast 並の速度、容量 10%、だがやはり画質が気になる。
frame= 9101 fps= 27 q=-1.0 Lsize= 56109kB time=00:05:03.56 bitrate=1514.1kbits/s dup=27 drop=0 speed=0.914x
video:48809kB audio:6982kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.568771%