x264(エックスニーロクヨン)は、動画をH.264 (MPEG-4 AVC) ビデオストリームへエンコードするためのプログラムである。GPLライセンスの下でリリースされている。
x264にはコマンドラインプログラムの通称x264cliとライブラリのlibx264が含まれている。コマンドラインプログラムはコンパイルオプションによってはFFmpegを利用したデコードに対応している。また、libx264を利用した多数のフロントエンドやプラグインなどが存在する(VLC・HandBrake・FFmpeg・ffdshow・Windows VFW向けのx264vfw・x264guiなど)。
特徴 フリーでオープンソース 高画質 MSU MPEG-4 AVC/H.264 Video Codec Comparison 2011 において商用やWebMなどの他のエンコードも含め最も高画質・高圧縮率と評価されたSeventh MPEG-4 AVC/H.264 Video Codecs Comparison - Standard Version。 PSNRやSSIMだけでなく、心理視覚も重視している。 一般的に使われている8ビット深度だけでなく、10ビット深度でのエンコードにも対応している。8ビット深度のソース映像であっても、高ビット深度を使うことでフィルタを使わずにバンディングが抑制できるほか、計算誤差が低くなるためファイルサイズも小さくなる。 一般的に使われているYUV4:2:0色空間だけでなく、YUV4:2:2色空間やYUV4:4:4色空間でのエンコードにも対応している。4:4:4のソース映像をすっきりとした画質のままエンコードできる。 高速 マルチスレッド対応 各種CPUのSIMDに対応(MMX, SSE, SSE2, SSE3, SSSE3, SSE4, AVX, 3DNow!, XOP, Altivec, NEONなど) 低レイテンシ 周期的イントラ更新 (--intra-refresh) を使うことによりI (DR) フレームが必要無くなるため、参照フレームを使いながらも動画の各フレームの圧縮後のサイズを一定にすることができる。 高機能 ビットレート指定もしくは品質指定でエンコードができる。2パス以上にも対応している。 速度別のプリセットとソース別・目的別のチューン設定がある。 プロファイル制限・レベル制限に対応している。これにより制限の多いデバイス向けにエンコードすることができる。 Blu-ray Disc互換のエンコードが可能である。オーサリングツールと組み合わせれば、Blu-ray Discを作ることができる。 Iフレームのみでエンコードが可能である (--keyint 1)。任意の箇所でカットできるようになるので、プロ用途として使うことができる。 AVC-Intra互換のエンコードが可能である (--avcintra-class 50/100/200)。 ロスレスエンコードが可能である (--qp 0)。また、RGB色空間にも対応している (--output-csp rgb)。スクリーンキャプチャや無劣化保存などに使うことができる。 ステレオ3D動画のフレーム形式の定義に対応している (--frame-packing)。 高普及 YoutubeやFacebookを含む多数のWebサイトにより使われている。 VLCやHandBrake、MediaCoder、TMPGEncなど多くのエンコーディングソフトウェアに含まれている。
欠点としては、12bitに未対応、AVC-Ultraに未対応 (パッチありx264-devel - PATCH - Support 12bit and add ultra calss x264-devel 2015年9月28日)、MPEG-4 MVCに未対応、MPEG-4 WVC (MPEG-4 Part 29。MPEG-4 AVCのサブセット)に未対応なことが挙げられる。
主立った履歴 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エンコードをサポート r2257: QNXに対応 r2286: GPUエンコードをサポート r2355: AVC-Intraをサポート
x264vfw x264のVfW (Video for Windows) 版。r581において公式サポートは中断している。VfWの関連にDirectShowがあるが、そちらへの対応も行われていない。 外部プロジェクトとしてBugMasterが開発を継続しており、fourccもいくつかから選べるようになっていたが、2017年を最後に更新はされていない。
分散エンコード x264は、直接には複数コンピュータでの分散エンコードをサポートしていない。しかし、x264をバックエンドとして使う分散エンコードソフトウェアのx264farm及びその派生の1passに特化したx264farm-spが存在する。ライセンスはx264と同じくGPLライセンスであり、言語はOCamlで書かれている。
参照
外部リンク x264 Home Page Index of /pub/x264/binaries/ - VideoLANによるx264バイナリ配布ページ 猫科研究所(felid labo) - changelogの日本語訳を掲載
pt:H.264#x264