x264のビルド

概要

x264を実行可能な形式(x264.exe)にビルドします。
32bit版、64bit版の両方をビルドします。

作業手順は以下のとおりです。

  1. MSYS\msys.bat を実行。(プロンプト画面(黒い画面)が起動します。)
  2. 下記の黒い部分のコマンドを一行ずつ入力し、Enterキーを押す。
  3. 処理が完了するまで待つ。
  4. 2~3を繰り返す。

なお、ビルド作業を自動化したスクリプトもあります。
詳しくは、ビルド用スクリプトをご覧ください。

※ご注意※
  • このページの内容は、こちらで構築した環境をベースに記述されています。
    その他の環境では正常に動作しない可能性があります。
  • このページの内容は、2016/04/09 時点のものです。
    備忘録的なページのため、内容に誤りがある可能性があります。

L-SMASHのインストール

※x264で MP4出力 する場合に必要です。
※既にインストール済みの場合はパスできます。

詳しくは、L-SMASHのインストールをご覧ください。

ソースコードの入手

  • 最新版の場合
    1. cd /tmp1
    2. git clone git://git.videolan.org/x264.git x264
    3. cd x264
  • 過去のリビジョンの場合
    XXXX の部分にリビジョン番号を指定し、以下のように実行します。
    1. cd /tmp1
    2. git clone git://git.videolan.org/x264.git x264
    3. cd x264
    4. git checkout `git log --format=%h --reverse | sed -ne XXXXp`

パッチの適用

必要のない場合はパスできます。

  1. 適用したいパッチ(hoge.diff)を MSYS\tmp\x264 に入れます。
  2. 以下のように入力し、Enterキーを押します。
    1. patch -uNp1 < hoge.diff
    ※パッチを当てる前に戻したい場合は、以下のように入力します。
    1. patch -uNp1 -R < hoge.diff

ビルドの開始

  1. 32bit版をインストールします。
    1. PKG_CONFIG_PATH=/x86/lib/pkgconfig ./configure --prefix=/x86 --host=i686-w64-mingw32 --cross-prefix=i686-w64-mingw32- --bit-depth=8 --enable-strip
    2. make -j3
    3. make install
    4. make distclean
  2. 64bit版をインストールします。
    1. PKG_CONFIG_PATH=/x64/lib/pkgconfig ./configure --prefix=/x64 --host=x86_64-w64-mingw32 --cross-prefix=x86_64-w64-mingw32- --bit-depth=8 --enable-strip
    2. make -j3
    3. make install
    4. make distclean

最適化オプションは、configureのオプションとして記述します。

x264のMP4-muxerは、L-SMASHがインストールされている場合はL-SMASHが使用されます。
GPACを使用したい場合は、--disable-lsmash を追加してください。

ライブラリの名前(この部分)を変更するには、configure実行後、MSYS\tmp\x264 にある x264_config.h を編集します。
(Hファイルは、ワードパッド等のテキストエディタで開くことが出来ます。)
#define X264_VERSION "r2106 07efeb4"""の中を書換えてください。

以上で完了です。
ビルドに成功すると、以下のディレクトリにバイナリ(x264.exe)が生成されます。

  • 32bit版: MSYS\local\x86\bin
  • 64bit版: MSYS\local\x86_64\bin

ソースファイルの削除

MSYS\tmp にはx264のソースファイルが残っています。
必要ない場合は、削除しても構いません。

削除手順は以下のとおりです。

  1. cd /tmp1
  2. rm -rf x264
Comment Form is loading comments...