子豚の嫁探し

3ヶ月毎に嫁を探す豚野郎です。

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:1440x1080にエンコする場合は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の設定項目等のテンプレ詳細。これを参考にすれば問題なし。