2012/09/15

現在運用中のx264オプション

現在運用中のエンコード環境でのx264オプションに関する記事です。

前提条件と仕様

・AVSは以前の記事に掲載した物と組み合わせて使用しています。
*別記事:現在運用中のAvisynth Scriptのマスタ

・アニメ用(実写は縮みにくく時間が掛かるのでエンコードしません)
*別記事:MPEG2を再エンコードせずにCMスキップ用チャプター&字幕付の(m2v+aac).mp4を作成する

・24fps(24000/1001 fps) CFR

・x264のバージョンはr2085 64bitを使用(しばらく更新していないので古いです)

・ハードウェア環境
CPU:Intel Core i7-860
MEM:DDR3-1333 12GB
GPU:AMD Radeon HD5850 x2

x264オプション(ソース別の設定)
*解像度・ピクセルアスペクト、fps、最大ビットレートの制限設定
*別記事:x264でビットレートを制限するメリット

【1440x1080 24fps 16:9 (地上波)】
--vbv-maxrate 17254 --vbv-bufsize 17254
--input-res 1440x1080 --sar 4:3 --fps 23.976025

【1920x1080 24fps 16:9 (BS)】
--vbv-maxrate 24576 --vbv-bufsize 24576
--input-res 1920x1080 --sar 1:1 --fps 23.976025

【1920x1080 24fps 16:9 (BS11)】
--vbv-maxrate 18432 --vbv-bufsize 18432
--input-res 1920x1080 --sar 1:1 --fps 23.976025

x264オプション(共通の設定)
*画質の設定、キーフレーム挿入頻度、マルチスレッド関係等

--crf 20 --qpmin 0 --qpmax 69 --qpstep 69 --qcomp 0.85
--no-mbtree --aq-mode 0 --aq-strength 0 --psy-rd 0.4:0
--bframes 3 --b-adapt 2 --b-pyramid "strict" --weightb --ref 3 --mixed-refs
--direct "auto" --me "umh" --subme 7 --merange 32 --trellis 2
--8x8dct --partitions "p8x8,b8x8,i8x8,i4x4"

--min-keyint 1 --keyint 240 --scenecut 60

--threads 8 --thread-input

使用例

avs2pipemod.exe -rawvideo "%TEMP_AVS%" | x264.exe 「各種オプション引数」 -o "%TEMP_MP4%" - --input-res 1440x1080 --sar 4:3 --fps 23.976025 2> "%OUTENCLOG%"

地上波ソース(1440、16:9)でのBATコマンド例です。
32bit版Avisynthと64bit版x264を組み合わせる為、avs2pipemod.exeを使用して標準入出力経由で繋いでいます。
*別記事:avs2yuvで32bit版Avisynthと64bit版x264を組み合わせてエンコード高速化

また、最後の
2> "%OUTENCLOG%"
で標準エラー出力をログとして記録しています。エンコード中の進捗をコンソールに表示したい場合は外して下さい。

メモ

・ほぼソースと同等の画質を維持する為にcrfは20に設定しています。大体1話当たりの平均サイズは以下のようになります。
  BS :550-800MB
 地上波:350-600MB
番組によっては縮まない事もありますが、その分は縮みやすい番組が穴埋めしてくれるので問題ありません。無理に縮めると画質の劣化が目立つのでcrfは番組に寄らず20にしています。

*但しFFT3DGPUを軽く掛ける事が前提となっているので、NR未処理のソースをエンコードするとサイズが大きくなるので注意してください。

・submeは7に設定していますが、エンコード速度を考えると6でも問題ないと思います。(当然サイズは増加します)

・デフォルト有効のmbtree(Macroblock Tree Ratecontrol)は背景がスクロールするテロップの周辺など、かなりの箇所で破綻やノイズが発生したので無効にしています。
mbtree有効/無効でエンコード後のサイズが同等になるようにして検証しても気になったので、アニメ向きのオプションではないのかもしれません。
(最近のビルドでは改善しているかもしれません)

・PSNRやSSIMは当てにならないので、私の主観で画質を判断して設定しています。

最後に

このオプションは最高の設定ではありません。CPUの演算能力は有限ですし、ソースの特性・Avisynthでの前処理・評価者で画質が変わってきます。またx264は日々改良されているので同じオプションでもrevによって挙動が異なります。
この記事を足掛りにしてベターな設定を見つけて下さい。

関連記事

エンコード関連記事一覧