アットウィキロゴ

覚書

x264オプションについて

fullhelpを読み解いてみる。
使用したx264.exeはここから入手。

書式

x264 [options] -o outfile infile

オプションについては別記。

outfileは拡張子により出力形式が変わる。
  • .264・・・H.264で符号化された生データ。これを直接再生できたりする物は多分ないのでは?
  • .mkv・・・Matroska形式の映像ファイルフォーマット。x264の開発者(の一部?)に人気
  • .flv・・・Flash Videoフォーマット。ニコニコ動画やyoutubeでおなじみの形式
  • .mp4・・・MPEG-4で規定されているファイルフォーマット。ISO/IECで規定されているだけあって結構普及している
  • .3gp・・・3GPPが規格を定めているファイルフォーマット。オプションのコーデックとしてH.264がある
  • .3g2・・・3GPP2が規格を定めているファイルフォーマット。3GPPとは名前は似ているけど別の標準化団体だったのね
  • .mov .qt・・・QuickTime Movieのコンテナファイル

入力は基本的にAvisynthスクリプト(.avs)を使って加工した映像をYV12形式のRAWデータで渡してやるのが楽。
他には.y4m(YUV4MPEG2形式)も可。lavfやらffmsも読めるそうだけど、こちらは何か調べねば。

オプション(Presets)

x264には様々なオプションがあるけれど、項目が多すぎて何から設定すればいいのか判りにくい。
とりあえず手軽にエンコードしたい、という目的ならまずはいくつかあるプリセットから試すといいのだろう。

--profile

H.264で規定されているプロファイルを指定するもの。プロファイルによりエンコードに使用する機能を制限する事で、機器の能力を超えて再生できないようなデータにならないようにする。
  • baseline・・・再生負荷の重い処理を一切省いたもの。省電力第一の携帯端末(ipod等)でも再生できるようにエンコードされる
  • main・・・ほぼ全ての機能が使用可能でPSPでも再生できるように
  • high・・・8x8DCTとカスタムマトリクスも使用可能になる。PCの再生環境ならコレ
  • high10・・・10ビット画像フォーマットまで使用できるようになるが、一般人がそんなデータを扱う時代は来るのだろうか?
ちなみにどのプロファイルでも可逆圧縮は出来ないようだ。qp=0のロスレスエンコードをするならプロファイルの設定はしてはいけないのかな。

ちなみに、再生環境の指標としてレベルという規定があり指定するオプション--levelもあるけれど、これは再生データに埋め込むレベルの数値を強制するだけなので、実際は--vbv-maxrateや--vbv-bufsize、--refを制限する必要がある。

--preset

エンコード速度に影響の大きいオプションをそれぞれの設定値に変更する。
  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium
  • slow
  • slower
  • veryslow
  • placebo
と10段階あり、これらの設定だけでも画像の品質とエンコードの速度のバランスは悪くない。
変更されるオプションの値を比較してみれば、その変化による影響がなんとなくわかる。

--tune

画質を評価する目安としてSSIMやPSNRがあるけれど、これは静止画の厳密な評価基準ではあっても動画の絶対的な基準とはならない。
で、その感覚的な部分で画質を変化させようとするのがこのオプション。
(最後の2つは当てはまらないけど)
  • film・・・実写向け
  • animation・・・アニメ向け
  • grain・・・ノイズ状の画面効果を残したい時に
  • stillimage・・・静止画向け
  • psnr・・・PSNRの値だけで画像を評価
  • ssim・・・SSIMの値だけで画像を評価
  • fastdecode・・・再生時の負荷を下げる
  • zerolatency・・・ストリーミング用?

--slow-firstpass

通常2パス以上のエンコードをする際、最初に行う1pass目を「手抜き」して早く処理しようとする。
このオプションはその「手抜き」をさせない指定。
私個人の感覚的にはmbtreeへの影響を考えるとこの「手抜き」はしない方がいいと思うのですがね~
(2パス以上のエンコードなら問題なさそうですが)
最終更新:2011年06月01日 14:58