AviUtlでiPhone向けに動画変換する際の設定のキモ

追記:この記事はiPhone 3G・3GS向けに書かれたものです。iPhone 4はこの限りではありません。

  • 本記事ではAviUtl+拡張x264出力(GUI)を使います
  • 初心者の方にはもっと簡便なソフトがたくさんあるのでそちらをどうぞ
  • ということで準備段階の説明は省きます

iPhoneの仕様には

  • H.264ビデオ:最高1.5Mbps、640×480ピクセル、毎秒30フレーム、H.264バージョンのLow-Complexityベースラインプロファイル(最高160KbpsのAAC-LCオーディオ)、48kHz、.m4v、.mp4、.movファイルフォーマットのステレオオーディオ
  • H.264ビデオ:最高2.5Mbps、640×480ピクセル、毎秒30フレーム、最高レベル3.0のベースラインプロファイル(最高160KbpsのAAC-LCオーディオ)、48kHz、.m4v、.mp4、.movファイルフォーマットのステレオオーディオ

とあります。なぜH.264についての記述が2つに分けて書いてあるのかは不明。
上の記述を要素ごとにすると、

  • 2.5Mbpsまで
  • 640x480まで
  • 30fpsまで
  • レベル3.0まで
  • ベースラインプロファイル
  • 最高160KbpsのAAC-LCオーディオ

となります。


この内制限が比較的ゆるいのは

  • 2.5Mbpsまで

5Mbps(固定ビットレート)でも特にコマ落ちなく再生可能(本体が熱を持ちますが)

  • 640x480まで

720x480までOK

  • 最高160KbpsのAAC-LCオーディオ

AACの規格上限の320kbpsが再生可能。さらにHE-AACAAC-HEv2)も再生可能


対して

  • 30fpsまで
  • レベル3.0まで
  • ベースラインプロファイル

はキッチリと守る必要があります。
躓きやすいのは「ベースラインプロファイル」でしょう(「レベル3.0」は他の要素を守れば結果的に適合します)。オプションだと

  • 「--8x8dct --partitions "i8x8"」を使わない
  • 「--bframes 0」
  • 「--no-cabac」

です。


では今まで書いたことを実際にGUIの画面で示してみます。私の普段の設定です。
ビットレート」タブ

常に最大ビットレートで変換しても容量の無駄なので品質基準VBRを使っています。ソースにもよりますが設定が23の場合、解像度640x480で1.5〜2.5Mbpsの範囲にだいたい収まります。長時間の動画などは設定を26程度にして容量を抑えます(1〜1.5Mbps程度)。解像度も下げるとより効果的です
音声の設定はソースに合わせてどうぞ
「レート設定」タブ

特になし
「マクロブロック」タブ

「8x8 離散コサイン変換」「8x8 イントラ動き補償」のチェックを外す
Bフレームの最大連続数」を0に するとその下の設定値は無視されますが一応全て無効に
「詳細」タブ

「CABAC」のチェックを外す
「サブピクセル精度」はiPhone向け以外の時は7ですが、Bフレームを使わないので6に
「その他」タブ

特になし
「コマンド」タブ

特になし
「拡張設定」タブ

特になし
文字列にするとこんな感じ。

--crf 23 --aq-strength 0 --psy-rd 0:0 --qpstep 8 --scenecut 54 --min-keyint 1 --keyint 300 --partitions "p8x8,b8x8,p4x4,i4x4" --b-adapt 0 --ref 0 --direct "auto" --me "umh" --subme 6 --merange 16 --threads "auto" --no-cabac --cqm "flat"