映像ライブラリのビルド

概要

x264.exeやFFmpeg.exeで使用する映像ライブラリをビルドします。
必要のないものは、パスすることもできます。

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

  1. MSYS\msys.bat を実行。(プロンプト画面(黒い画面)が起動します。)
  2. 下記の黒い部分のコマンドを一行ずつ入力し、Enterキーを押す。
    (一部 static と shared がありますが、よく分からない場合は static を選択してください。)
  3. 処理が完了するまで待つ。
  4. 2~3を繰り返す。

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

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

libvpxのインストール

  1. ダウンロードします。
    1. cd /tmp1
    2. git clone https://chromium.googlesource.com/webm/libvpx.git libvpx
    3. cd libvpx
    4. curl -O# http://mylabo.webcrow.jp/data/diff/libvpx-shared-mingw.diff
    5. patch -p1 < libvpx-shared-mingw.diff
  2. 32bit版をインストールします。
    • static
    • shared
    1. CROSS=i686-w64-mingw32- ./configure --prefix=/x86 --target=x86-win32-gcc --enable-multi-res-encoding --enable-optimizations --enable-runtime-cpu-detect --disable-debug --disable-docs --disable-examples --enable-static --disable-shared --disable-unit-tests --disable-vp10
    2. sed -i -e "/HAVE_PTHREAD_H/s/1/0/" vpx_config.h
    3. make -j3
    4. make install
    5. make distclean
    1. CROSS=i686-w64-mingw32- ./configure --prefix=/x86 --target=x86-win32-gcc --enable-multi-res-encoding --enable-optimizations --enable-runtime-cpu-detect --disable-debug --disable-docs --disable-examples --disable-static --enable-shared --disable-unit-tests --disable-vp10
    2. sed -i -e "/HAVE_PTHREAD_H/s/1/0/" vpx_config.h
    3. make -j3
    4. make install
    5. make distclean
  3. 64bit版をインストールします。
    • static
    • shared
    1. CROSS=x86_64-w64-mingw32- ./configure --prefix=/x64 --target=x86_64-win64-gcc --enable-multi-res-encoding --enable-optimizations --enable-runtime-cpu-detect --disable-debug --disable-docs --disable-examples --enable-static --disable-shared --disable-unit-tests --disable-vp10
    2. sed -i -e "/HAVE_PTHREAD_H/s/1/0/" vpx_config.h
    3. make -j3
    4. make install
    5. make distclean
    1. CROSS=x86_64-w64-mingw32- ./configure --prefix=/x64 --target=x86_64-win64-gcc --enable-multi-res-encoding --enable-optimizations --enable-runtime-cpu-detect --disable-debug --disable-docs --disable-examples --disable-static --enable-shared --disable-unit-tests --disable-vp10
    2. sed -i -e "/HAVE_PTHREAD_H/s/1/0/" vpx_config.h
    3. make -j3
    4. make install
    5. make distclean

以上で完了です。

libx264のインストール

  1. ダウンロードします。
    1. cd /tmp1
    2. git clone git://git.videolan.org/x264.git libx264
    3. cd libx264
  2. 32bit版をインストールします。
    • static
    • shared
    1. ./configure --prefix=/x86 --host=i686-w64-mingw32 --cross-prefix=i686-w64-mingw32- --bit-depth=8 --enable-static --enable-strip --disable-cli --disable-avs --disable-ffms --disable-gpac --disable-lavf --disable-lsmash --disable-swscale
    2. make -j3
    3. make install
    4. make distclean
    1. ./configure --prefix=/x86 --host=i686-w64-mingw32 --cross-prefix=i686-w64-mingw32- --bit-depth=8 --enable-shared --enable-strip --disable-cli --disable-avs --disable-ffms --disable-gpac --disable-lavf --disable-lsmash --disable-swscale
    2. make -j3
    3. make install
    4. make distclean
  3. 64bit版をインストールします。
    • static
    • shared
    1. ./configure --prefix=/x64 --host=x86_64-w64-mingw32 --cross-prefix=x86_64-w64-mingw32- --bit-depth=8 --enable-static --enable-strip --disable-cli --disable-avs --disable-ffms --disable-gpac --disable-lavf --disable-lsmash --disable-swscale
    2. make -j3
    3. make install
    4. make distclean
    1. ./configure --prefix=/x64 --host=x86_64-w64-mingw32 --cross-prefix=x86_64-w64-mingw32- --bit-depth=8 --enable-shared --enable-strip --disable-cli --disable-avs --disable-ffms --disable-gpac --disable-lavf --disable-lsmash --disable-swscale
    2. make -j3
    3. make install
    4. make distclean

以上で完了です。

libx265のインストール

※ shared でインストールする場合は、-DENABLE_SHARED=OFFON にしてください。

  1. ダウンロードします。
    1. cd /tmp1
    2. hg clone https://bitbucket.org/multicoreware/x265 libx265
    3. mkdir -p libx265/build/msys/{8,10,12}bit
  2. 32bit版をインストールします。
    • 8bit
    • 10bit
    • 12bit
    • Multilib
    1. cd /tmp1/libx265/build/msys/8bit
    2. cmake -G "MSYS Makefiles" ../../../source -DCMAKE_INSTALL_PREFIX=/x86 -DHIGH_BIT_DEPTH=OFF -DENABLE_CLI=OFF -DENABLE_SHARED=OFF -DWINXP_SUPPORT=ON
    3. sed -i.orig -e "/Libs.private/d;/Libs/a Libs.private: -lstdc++" x265.pc
    4. make -j3
    5. make install
    6. rm -rf ./*
    1. cd /tmp1/libx265/build/msys/10bit
    2. cmake -G "MSYS Makefiles" ../../../source -DCMAKE_INSTALL_PREFIX=/x86 -DHIGH_BIT_DEPTH=ON -DENABLE_ASSEMBLY=OFF -DENABLE_CLI=OFF -DENABLE_SHARED=OFF -DWINXP_SUPPORT=ON
    3. sed -i.orig -e "/Libs.private/d;/Libs/a Libs.private: -lstdc++" x265.pc
    4. make -j3
    5. make install
    6. rm -rf ./*
    1. cd /tmp1/libx265/build/msys/12bit
    2. cmake -G "MSYS Makefiles" ../../../source -DCMAKE_INSTALL_PREFIX=/x86 -DHIGH_BIT_DEPTH=ON -DMAIN12=ON -DENABLE_ASSEMBLY=OFF -DENABLE_CLI=OFF -DENABLE_SHARED=OFF -DWINXP_SUPPORT=ON
    3. sed -i.orig -e "/Libs.private/d;/Libs/a Libs.private: -lstdc++" x265.pc
    4. make -j3
    5. make install
    6. rm -rf ./*
    1. cd /tmp1/libx265/build/msys/12bit
    2. cmake -G "MSYS Makefiles" ../../../source -DHIGH_BIT_DEPTH=ON -DMAIN12=ON -DEXPORT_C_API=OFF -DENABLE_ASSEMBLY=OFF -DENABLE_CLI=OFF -DENABLE_SHARED=OFF -DWINXP_SUPPORT=ON
    3. make -j3
    4. cp libx265.a ../8bit/libx265_main12.a
    5. cd ../10bit
    6. cmake -G "MSYS Makefiles" ../../../source -DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DENABLE_ASSEMBLY=OFF -DENABLE_CLI=OFF -DENABLE_SHARED=OFF -DWINXP_SUPPORT=ON
    7. make -j3
    8. cp libx265.a ../8bit/libx265_main10.a
    9. cd ../8bit
    10. cmake -G "MSYS Makefiles" ../../../source -DCMAKE_INSTALL_PREFIX=/x86 -DHIGH_BIT_DEPTH=OFF -DEXTRA_LIB="x265_main10.a;x265_main12.a" -DENABLE_CLI=OFF -DEXTRA_LINK_FLAGS=-L. -DLINKED_10BIT=ON -DLINKED_12BIT=ON -DENABLE_SHARED=OFF -DWINXP_SUPPORT=ON
    11. sed -i.orig -e "/Libs.private/d;/Libs/a Libs.private: -lstdc++" x265.pc
    12. make -j3
    13. mv libx265.a libx265_main.a
    14. echo -e "CREATE libx265.a\nADDLIB libx265_main.a\nADDLIB libx265_main10.a\nADDLIB libx265_main12.a\nSAVE\nEND" | ar -M
    15. make install
  3. 64bit版をインストールします。
    • 8bit
    • 10bit
    • 12bit
    • Multilib
    1. cd /tmp1/libx265/build/msys/8bit
    2. cmake -G "MSYS Makefiles" -DCMAKE_TOOLCHAIN_FILE=../toolchain-x86_64-w64-mingw32.cmake ../../../source -DCMAKE_INSTALL_PREFIX=/x64 -DHIGH_BIT_DEPTH=OFF -DENABLE_CLI=OFF -DENABLE_SHARED=OFF -DWINXP_SUPPORT=ON
    3. sed -i.orig -e "/Libs.private/d;/Libs/a Libs.private: -lstdc++" x265.pc
    4. make -j3
    5. make install
    6. rm -rf ./*
    1. cd /tmp1/libx265/build/msys/10bit
    2. cmake -G "MSYS Makefiles" -DCMAKE_TOOLCHAIN_FILE=../toolchain-x86_64-w64-mingw32.cmake ../../../source -DCMAKE_INSTALL_PREFIX=/x64 -DHIGH_BIT_DEPTH=ON -DENABLE_CLI=OFF -DENABLE_SHARED=OFF -DWINXP_SUPPORT=ON
    3. sed -i.orig -e "/Libs.private/d;/Libs/a Libs.private: -lstdc++" x265.pc
    4. make -j3
    5. make install
    6. rm -rf ./*
    1. cd /tmp1/libx265/build/msys/12bit
    2. cmake -G "MSYS Makefiles" -DCMAKE_TOOLCHAIN_FILE=../toolchain-x86_64-w64-mingw32.cmake ../../../source -DCMAKE_INSTALL_PREFIX=/x64 -DHIGH_BIT_DEPTH=ON -DMAIN12=ON -DENABLE_CLI=OFF -DENABLE_SHARED=OFF -DWINXP_SUPPORT=ON
    3. sed -i.orig -e "/Libs.private/d;/Libs/a Libs.private: -lstdc++" x265.pc
    4. make -j3
    5. make install
    6. rm -rf ./*
    1. cd /tmp1/libx265/build/msys/12bit
    2. cmake -G "MSYS Makefiles" -DCMAKE_TOOLCHAIN_FILE=../toolchain-x86_64-w64-mingw32.cmake ../../../source -DHIGH_BIT_DEPTH=ON -DMAIN12=ON -DEXPORT_C_API=OFF -DENABLE_CLI=OFF -DENABLE_SHARED=OFF -DWINXP_SUPPORT=ON
    3. make -j3
    4. cp libx265.a ../8bit/libx265_main12.a
    5. cd ../10bit
    6. cmake -G "MSYS Makefiles" -DCMAKE_TOOLCHAIN_FILE=../toolchain-x86_64-w64-mingw32.cmake ../../../source -DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DENABLE_CLI=OFF -DENABLE_SHARED=OFF -DWINXP_SUPPORT=ON
    7. make -j3
    8. cp libx265.a ../8bit/libx265_main10.a
    9. cd ../8bit
    10. cmake -G "MSYS Makefiles" -DCMAKE_TOOLCHAIN_FILE=../toolchain-x86_64-w64-mingw32.cmake ../../../source -DCMAKE_INSTALL_PREFIX=/x64 -DHIGH_BIT_DEPTH=OFF -DEXTRA_LIB="x265_main10.a;x265_main12.a" -DENABLE_CLI=OFF -DEXTRA_LINK_FLAGS=-L. -DLINKED_10BIT=ON -DLINKED_12BIT=ON -DENABLE_SHARED=OFF -DWINXP_SUPPORT=ON
    11. sed -i.orig -e "/Libs.private/d;/Libs/a Libs.private: -lstdc++" x265.pc
    12. make -j3
    13. mv libx265.a libx265_main.a
    14. echo -e "CREATE libx265.a\nADDLIB libx265_main.a\nADDLIB libx265_main10.a\nADDLIB libx265_main12.a\nSAVE\nEND" | x86_64-w64-mingw32-ar -M
    15. make install

以上で完了です。

libxvidcoreのインストール

  1. ダウンロードし、パッチをあてます。
    1. cd /tmp1
    2. svn checkout http://svn.xvid.org/trunk/xvidcore --username anonymous --password hoge
    3. cd xvidcore
    4. curl -O# http://mylabo.webcrow.jp/data/diff/xvidcore-1.4-win32.diff
    5. patch -p1 < xvidcore-1.4-win32.diff
    6. cd build/generic
    7. ./bootstrap.sh
  2. 32bit版をインストールします。
    1. ./configure --prefix=/x86 --host=i686-w64-mingw32 --disable-pthread
    2. make -j3
    3. make install
    4. make distclean
  3. 64bit版をインストールします。
    1. ./configure --prefix=/x64 --host=x86_64-w64-mingw32 --disable-pthread
    2. make -j3
    3. make install
    4. make distclean

以上で完了です。

NVENCのインストール

NVENCは、FFmpegに含まれましたので、以下の作業は不要です。

FFmpegで使用するNVENCのヘッダーファイルをインストールします。
なお、NVENCを使用するには、NVIDIA製の対応するGPUとデバイスドライバが必要です。
詳しい情報はNVIDIA VIDEO CODEC SDKをご覧ください。

※このライブラリをリンクしたバイナリ(FFmpeg)は、再配布できません。

  1. NVENC SDKをダウンロードします。
    ダウンロード前にNVIDIA VIDEO CODEC SDK LICENSE AGREEMENTへの同意が必要です。
    1. cd /tmp1
    2. curl -L# https://developer.nvidia.com/video-sdk-601 -o nvidia_sdk.zip
    3. 7z x nvidia*
    4. cd nvidia*/Samples/common/inc
  2. 32bit版をインストールします。
    1. mkdir -p /x86/include
    2. cp -fr nvEncodeAPI.h /x86/include
  3. 64bit版をインストールします。
    1. mkdir -p /x64/include
    2. cp -fr nvEncodeAPI.h /x64/include

以上で完了です。

ソースファイルの削除

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

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

  1. cd /tmp1
  2. rm -rf libvpx
  3. rm -rf libx264
  4. rm -rf libx265
  5. rm -rf xvidcore
Comment Form is loading comments...