X264

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

テンプレート:小文字 テンプレート:Infobox

x264(エックスニーロクヨン)は、動画をH.264 (MPEG-4 AVC) ビデオストリームへエンコードするためのプログラムである。GPLライセンスの下でリリースされている。

x264にはコマンドラインプログラムの通称x264cliとライブラリのlibx264が含まれている。コマンドラインプログラムはコンパイルオプションによってはFFmpegを利用したデコードに対応している。また、libx264を利用した多数のフロントエンドやプラグインなどが存在する(VLCHandBrakeFFmpegffdshowWindows VFW向けのx264vfwx264guiなど)。

特徴

  • フリーでオープンソース
  • 高画質
    • MSU MPEG-4 AVC/H.264 Video Codec Comparison 2011 において商用やWebMなどの他のエンコードも含め最も高画質・高圧縮率と評価されている[1]
    • PSNRSSIMだけでなく、心理視覚も重視している。
    • 一般的に使われている8ビット深度だけでなく、9ビット深度や10ビット深度でのエンコードにも対応している。8ビット深度のソース映像であっても、高ビット深度を使うことでフィルタを使わずにバンディングが抑制できるほか、計算誤差が低くなるためファイルサイズも小さくなる。
    • 一般的に使われているYUV4:2:0色空間だけでなく、YUV4:2:2色空間やYUV4:4:4色空間でのエンコードにも対応している。4:4:4のソース映像をすっきりとした画質のままエンコードできる。
  • 高速
  • 低レイテンシ
    • 周期的イントラ更新 (--intra-refresh) を使うことによりI (DR) フレームが必要無くなるため、参照フレームを使いながらも動画の各フレームの圧縮後のサイズを一定にすることができる。
  • 高機能
    • ビットレート指定もしくは品質指定でエンコードができる。2パス以上にも対応している。
    • 速度別のプリセットとソース別・目的別のチューン設定がある。
    • プロファイル制限・レベル制限に対応している。これにより制限の多いデバイス向けにエンコードすることができる。
    • Blu-ray Disc互換のエンコードが可能である。オーサリングツールと組み合わせれば、Blu-ray Discを作ることができる。
    • Iフレームのみでエンコードが可能である (--keyint 1)。任意の箇所でカットできるようになるので、プロ用途として使うことができる。
    • ロスレスエンコードが可能である (--qp 0)。また、RGB色空間にも対応している (--output-csp rgb)。スクリーンキャプチャや無劣化保存などに使うことができる。
    • ステレオ3D動画のフレーム形式の定義に対応している (--frame-packing)。
  • 高普及
    • YoutubeやFacebookを含む多数のWebサイトにより使われている。
    • VLCHandBrakeMediaCoderTMPGEncなど多くのエンコーディングソフトウェアに含まれている。

主立った履歴

  • r240: マルチスレッドに対応
  • r264: ロスレスエンコードに対応
  • r570: インターレースに対応
  • r581: Video for Windowsの公式対応削除
  • r607: マルチスレッド時の分割方法を変更(スライスベースからフレームベースへ)
  • r733: YV12への変換機能を削除(あらかじめYV12形式に変換しておく必要がある、AviSynthを使う)
  • r1177: 新しいプリセットシステムを導入
  • r1327: 重み付けPフレーム予測に対応
  • r1379: FFmpegを介した入力をサポート
  • r1380: 周期的イントラ更新を追加
  • r1480: Blu-ray互換エンコードをサポート
  • r1657: OpenGOPをサポート
  • r1666: 9または10bitエンコードのサポート(出力のみの対応で入力は8bitまで)
  • r1731: x264における10bitのほぼ完全なサポート(10bitまでの入力にも対応)
  • r1746: libx264からx264cliにDTS compressionを移動(EditBoxを正常に扱えない環境のためにx264cli側のmp4 muxerオプションとして残す)
  • r1786: カスタムクロッピング矩形に対応
  • r1801: 初のGoogle Code-Inパッチによるリビジョンアップ
  • r1829: ステレオ3D動画をサポート(非MVC)
  • r1880: Intel AVXをサポート
  • r1881: どんな入力でもVBVを守れるようになった
  • r1935: 「--bluray-compat」が導入された(Blu-ray互換エンコード機能の強化)
  • r1961: MBAFFにおけるInterをサポート
  • r2017: YUV4:4:4エンコードをサポート
  • r2018: RGBエンコードをサポート
  • r2081: YUV4:2:2エンコードをサポート

x264vfw

x264のVfW (Video for Windows) 版であったが、r581において削除された。H264/AVCエンコーダとなっているもののfourccは"X264"であり、VfWという古い仕様による1-frame-in 1-frame-outという制約に合わせるためのハックがあった。VfWの後継にDirectShowがあるが、そちらへの対応も行われていない。 現在は外部プロジェクトとしてBugMasterが開発を継続しており、fourccもいくつかから選べるようになっている。

分散エンコード

x264は直接は分散エンコードをサポートしていない。しかし、x264をバックエンドとして使う分散エンコードソフトウェアのx264farm及びその派生の1passに特化したx264farm-spが存在する。ライセンスはx264と同じくGPLライセンスであり、言語はOCamlで書かれている。

再生における問題

他のエンコーダがサポートしていないようなH.264の機能にも対応しているため、エンコードのオプションによっては再生環境側のバグや未対応によって再生できなかったり問題が起きる場合がある。

Weight-Pに関しては、既に最新版で問題のあるデコーダは残っていないと思われる。9~10ビット深度に関しては最新版では問題ないソフトウェアデコーダが増えているが、ハードウェアデコーダや組み込み機器においては未対応のものが多い。4:4:4や4:2:2色空間に関しては対応状況がまちまちである。RGBは対応しているデコーダは今のところFFmpegのみ。

以下では代表的なH.264デコーダであるFFmpeg、Flash Player、CoreAVC、DivX H.264 Decoderにおける問題を示す。

  • ロスレス
    • Flash Player
    • CoreAVC 1.7以前
    • DivX H.264 Decoder
  • Weight-P
    • Flash Player 10.0以前(映像乱れ)
    • CoreAVC 1系(映像乱れ)
  • 9〜10ビット深度
    • FFmpeg 0.7以前(映像乱れ)
    • Flash Player 11.1以前(右側にマゼンダの縦線が入る。視聴には問題無し)
    • CoreAVC 2系
  • YUV4:4:4色空間
    • FFmpeg 0.7以前
    • Flash Player(真っ黒)
    • CoreAVC
    • DivX H.264 Decoder
  • YUV4:2:2色空間
    • FFmpeg 0.8以前(映像乱れ)
    • CoreAVC
  • RGB
    • FFmpeg 0.8以前(色がおかしい)
    • Flash Player
    • CoreAVC
    • DivX H.264 Decoder

関連項目

参照

  1. Seventh MPEG-4 AVC/H.264 Video Codecs Comparison - Standard Version

外部リンク

テンプレート:Software-stubpt:H.264#x264