H.264によるBlu-Rayエンコーディング
こんにちわこんにちわ。ブルーレイエンコーディングについてまとめてみる。例のごとく、x264を使用。
Bru-Ray規格等
まずはBlu-Rayで認められている規格について。例えば、
1280x720 23.976fps 16:9 Progressive
という感じにエンコするのであれば、x264は以下の設定が標準(最高値)になります。
--Level 4.1 --vbv-maxrate 40000 --vbv-bufsize 30000 --ref 6 --keyint 24 --slices 4
さらに色の特性値は、
--colorprim "bt709" --transfer "bt709" --colormatrix "bt709"
を指定する必要があります。他には
- 8bit(4:2:0)の色空間しか使用できない
- MainもしくはHigh profilesしか使用できない
- Bフレームの最高値は3
などの重要事項があります。
BDの規格に必要なパラメータ
bluray-compat:x264の設定をBD互換のあるものに強制変更します。bframeを3以下、1080であればrefを4以下に720・576・480であれば6以下、bpyramidをnormalかstrictに、weightpを1以下、audを1、nalhrdをvbrに設定します。とりあえずこれを書いておけばおkです。
level:解像度等にあわせて設定します。720dえあれば4.0も指定可能ですが、特に問題がなければ4.1が無難です。
vbv-maxrate vbv-bufsize:それぞれ、ビットレートとバッファサイズの最大値の指定です。解像度やlevelによって指定値が異なりますので注意して下さい。
sar:1440×1080にエンコする場合は4:3にしてください。ここはいつも通りの設定で問題ありません。
slices:levelを4.1に指定した場合は4、もしくはそれ以上の値を指定して下さい。それ以外であれば無視することもできますし、1を指定することも可能です。
output xxx.264:出力はRaw形式です。mp4出力等にするとパラメータが正確に動作しません。
簡単テンプレ
ということで以下のように設定すればとりあえずおk。(現時点では、という意味で)
x264 --crf 19 --preset veryslow --tune animation --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 24 --open-gop --slices 4 --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 -o out.264
ファイルサイズの都合上、ビットレート指定の1passエンコがよく出ていますが、crfを使用することも可能です。お好みのほうをどうぞ。
参考リンク
Encoding Video for Blu-Ray using H264/AVC – Doom9's Forum
丁寧にまとめられた表があります。あとインタレ、プルダウン等の話題も。たぶん最新情報。
Authoring a professional Blu-ray Disc with x264
x264の設定項目等のテンプレ詳細。これを参考にすれば問題なし。