ffmpeg 8.0以降から外部ライブラリで使えるエンコーダ。デコーダは8.0から外部ライブラリ不要で使える。FFmpegのProres HQプロファイルよりもCVVDPスコア当たりでサイズ小さく、エンコード速度は速く、デコード負荷はProresと同程度になりHDR10のメタデータにも対応している。OpenAPVはOpen Advanced Professional Video Codecの略語。

特徴

  • 最大8K解像度まで対応
  • APVコーデックの422-10、422-12、444-10、444-10、4444-12、400-10プロファイルに完全準拠。4444がアルファチャンネル
  • ARM NEONおよびx86(64bit)SEE/AVX CPUの最適化による少ない複雑さ
  • タイルベースのマルチスレッディング
  • HDR10/10+やユーザー定義フォーマットを含む様々なメタデータ
  • 一定のQP(CQP)および平均ビットレート(ABR)制御アルゴリズム
  • エンコーダの典型的なターゲットビットレート設定のためのAPVファミリー構成

関連記事

仕様書

基本コマンド

品質指定とプリセットを既定値で明示指定する。
ffmpeg -i input -c:v liboapv -qp 32 -preset 2 output.mov

処理速度とサイズでバランスよく設定する。SD解像度だと-qp 18位がよいかも。8ビット素材なら遅くても可逆圧縮のffv1のほうがサイズが小さくなることもある。
ffmpeg -i input -c:v liboapv -qp 22 -preset 0 output.mov

ビットレート指定する。-b:vはアラートが出るので-oapv-params形式の指定もできる。こちらは単位のkが省略される。映像に対してビットレートが高すぎるとその値に届かないこともある。
ffmpeg -i input -c:v liboapv -b:v 50M -preset 0 output.mov
ffmpeg -i input -c:v liboapv -oapv-params bitrate=50000 -preset 0 output.mov

プロファイルを変更してビット深度やピクセルフォーマットを指定する。既定値の422-10以外は明示的に指定しないと変更できない。映像のビット深度やピクセルフォーマットが出力と異なると自動設定されないのでformatフィルタであらかじめ変換する。
ffmpeg -i input -vf format=yuv422p12le -c:v liboapv -qp 22 -preset 0 -oapv-params profile=422-12 output.mov

アルファチャンネルを使うときは4:4:4サブサンプリングになる。
ffmpeg -f lavfi -i testsrc=d=1,format=yuva444p10le -c:v liboapv -qp 32 -preset 2 -oapv-params profile=4444-10 output.mov
ffmpeg -i input -vf format=yuva444p10le -c:v liboapv -qp 32 -preset 2 -oapv-params profile=4444-10 output.mov

公式ドキュメント:FFmpeg Codecs Documentation : liboapv

オプション

  • preset[int]
    • 0, fastest:mediumより少しサイズが大きく、ビットレート当たりの品質が少し悪く、処理速度が速い
    • 1, fast:fastestとほとんど変わらない
    • 2, medium, default:既定値
    • 3, slow
    • 4, placebo:ものすごく処理速度が遅い
  • qp[int]
    指定できる値は12ビット深度でも同じ。32から20半ばまでCVVDPスコアが大きく改善し、20前半で上昇幅が小さくなる。1下がるほどにサイズは5-10%程度増える
    既定値:32
    範囲:0から63
  • oapv-params[dictionary]
    oapv_app_encの設定を指定できるが、指定できるのは少ない

profile一覧

  • 422-10: YCbCr422 10bit:既定値
  • 422-12; YCbCr422 12bit
  • 444-10: YCbCr444 10bit
  • 444-12; YCbCr444 12bit
  • 4444-10: YCbCr4444(アルファ) 10bit
  • 4444-12; YCbCr4444(アルファ) 12bit
  • 400-10: YCbCr400 (モノクロ) 10bit

oapv_app_enc
oapv_app_enc --help

標準入力に対応していないので無圧縮のy4mファイルを用意する。
ffmpeg -f lavfi -i testsrc2=d=10,format=yuv422p10le -strict -1 test.y4m
oapv_app_enc -i test.y4m -w 320 -h 240 -d 10 -z 25 --input-csp 2 -o output.apv

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)