試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

mencoderのx264エンコードオプションに関する覚え書き(2009/8/20現在)

ここではmencoderでx264ライブラリを用いてH.264の映像をエンコードする際のx264固有オプションに関してを扱うが、ここに書いたものはWeb上の情報やマニュアルを参考にしたメモに過ぎず、もしかすると誤りが含まれているかもしれない。また、一部のよく分かっていない用語をそのまま書いているところがある点や、オプション変更を実際に色々試して検証したわけではない点にも注意。
mencoder/mplayerはx264サポートを有効にしてビルドされている必要があり、ディストリによっては(libx264と、場合によりその開発パッケージをインストール後)手動でビルドする必要があるかもしれない。
インストールされているmencoderがx264をサポートしているかは

$ mencoder -ovc help | grep 264
   x264     - H.264 encoding

のようにして確認する。上のように「x264」に関する出力があればOK。

品質に関するオプションと効果

  • bitrate=[ビットレート]: ビットレート指定
  • bframes=3(4): 一般的に3から4?Bフレームの最大連続数・高いと高圧縮低画質・低いと低圧縮高画質で既定値は0なので、品質優先では指定しなくてもよい?
  • b_pyramid: bframesを2以上にしたときに品質向上
  • me=umh: 「esa」は遅すぎる上に品質がこれより上がるわけでもないため、使用しないことにする
  • weight_b: クロスフェード・暗転フェードなどのシーンでビットレート節約
  • subq=7: 最も遅いが最も高品質
  • frameref=6: 3までは速度と品質向上のバランスがよく、6以上での品質向上はほとんどなく遅くなるだけ

partitions=all」の指定については、指定なしよりも遅い上に低品質という情報もあるため、省略時が最も最適化されている(付ける必要がないどころか、付けないほうがむしろ良い)ようだ。マニュアルによると、「p4x4」はsubq値5以上かつ低解像度でのみ有用らしい。既定ではこれだけ外れている。
以下のオプションは使用できていたバージョン(mplayer 1.0-1.rc2.18.2plf2009.0)もあったが、新しいもの(mplayer 1.0-1.rc2.23.r28791.2plf2009.1の時点)では利用できず、マニュアルページにも載っていない(何らかの理由で廃止されたと思われる)。

  • brdo: 一種の最適化(subqの要求値: 6以上)
  • bime: 一種の最適化(Bフレーム使用時のみ)

(2009/12/23)-bframes=に関する記述を修正

好み・詳細設定など

以下は好みで指定するものや、動画ごとに細かく指定するようなオプション。

  • 8x8dct: 画質向上・High Profileとなるらしい
  • nofast_pskip: 既定値onで画質向上するが、特有のブロックノイズが出ることがあるため、場合によっては切る
  • nodct_dacimate: 細かい部分をきちんと出したいなら付ける?
  • deadzone_intra: 高画質にしたいときに低くする・既定値11・範囲0-32・画面内輝度量子化デッドゾーン
  • deadzone_inter: 効果は上に近い・既定値21・範囲0-32・画面間輝度量子化デッドゾーン
  • qcomp: ビットレート変動幅に影響・動きの少ない動画では低くするとよいが、動きの激しい部分の画質は悪くなる・既定値0.6・範囲0-1

マルチパス(複数回エンコード)

2PASSもしくはそれ以上の回数でエンコードする場合、1回目のときに「turbo=1」を指定すると、出力される動画の品質を劣化させることなく最初のエンコードを高速化する。
1回目には「pass:1」、2回目には「pass:2」を付ける。
3回以上のエンコードは、ほとんどの場合必要ない(品質向上はしない)?

関連記事:

参考URL:

関連URL:

使用したバージョン:

  • MPlayer 1.0-1.rc2.18.2plf2009.0, 1.0-1.rc2.23.r28791.2plf2009.1