ffmpegコンパイルガイド

Mac OS XでHomebrewを使わずにffmpegをコンパイル&インストールする方法を説明したい。(最終更新日 2017.08.07

準備するものはXcodeCommand Line Tools for Xcodeである。

XcodeはMac App Storeから、
Command Line Tools for Xcodeは、ターミナル.appでxcode-select –installを実行することでインストールできる。

本ガイドでは音声・映像関連ライブラリをできるだけ取り込むようにしてあるが、コンパイルする外部ライブラリを必要なものに絞り、最後のffmpegのコンフィギュアオプションを編集すれば、より少ない機能にすることもできる。

音声・映像関連ライブラリはデフォルトでインストールされる場所(/usr/local)にインストールしても特に問題はないのだが、大量のファイルが発生する。
そこで、本ガイドではffmpegに関係するディスクイメージを作成して、そこにインストールすることにする。
なお、本ガイドではffmpegとライブラリをstaticリンキングするので、ライブラリは一緒にインストールする必要はない。

ディスクイメージのフォーマットは何でも良いが、筆者はディスク使用効率が良いスパースバンドル・ディスクイメージを利用した。(下図参照)


ffmpegコンパイル&インストール用ディスクイメージの作成

ディスクイメージが出来上がったら、いよいよコンパイル&インストールである。準備項目、音声・映像関連ライブラリ、ffmpeg本体の順に作業を進める。(全てターミナル.appを用いる)

注意:この手順書で説明するffmpegは外部ライブラリによるaacエンコーダーを含むため、再配布は不可である。

補足:ffplayを合わせてコンパイルする場合は、ffmpegのコンパイル&インストールの段階の前でffplayコンパイルのための追記事項を参照されたい。

準備項目
ショートカットの登録(ターミナル.appで以下のコマンドを実行)
                            export VOLNAME=ffmpeg_compile
                            export TARGET="/Volumes/${VOLNAME}"
                            export SRC="${TARGET}/src"
                            export CMPL="${TARGET}/compile"
                            export PATH=${TARGET}/bin:$PATH
                            mkdir -p ${SRC}
                            mkdir -p ${CMPL}
                        
pkg-configのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz
                            cd ${CMPL}
                            tar xf ${SRC}/pkg-config-0.29.2.tar.gz
                            cd pkg-config-0.29.2
                            ./configure --prefix=${TARGET} --with-pc-path=${TARGET}/lib/pkgconfig --with-internal-glib
                            make && make install
                        
yasmのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
                            cd ${CMPL}
                            tar xf ${SRC}/yasm-1.3.0.tar.gz
                            cd yasm-1.3.0
                            ./configure --prefix=${TARGET}
                            make && make install
                        
cmakeのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO https://cmake.org/files/v3.9/cmake-3.9.0.tar.gz
                            cd ${CMPL}
                            tar xf ${SRC}/cmake-3.9.0.tar.gz
                            cd cmake-3.9.0
                            rm Modules/FindJava.cmake
                            curl -OJL "https://docs.google.com/uc?export=download&id=0B2uOKVwFe1AXU1QzdXlvc0VRSEU"
                            patch -p1 < cmake_CMakeLists.patch
                            ./bootstrap --prefix=${TARGET}; make; make install
                        
gitのインストール

OS X EL Capitanから、gitをソースからビルドするのに必要なライブラリ(OpenSSLのヘッダファイル)が削除されたため、エラーが発生するようになった。OpenSSLを入れるという考え方もあるが、本稿では、今後パッケージをダウンロードして用いることにした。

nasmのコンパイル&インストール

OpenH264ライブラリのコンパイルとインストールにはnasmが必要である。よって、これをインストールする。

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO http://www.nasm.us/pub/nasm/releasebuilds/2.13.01/nasm-2.13.01.tar.xz
                            cd ${CMPL}
                            tar xf ${SRC}/nasm-2.13.01.tar.xz
                            cd nasm-2.13.01
                            ./configure --prefix=${TARGET}
                            make && make install
                        
autoconfのコンパイル&インストール

Xvidのコンパイルに必要である。よって、これをインストールする。

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO http://ftp.jaist.ac.jp/pub/GNU/autoconf/autoconf-2.69.tar.xz
                            cd ${CMPL}
                            tar xf ${SRC}/autoconf-2.69.tar.xz
                            cd autoconf-2.69
                            ./configure --prefix=${TARGET}
                            make && make install
                        
automakeのコンパイル&インストール

Xvidのコンパイルに必要である。よって、これをインストールする。

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO http://ftp.jaist.ac.jp/pub/GNU/automake/automake-1.15.tar.xz
                            cd ${CMPL}
                            tar xf ${SRC}/automake-1.15.tar.xz
                            cd automake-1.15
                            ./configure --prefix=${TARGET}
                            make && make install
                        
libtoolのコンパイル&インストール

Xvidのコンパイルに必要である。よって、これをインストールする。

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO http://ftp.jaist.ac.jp/pub/GNU/libtool/libtool-2.4.6.tar.xz
                            cd ${CMPL}
                            tar xf ${SRC}/libtool-2.4.6.tar.xz
                            cd libtool-2.4.6
                            ./configure --prefix=${TARGET}
                            make && make install
                        
mercurialのコンパイル&インストール
x265のソース管理にはmercurialが用いられている。よって、これをインストールする。

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO https://www.mercurial-scm.org/release/mercurial-4.2.2.tar.gz
                            cd ${CMPL}
                            tar xf ${SRC}/mercurial-4.2.2.tar.gz
                            cd mercurial-4.2.2
                            make PREFIX=${TARGET} install-bin
                        
x264コンパイル用y4mファイルの準備

ターミナル.appで以下のコマンドを実行する。

                            cd ${CMPL}
                            curl -LO http://media.xiph.org/video/derf/y4m/sintel_trailer_2k_480p24.y4m
                        
音声・映像関連ライブラリのコンパイル&インストール
lameのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO https://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.5.tar.gz
                            cd ${CMPL}
                            tar xf ${SRC}/lame-3.99.5.tar.gz
                            cd lame-3.99.5
                            ./configure --prefix=${TARGET} --disable-shared
                            make && make install
                        
fdk-aacのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO http://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-0.1.5.tar.gz
                            cd ${CMPL}
                            tar xf ${SRC}/fdk-aac-0.1.5.tar.gz
                            cd fdk-aac-0.1.5
                            ./configure --prefix=${TARGET} --disable-shared
                            make && make install
                        
vo-amrwbencのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO http://sourceforge.net/projects/opencore-amr/files/vo-amrwbenc/vo-amrwbenc-0.1.3.tar.gz
                            cd ${CMPL}
                            tar xf ${SRC}/vo-amrwbenc-0.1.3.tar.gz
                            cd vo-amrwbenc-0.1.3
                            ./configure --prefix=${TARGET} --disable-shared
                            make && make install
                        
opencore-amrのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO https://sourceforge.net/projects/opencore-amr/files/opencore-amr/opencore-amr-0.1.5.tar.gz
                            cd ${CMPL}
                            tar xf ${SRC}/opencore-amr-0.1.5.tar.gz
                            cd opencore-amr-0.1.5
                            ./configure --prefix=${TARGET} --disable-shared
                            make && make install
                        
liboggのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.xz
                            cd ${CMPL}
                            tar xf ${SRC}/libogg-1.3.2.tar.xz
                            cd libogg-1.3.2
                            ./configure --prefix=${TARGET} --disable-shared
                            make && make install
                        
libvorbisのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.xz
                            cd ${CMPL}
                            tar xf ${SRC}/libvorbis-1.3.5.tar.xz
                            cd libvorbis-1.3.5
                            ./configure --prefix=${TARGET} --with-ogg-libraries=${TARGET}/lib --with-ogg-includes=${TARGET}/include/ --disable-shared
                            make && make install
                        
speexのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO http://downloads.xiph.org/releases/speex/speex-1.2.0.tar.gz
                            cd ${CMPL}
                            tar xf ${SRC}/speex-1.2.0.tar.gz
                            cd speex-1.2.0
                            ./configure --prefix=${TARGET} --disable-shared
                            make && make install
                        
opusのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO https://archive.mozilla.org/pub/opus/opus-1.2.1.tar.gz
                            cd ${CMPL}
                            tar xf ${SRC}/opus-1.2.1.tar.gz
                            cd opus-1.2.1
                            ./configure --prefix=${TARGET} --disable-shared
                            make && make install
                        
gsmのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO http://www.quut.com/gsm/gsm-1.0.17.tar.gz
                            cd ${CMPL}
                            tar xf ${SRC}/gsm-1.0.17.tar.gz
                            cd gsm-1.0-pl17
                            mkdir -p ${TARGET}/man/man1
                            mkdir -p ${TARGET}/man/man3
                            mkdir -p ${TARGET}/include/gsm
                            curl -OJL "https://docs.google.com/uc?export=download&id=0B2uOKVwFe1AXVzhaY1dmYlpsWmc"
                            patch -p1 < gsm_Makefile.patch
                            make && make install
                        

注意:インストールされるファイルのパーミッションが444になっているため、更新時はオーバーライドの確認を求められる。

libsoxrのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO http://sourceforge.net/projects/soxr/files/soxr-0.1.2-Source.tar.xz
                            cd ${CMPL}
                            tar xf ${SRC}/soxr-0.1.2-Source.tar.xz
                            cd soxr-0.1.2-Source
                            cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} -DBUILD_SHARED_LIBS=OFF -DWITH_OPENMP=NO -Wno-dev .
                            make && make install
                        
twolameのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO http://downloads.sourceforge.net/twolame/twolame-0.3.13.tar.gz
                            cd ${CMPL}
                            tar xf ${SRC}/twolame-0.3.13.tar.gz
                            cd twolame-0.3.13
                            ./configure --prefix=${TARGET} --disable-shared
                            make && make install
                        
WavPackのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO http://www.wavpack.com/wavpack-5.1.0.tar.bz2
                            cd ${CMPL}
                            tar xf ${SRC}/wavpack-5.1.0.tar.bz2
                            cd wavpack-5.1.0
                            ./configure --prefix=${TARGET} --disable-shared
                            make && make install
                        
libmodplugのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO https://sourceforge.net/projects/modplug-xmms/files/libmodplug/0.8.9.0/libmodplug-0.8.9.0.tar.gz
                            cd ${CMPL}
                            tar xf ${SRC}/libmodplug-0.8.9.0.tar.gz
                            cd libmodplug-0.8.9.0
                            ./configure --prefix=${TARGET} --disable-shared --enable-static
                            make && make install
                        
OpenJPEGのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO https://github.com/uclouvain/openjpeg/archive/v2.1.2.tar.gz
                            cd ${CMPL}
                            tar xf ${SRC}/v2.1.2.tar.gz
                            cd openjpeg-2.1.2
                            cmake -DCMAKE_INSTALL_PREFIX=${TARGET} -DBUILD_SHARED_LIBS:bool=off .
                            make && make install
                        
libwebpのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -kLO https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-0.6.0.tar.gz
                            cd ${CMPL}
                            tar xf ${SRC}/libwebp-0.6.0.tar.gz
                            cd libwebp-0.6.0
                            ./configure --prefix=${TARGET} --disable-shared
                            make && make install
                        
libtheoraのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2
                            cd ${CMPL}
                            tar xf ${SRC}/libtheora-1.1.1.tar.bz2
                            cd libtheora-1.1.1
                            curl -OJL "https://docs.google.com/uc?export=download&id=0B2uOKVwFe1AXczVJUWx3eDVydDQ"
                            patch -p1 < libtheora_configure.patch
                            ./configure --prefix=${TARGET} --disable-asm --with-ogg-libraries=${TARGET}/lib \
                            --with-ogg-includes=${TARGET}/include/ --with-vorbis-libraries=${TARGET}/lib \
                            --with-vorbis-includes=${TARGET}/include/ --disable-shared
                            make && make install
                        
x264のコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

新規インストールの場合

                            cd ${CMPL}
                            git clone git://git.videolan.org/x264.git
                            cd x264
                            ./configure --prefix=${TARGET} --enable-static
                            make fprofiled VIDS="${CMPL}/sintel_trailer_2k_480p24.y4m"
                            #エラーになるので、以下を実行
                            xcrun llvm-profdata merge -output=default.profdata default(TABキーを押し、RETURNキーを押す)
                            # 実行後make fprofiledを再実行
                            make fprofiled VIDS="${CMPL}/sintel_trailer_2k_480p24.y4m"
                            make install
                        

更新インストールの場合

                            cd ${CMPL}/x264
                            git pull
                            ./configure --prefix=${TARGET} --enable-static
                            make clean
                            make fprofiled VIDS="${CMPL}/sintel_trailer_2k_480p24.y4m"
                            make install
                        

Commit ba24899b0bf23345921da022f7a51e0c57dbe73dに更新した際、古いx264がインストールされていると、次のエラーが出た。

                            Undefined symbols for architecture x86_64:
                            "_x264_encoder_open_150", referenced from:
                            _X264_init in libavcodec.a(libx264.o)
                            ld: symbol(s) not found for architecture x86_64
                        

古いx264をmake uninstallすると、問題は解決した。

OpenH264のコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

新規インストールの場合

                            cd ${CMPL}
                            git clone https://github.com/cisco/openh264.git
                            cd openh264
                            git branch -r
                            git checkout origin/openh264v1.7.1
                            make
                            make PREFIX=${TARGET} install-static
                        

更新インストールの場合

                            cd ${CMPL}/openh264
                            git checkout master
                            git pull
                            git branch -r
                            git checkout origin/openh264v1.7.1
                            make clean
                            make
                            make PREFIX=${TARGET} install-static
                        
x265のコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

新規インストールの場合

                            cd ${CMPL}
                            hg clone https://bitbucket.org/multicoreware/x265
                            cd x265/build/linux
                            cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} -DENABLE_SHARED=NO ../../source/
                            make
                            make install
                        

更新インストールの場合

                            cd ${CMPL}/x265
                            hg pull
                            hg update
                            cd build/linux
                            cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} -DENABLE_SHARED=NO ../../source/
                            make clean
                            make
                            make install
                        

Xvidcoreのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

新規インストールの場合

                            cd ${CMPL}
                            svn checkout http://svn.xvid.org/trunk/xvidcore --username anonymous --password anonymous
                            cd xvidcore/build/generic
                            ./bootstrap.sh
                            ./configure --prefix=${TARGET}
                            make && make install
                            rm ${TARGET}/lib/libxvidcore.4.dylib
                        

更新インストールの場合

                            cd ${CMPL}/xvidcore
                            svn update --username anonymous --password anonymous
                            cd build/generic
                            ./bootstrap.sh
                            ./configure --prefix=${TARGET}
                            make clean
                            make && make install
                            rm ${TARGET}/lib/libxvidcore.4.dylib
                        

現在のRev.は2161(8/7/2017現在)である。

svn updateで次のメッセージが出た場合、svn upgradeを実行する。

                            svn: E155036: Please see the 'svn upgrade' command
                            svn: E155036: The working copy at '/Volumes/ffmpeg_compile/compile/xvidcore'
                            is too old (format 29) to work with client version '1.9.4 (r1740329)' (expects format 31). You need to upgrade the working copy first.
                        
libvpxのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

新規インストールの場合

                            cd ${CMPL}
                            git clone https://chromium.googlesource.com/webm/libvpx
                            cd libvpx
                            ./configure --prefix=${TARGET} --disable-shared --enable-static --disable-unit-tests
                            make && make install
                        

更新インストールの場合

                            cd ${CMPL}/libvpx
                            git pull
                            ./configure --prefix=${TARGET} --disable-shared --enable-static --disable-unit-tests
                            make clean
                            make && make install
                        
xavsのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

(subversionチェックアウトで証明書のエラーが出る場合pまたはtを入力する)

                            cd ${CMPL}
                            svn co https://svn.code.sf.net/p/xavs/code/trunk xavs
                            cd xavs
                            curl -OJL "https://docs.google.com/uc?export=download&id=0B2uOKVwFe1AXZXhoRk1PYW85UTg"
                            patch -p1 < xavs_configure.patch
                            ./configure --prefix=${TARGET} --disable-asm
                            make && make install
                        

2011.08.21(Rev.55)で更新が止まっているので、更新の場合の手順は書かない。

freetypeのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO https://sourceforge.net/projects/freetype/files/freetype2/2.8/freetype-2.8.tar.bz2
                            cd ${CMPL}
                            tar xf ${SRC}/freetype-2.8.tar.bz2
                            cd freetype-2.8
                            ./configure --prefix=${TARGET} --without-png --disable-shared
                            make && make install
                        
expatのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO https://sourceforge.net/projects/expat/files/expat/2.2.3/expat-2.2.3.tar.bz2
                            cd ${CMPL}
                            tar xf ${SRC}/expat-2.2.3.tar.bz2
                            cd expat-2.2.3
                            ./configure --prefix=${TARGET} --disable-shared --enable-static
                            make && make install
                        
fontconfigのコンパイル&インストール

freetypeとexpatはfontconfigの依存ライブラリである。

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.12.4.tar.bz2
                            cd ${CMPL}
                            tar xf ${SRC}/fontconfig-2.12.4.tar.bz2
                            cd fontconfig-2.12.4
                            ./configure --prefix=${TARGET} --disable-shared --disable-docs --enable-static --with-add-fonts=/Library/Fonts,~/Library/Fonts
                            make && make install
                        

fribidiのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO http://fribidi.org/download/fribidi-0.19.7.tar.bz2
                            cd ${CMPL}
                            tar xf ${SRC}/fribidi-0.19.7.tar.bz2
                            cd fribidi-0.19.7
                            ./configure --prefix=${TARGET} --disable-shared --enable-static
                            make && make install
                        
libassのコンパイル&インストール

fontconfigとFriBidiは、libassの依存ライブラリである。

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO https://github.com/libass/libass/releases/download/0.13.7/libass-0.13.7.tar.xz
                            cd ${CMPL}
                            tar xf ${SRC}/libass-0.13.7.tar.xz
                            cd libass-0.13.7
                            ./configure --prefix=${TARGET} --disable-shared
                            make
                            make install
                        

libblurayのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

                            cd ${SRC}
                            curl -LO ftp://ftp.videolan.org/pub/videolan/libbluray/1.0.0/libbluray-1.0.0.tar.bz2
                            cd ${CMPL}
                            tar xf ${SRC}/libbluray-1.0.0.tar.bz2
                            cd libbluray-1.0.0
                            ./configure --prefix=${TARGET} --without-libxml2 --disable-shared --disable-bdjava
                            make && make install
                        
vid.stabのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

新規インストールの場合

                            cd ${CMPL}
                            git clone https://github.com/georgmartius/vid.stab.git
                            cd vid.stab
                            mkdir build
                            cd build
                            cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} -DBUILD_SHARED_LIBS=OFF -DUSE_OMP=OFF ..
                            make && make install
                        

更新インストールの場合

                            cd ${CMPL}/vid.stab
                            git pull
                            mkdir -p build
                            cd build
                            cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} -DBUILD_SHARED_LIBS=OFF -DUSE_OMP=OFF ..
                            make && make install
                        
libsnappyのコンパイルとインストール

こちらのページ右上にあるボタンをクリックして、最新版をダウンロード、${SRC}フォルダに保存する。

                        
                            cd ${CMPL}
                            tar xf ${SRC}/google-snappy-1.1.6-11-g77c12ad.tar.gz
                            cd oogle-snappy-1.1.6-11-g77c12ad
                            mkdir build
                            cd build
                            cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} -DBUILD_SHARED_LIBS=OFF ../
                            make && make install
                        
libzeromqのコンパイルとインストール
                            cd ${SRC}
                            curl -LO http://download.zeromq.org/zeromq-3.2.5.tar.gz
                            cd ${CMPL}
                            tar xf ${SRC}/zeromq-3.2.5.tar.gz
                            cd zeromq-3.2.5
                            ./configure --prefix=${TARGET} --enable-static --disable-shared --without-documentation
                            make && make install
                        

libpngのコンパイルとインストール
                            cd ${SRC}
                            curl -LO https://download.sourceforge.net/libpng/libpng-1.6.30.tar.xz
                            cd ${CMPL}
                            tar xf ${SRC}/libpng-1.6.30.tar.xz
                            cd libpng-1.6.30
                            ./configure --prefix=${TARGET} --disable-shared
                            make && make install
                        
libzvbiのコンパイルとインストール

libpngはlibzvbiの依存ライブラリである。

こちらの以下のパッチをRAW(テキスト形式)として保存する。

  • zvbi-fix-clang-support.patch
  • zvbi-fix-static-linking.patch
  • zvbi-ioctl.patch
  • zvbi-ssize_max.patch
                            cd ${SRC}
                            curl -LO https://sourceforge.net/projects/zapping/files/zvbi/0.2.35/zvbi-0.2.35.tar.bz2
                            cd ${CMPL}
                            tar xf ${SRC}/zvbi-0.2.35.tar.bz2
                            cd zvbi-0.2.35
                            patch -p1 < zvbi-fix-clang-support.patch
                            patch -p1 < zvbi-fix-static-linking.patch
                            patch -p1 < zvbi-ioctl.patch
                            patch -p1 < zvbi-ssize_max.patch
                            ./configure --prefix=${TARGET} --disable-dvb --disable-bktr --disable-nls --disable-proxy --without-doxygen --disable-shared
                            make && make install
                        
ffmpegのコンパイル&インストール

ターミナル.appで以下のコマンドを実行する。

新規インストールの場合

                    cd ${CMPL}
                    git clone git://source.ffmpeg.org/ffmpeg.git
                    cd ffmpeg
                

更新インストールの場合

                    cd ${CMPL}/ffmpeg
                    git pull
                    make clean
                

configureオプション(共通)

                    ./configure --prefix=${TARGET} --pkg-config-flags=--static --disable-ffplay --disable-ffserver \
                    --enable-gpl --enable-version3 --enable-nonfree \
                    --enable-libmp3lame --enable-libfdk-aac --enable-libvo-amrwbenc \
                    --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvorbis --enable-libspeex \
                    --enable-libopus --enable-libgsm --enable-libtwolame --enable-libsoxr --enable-libwavpack \
                    --enable-libmodplug --enable-libopenjpeg --enable-libwebp \
                    --enable-libtheora --enable-libx264 --enable-libopenh264 --enable-libx265 \
                    --enable-libxvid --enable-libvpx --enable-libxavs \
                    --enable-libfreetype --enable-fontconfig --enable-libfribidi --enable-libass \
                    --enable-libbluray --enable-libvidstab \
                    --enable-libsnappy --enable-libzmq --enable-libzvbi
                

libsnappyが見つからない場合、ターミナル.appで以下のコマンドを実行する。

                    export LDFLAGS="-L${TARGET}/lib -lc++"
                    export CFLAGS=-I${TARGET}/include
                

configureが成功したら、ターミナル.appで以下のコマンドを実行する。

                    make && make install
                    cd ${TARGET}/bin
                    sudo cp -p ffmpeg ffprobe /usr/local/bin
                

以上で、/usr/local/binディレクトリにffmpegとffprobeがインストールされる。インストール後はディスクイメージのマウントを解除して良い。

ターミナル.appをログアウトした後にffmpegおよびffprobeを再度コンパイルする場合は、ターミナル.appで以下のコマンドを実行する。(ディスクイメージをマウント解除した場合は、マウントする)

                    export VOLNAME=ffmpeg_compile
                    export TARGET="/Volumes/${VOLNAME}"
                    export SRC="${TARGET}/src"
                    export CMPL="${TARGET}/compile"
                    export PATH=${TARGET}/bin:$PATH
                    export PATH=${TARGET}/git/bin:$PATH
                
改訂履歴
2013.10.29 初版

2014.04.09 改訂第2版
  1. gitのバージョンアップ
  2. cmakeのバージョンアップ
  3. mercurialのコンパイル&インストールを追加
  4. fdk-aacのバージョンアップ
  5. libvorbisのバージョンアップ
  6. opusのバージョンアップ
  7. gsmリンク先の訂正
  8. soxr解凍コマンドの修正
  9. libilbcのコンパイル&インストールを追加
  10. xvidcoreをsvnバージョン(1.4系統)に変更 2014.4.21取りやめ
  11. xavsのconfigureスクリプト修正を追加
  12. freetypeのバージョンアップ
  13. fontconfigのバージョンアップ
  14. fribidiのバージョンアップ
  15. libassのバージョンアップ
  16. libblurayのバージョンアップ
  17. vid.stabのコンパイル&インストールを追加
2014.04.20 改訂第3版
  1. git, mercurialを用いないソースコードの入手をcurlで行うように変更
2014.04.21 改訂第4版
  1. x265のコンパイル&インストールを追加(Special Thanks for HOW TO COMPILE FFMPEG/MPLAYER FOR MACOSX
  2. curlコマンドのオプションを追加
  3. libtheoraのconfigureスクリプト修正を追加 (Thanks for HOW TO COMPILE FFMPEG/MPLAYER FOR MACOSX
  4. xvidcoreのバージョンを1.4系のSVNから1.3.3に変更。(初版時のバージョンは1.3.2だったので、バージョンアップになる)
2014.04.23 改訂第5版
  1. libvpxのconfigureオプションから”–as=yasm”を削除
  2. ffmpegのconfigureオプションから”–as=yasm”を削除し、”–pkg-config-flags=–static”を追加。(x265対策)
  3. x265のコンパイル&インストールでx265.pcを編集するのを取りやめ
  4. xavsのSVN URLを修正。
2014.09.02 改訂第6版
  1. yasmのバージョンアップ(1.2 → 1.3)
  2. cmakeのコンパイル手順を変更。(内容は変わらない)
  3. gitのバージョンアップ(1.9.1 → 2.1.0)
  4. mercurialのバージョンアップ(2.9.2 → 3.1)。
    不要になったCFLAGS設定削除
  5. oggのバージョンアップ(1.3.1 → 1.3.2)
  6. gsmのコンパイル手順を変更。(内容は変わらない)
  7. ilbcのコンパイル手順を変更。(内容は変わらない)
  8. libtheoraのコンパイル手順を変更。(内容は変わらない)
  9. x265のビルドディレクトリを変更。(内容は変わらない)
  10. libvpxのコンパイル時にCFLAGSとLDFLAGSをセットするのを取りやめ。
  11. xavsのコンパイル手順を変更。(内容は変わらない)
  12. libiconvパッチのコピー場所を変更。(内容は変わらない)
  13. fontconfig.pcの修正をパッチ化。
  14. libassのバージョンアップ(0.11.1 → 0.11.2)
  15. libass.pcの修正をパッチ化。
  16. libblurayのバージョンアップ(0.5.0 → 0.6.0)
  17. vid.stabのコンパイル手順を変更。
  18. libmodplugのコンパイル&インストールを追加
  19. libwebpのコンパイル&インストールを追加
  20. 以下のconfigureオプション”–enable-static”がデフォルトなものからオプションを削除
    lame, faac, fdk-aac, vo-aacenc, vo-amrwbenc, opencore-amr, ogg, vorbis, speex, opus, twolame, wav pack, OpenJpeg, libtheora, freetype, expat, libass, libbluray
  21. ffmpegのconfigureオプションの以下を削除
    –disable-shared –enable-static –enable-pthreads
2014.10.03 改訂第7版
  1. y4mファイル準備の所の不要なcdコマンド等を削除
  2. faacのコンパイルとffmpegでのイネーブリングを削除
  3. wave packの解凍コマンドオプションを修正(tar xjf -> tar xf)
  4. libwebpの解凍コマンド部分のタイプミスを修正
  5. libilbcのコンパイルとffmpegでのイネーブリングを一時停止(9/18更新のlibilbcコンパイルエラーのため)
2014.10.06 改訂第8版
  1. libilbcのコンパイルとffmpegでのイネーブリングを廃止(9/18更新のlibilbcコンパイルエラーを問い合わせた結果、Opusの方が優れたCodecなので使ってくれと作者に言われたため、廃止する)
  2. 改訂履歴の一部が開かなくなっていた問題を修正
2014.11.03 改訂第9版
  1. OpenJPEGとXvidのコンパイルのため、準備項目にautoconf, automake, libtoolのコンパイルとインストールを追加
  2. パッチファイルのダウンロード形式を変更
  3. xzのバージョンアップ(5.0.5 → 5.0.7)
  4. gitのバージョンアップ(2.1.0 → 2.1.3)
  5. mercurialのバージョンアップ(3.1 → 3.1.2)
  6. openjpegのバージョンアップ(1.5.1 → 1.5.2)とconfigureオプション修正
  7. libwebpのバージョンアップ(0.4.0 → 0.4.2)
  8. xvidcoreのバージョンアップ(1.3.3 → 1.4系SVN)
  9. libvpxのconfigureオプション修正
2015.02.09 改訂第10版
  1. 冒頭の文言の改良、デッドリンクの修正。git本来の機能を用いるための補足追加
  2. cmakeのバージョンアップ(2.8.12.2 → 3.1.2)
  3. autoconf、automake、libtoolのコンパイル&インストールをxzのコンパイル&インストールの後に移動(tar.xzアーカイブがあるため)
  4. xzのバージョンアップ(5.0.7 → 5.2.0)configureオプションに–disable-sharedを追加
  5. nasmのコンパイル&インストールを追加(OpenH264ライブラリのコンパイルとインストール追加のため)
  6. autoconfのバージョンアップ(2.68 → 2.69)
  7. automakeのバージョンアップ(1.11.1 → 1.15)
  8. libtoolのバージョンアップ(2.4.2 → 2.4.5)
  9. gitのバージョンアップ(2.1.3 → 2.3.0)
  10. mercurialのバージョンアップ(3.1.2 → 3.3)
  11. libsoxrのcmakeコマンドに-Wno-devオプションを追加(開発向けメッセージを非表示にする)
  12. OpenJPEGのconfigure.acにautomakeの初期設定subdir-objectsオプションを追加(automakeアップデートによるもの)
  13. x264のgit cloneをmasterではなくstableをチェックアウトするように変更(gitコマンドの追加)
  14. OpenH264のコンパイルとインストールを追加(libavcodecがサポートするのは1.3のため1.3を採用)
  15. freetypeのバージョンアップ(2.5.3 → 2.5.5)
  16. fontconfigのバージョンアップ(2.11.1 → 2.11.92)
  17. libassのバージョンアップ(0.11.2 → 0.12.1)
  18. libblurayのバージョンアップ(0.6.0 → 0.7.0)
2015.02.10 改訂第11版
  1. ffmpegの不要なconfigureオプション(–enable-postproc、–enable-filters、–enable-runtime-cpudetect、–enable-bzlib、–enable-zlib)の削除
  2. 同2015/2/9に追加したオプション(–disable-indev=qtkit、–disable-indev=x11grab_xcb)を検討の結果不要と判断して削除
  3. ffplayコンパイルのための追記事項へのリンク追加
2015.03.26 改訂第12版
  1. コマンドラインツール for Xcodeについての誤記(Xcode 5以降では別インストールが必要という嘘)を訂正
  2. x264再コンパイル時、OpenH264があるとエラーになってしまう問題の対処を追記
  3. HTML定義リスト(dt, dd)にマージンを設定し、見やすくした
2015.06.08 改訂第13版
  1. コード表示にSyntaxHighlighterを採用
  2. cmakeのバージョンアップ(3.1.2 → 3.2.3)
  3. xzのバージョンアップ(5.2.0 → 5.2.1)
  4. gitのバージョンアップ(2.3.0 → 2.4.2)
  5. nasmのバージョンアップ(2.11.06 → 2.11.08)
  6. libtoolのバージョンアップ(2.4.5 → 2.4.6)
  7. mercurialのバージョンアップ(3.3 → 3.4.1)
  8. fdk-aacのバージョンアップ(0.1.3 → 0.1.4)
  9. oggのコンパイル&インストール → liboggのコンパイル&インストール(名称のみ変更)
  10. vorbisのコンパイル&インストール → libvorbisのコンパイル&インストール(名称のみ変更)
  11. libvorbisのバージョンアップ(1.3.4 → 1.3.5)
  12. gsmのバージョンアップ(1.0.13 → 1.0.14)
  13. WavPackのバージョンアップ(4.70.0 → 4.75.0)
  14. libwebpのバージョンアップ(0.4.2 → 0.4.3)
  15. x264のコンパイル&インストールでorigin/stableをチェックアウトするのを取りやめ
  16. x264のコンパイル&インストールに更新の場合の手順を追加。
  17. ffmpegがOpenH264 v1.4をサポートしたので、OpenH264のコンパイル&インストールも1.4対応に変更。
  18. OpenH264のコンパイル&インストールに更新の場合の手順を追加。
    gitコマンドについてgitのHEADがブランチから外れてしまう現象とその直し方を参考にさせてもらった。
  19. x265のコンパイル&インストールに更新の場合の手順を追加。
  20. Xvidcoreのコンパイル&インストールに更新の場合の手順を追加。(現時点での最終更新は2014.11.25)
  21. fontconfigのバージョンアップ(2.11.92 → 2.11.94)
  22. libassのバージョンアップ(0.12.1 → 0.12.2)
  23. libblurayのバージョンアップ(0.7.0 → 0.8.1)
  24. vid.stabのコンパイル&インストールで不要なパッチを止めcmakeコマンドのオプションを変更。
    更新の場合の手順を追加。
  25. ffmpegのコンパイル&インストールで作業手順を分割。更新の場合の手順を追加。
2015.09.14 改訂第14版
  1. cmakeのバージョンアップ(3.2.3 → 3.3.1)
  2. gitのバージョンアップ(2.4.2 → 2.5.2)
  3. mercurialのバージョンアップ(3.4.1 → 3.5.1)
  4. libsoxrのバージョンアップ(0.1.1 → 0.1.2)
  5. libvpxの入手URL変更。
    git clone http://git.chromium.org/webm/libvpx.git → git clone https://chromium.googlesource.com/webm/libvpx
  6. freetypeのバージョンアップ(2.5.5 → 2.6)
  7. fribidiのバージョンアップ(0.19.6 → 0.19.7)
  8. libassのバージョンアップ(0.12.2 → 0.12.3)
2015.12.05 改訂第15版
  1. pkg-configのバージョンアップ(0.28 → 0.29)及びLDFLAGSの追加
  2. cmakeのバージョンアップ(3.3.1 → 3.4.0)
  3. xzのバージョンアップ(5.2.1 → 5.2.2)
  4. gitのバージョンアップ(2.5.2 → 2.6.3)
  5. mercurialのバージョンアップ(3.5.1 → 3.6.1)
  6. opusのバージョンアップ(1.1 → 1.1.1)
  7. wavpackのバージョンアップ(4.75.0 → 4.75.2)
  8. libwebpのバージョンアップ(0.4.3 → 0.4.4)
  9. freetypeのバージョンアップ(2.6 → 2.6.1)
  10. libassのバージョンアップ(0.12.3 → 0.13.0)
  11. libblurayのバージョンアップ(0.8.1 → 0.9.1)
  12. Libtasn1のコンパイル&インストール追加
  13. GMPのコンパイル&インストール追加
  14. Nettleのコンパイル&インストール追加
  15. GnuTLSのコンパイル&インストール追加
  16. RTMPDumpのコンパイル&インストール追加
  17. ffmpegのconfigureオプションにgnutlsとlibrtmpを追加
2016.01.27 改訂第16版
  1. cmakeのバージョンアップ(3.4.0 → 3.4.3)
  2. gitの環境変数指定削除
  3. mercurialのバージョンアップ(3.6.1 → 3.7-rc)
  4. opusのバージョンアップ(1.1.1 → 1.1.2)
  5. libwebpのバージョンアップ(0.4.4 → 0.5.0)
  6. freetypeのバージョンアップ(2.6.1 → 2.6.2)
  7. libassのバージョンアップ(0.13.0 → 0.13.1)
  8. libblurayのバージョンアップ(0.9.1 → 0.9.2)
  9. GMPのコンパイル&インストールでコメント変更。ffmpegではなくrtmpdumpのため
  10. Nettleのコンパイル&インストールでコメント変更。ffmpegではなくrtmpdumpのため
  11. GnuTLSのバージョンアップ(3.4.6 → 3.4.8)
  12. ffmpegのconfigureオプションからgnutlsを削除(ffmpegは、OS XではSecure Transportを用いるため)
2016.02.23 改訂第17版
  1. mercurialのバージョンアップ(3.7-rc → 3.7.1)
  2. vo-aacencのサポート中止(ffmpeg本体のサポート中止による)
  3. freetypeのバージョンアップ(2.6.2 → 2.6.3)
  4. libassのバージョンアップ(0.13.1 → 0.13.2)
  5. Nettleのバージョンアップ(3.1.1 → 3.2)
  6. GnuTLSのバージョンアップ(3.4.8 → 3.4.9)
2016.03.30 改訂第18版
  1. pkg-configのバージョンアップ(0.29 → 0.29.1)及び0.29時に追加したLDFLAGS削除。[参考]
  2. cmakeのバージョンアップ(3.4.3 → 3.5.1)
  3. nasmのバージョンアップ(2.11.08 → 2.12.01)
  4. mercurialのバージョンアップ(3.7.1 → 3.7.3)
  5. autoconf、automake、libtoolのインストール理由からOpenJpegを削除
  6. OpenJPEGのバージョンアップ(1.5.2 → 2.1)及びコンパイル方法変更
  7. x265.pcの修正。(一度修正されたバグの再来。パッチで対応)
  8. expatのバージョンアップ(2.1.0 → 2.1.1)
2016.04.06 改訂第19版
  1. xzのコンパイルとインストールを廃止。
  2. x264コンパイル用y4mファイルをxzアーカイブから変更
  3. WavPackのバージョンアップ(4.75.2 → 4.8)
  4. x264コンパイル時のCould not read profile default.profdata: No such file or directory対策(llvm-profdata mergeコマンド実行)
  5. x265.pcの修正を取りやめ。ソース側で修正されたため。
  6. fontconfigのバージョンアップ(2.11.94 → 2.11.95)及びfontconfig.pcへのパッチを廃止
  7. libass.pcへのパッチを廃止
  8. libblurayで–disable-bdjavaを共通事項に変更
2016.04.19 改訂第20版
  1. cmakeのバージョンアップ(3.5.1 → 3.5.2)
  2. x264コンパイル時のllvm-profdata mergeコマンド実行を新規のみに変更、またエラーが出て再実行になるので、その旨記載
  3. Oil Runtimeコンパイラのコンパイルとインストール追加
  4. RTMPDump(KSVパッチ)とOil Runtimeでシンボルが重複する対策追加
  5. schroedingerのコンパイルとインストール追加
  6. libsnappyのコンパイルとインストール追加
  7. libzeromqのコンパイルとインストール追加
2016.06.28 改訂第21版
  1. mercurialのバージョンアップ(3.7.3 → 3.8.3)
  2. expatのバージョンアップ(2.1.1 → 2.2.0)
  3. fontconfigのバージョンアップ(2.11.95 → 2.12.0)
  4. GMPのバージョンアップ(6.1.0 → 6.1.1)
  5. GnuTLSのコンパイルでDNSSEC root.key作成を追加
2016.09.05 改訂第22版
  1. cmakeのバージョンアップ(3.5.2 → 3.6.1)
  2. nasmのバージョンアップ(2.12.01 → 2.12.02)
  3. mercurialのバージョンアップ(3.8.3 → 3.9.1)
  4. opusのバージョンアップ(1.1.2 → 1.1.3)
  5. OpenJPEGのバージョンアップ(2.1 → 2.1.1)
  6. libwebpのバージョンアップ(0.5.0 → 0.5.1)
  7. x264再コンパイル時にopenH264のライブラリを削除していたのを廃止。
  8. OpenH264の再コンパイル時、gitの操作を変更。(未確定)
  9. freetypeのバージョンアップ(2.6.3 → 2.6.5)
  10. fontconfigのバージョンアップ(2.12.0 → 2.12.1)
  11. Oil Runtimeコンパイラのバージョンアップ(0.4.25 → 0.4.26)
  12. rtmpプロトコルはffmpegでネイティブサポートなので、関係ライブラリのコンパイルとインストールを取り止め。
2016.11.11 改訂第23版
  1. macOS SierraでのCommand line tools for Xcodeのインストールを追加(補足)
  2. bzip2, zlibのコンパイルを廃止(macOS nativeがある)
  3. cmakeのバージョンアップ(3.6.1 → 3.6.3)
  4. mercurialのバージョンアップ(3.9.1 → 4.0)
  5. gsmのバージョンアップ(1.0.14 → 1.0.16)
  6. OpenJPEGのバージョンアップ(2.1.1 → 2.1.2)
  7. xvidcoreの更新時、svn upgradeが必要なケースについて注記追加
  8. libiconvのコンパイルを廃止(macOS nativeがある)
  9. freetypeのバージョンアップ(2.6.5 → 2.7)
  10. fontconfigのコンパイルオプションを変更
  11. libassのバージョンアップ(0.13.2 → 0.13.4)
  12. schroedingerのダウンロードリンク切れ修正
2016.12.19 改訂第24版
  1. cmakeのバージョンアップ(3.6.3 → 3.7.1)及びそれに伴うpatch更新
  2. mercurialのバージョンアップ(4.0 → 4.0.1)
  3. speex正式バージョンに変更(1.2rc1 → 1.2.0)及びそれに伴うconfigureオプション一部削除
  4. WavPackのバージョンアップ(4.80.0 → 5.0.0)
2017.01.18 改訂第25版
  1. 頭書きと図の見直し
  2. cmakeのバージョンアップ(3.7.1 → 3.7.2)
  3. mercurialのバージョンアップ(4.0.1 → 4.0.2)
  4. fdk-aacのバージョンアップ(0.1.4 → 0.1.5)
  5. opencore-amrのバージョンアップ(0.1.3 → 0.1.4)
  6. libwebpのバージョンアップ(0.5.1 → 0.5.2)
  7. freetypeのバージョンアップ(2.7 → 2.7.1)
  8. fontconfigとfreetype、expatの依存関係を追記
  9. libassとfontconfig、fribidiの依存関係を追記
  10. libassのバージョンアップ(0.13.4 → 0.13.6)
2017.03.21 改訂第26版
  1. 準備項目のショートカット登録でmkdirに-pオプションを追加
  2. mercurialのバージョンアップ(4.0.2 → 4.1.1)
  3. opencore-amrのバージョンアップ(0.1.4 → 0.1.5)
  4. opusのバージョンアップ(1.1.3 → 1.1.4)
  5. WavPackのバージョンアップ(5.0.0 → 5.1.0)
  6. libwebpのバージョンアップ(0.5.2 → 0.6.0)
  7. OpenH264のチェックアウトをorigin/openh264v1.7に変更
  8. XvidcoreのRev.変更(2148 → 2159)
  9. libblurayのバージョンアップ(0.9.2 → 1.0.0)
  10. libpngのコンパイル&インストール追加(libzvbiの依存ライブラリ)
  11. libzvbiのコンパイル&インストール追加
2017.06.26 改訂第27版
  1. pkg-configのバージョンアップ(0.29.1 → 0.29.2)
  2. cmakeのバージョンアップ(3.7.2 → 3.8.2)
  3. nasmのバージョンアップ(2.12.02 → 2.13.01)
  4. mercurialのバージョンアップ(4.1.1 → 4.2.1)
  5. opusのバージョンアップ(1.1.4 → 1.2)
  6. libmodplugのバージョンアップ(0.8.8.5 → 0.8.9.0)
  7. x264の「xcrun llvm-profdata merge…」手順変更
  8. freetypeのバージョンアップ(2.7.1 → 2.8)
  9. fontconfigのバージョンアップ(2.12.1 → 2.12.3)
  10. libassのバージョンアップ(0.13.6 → 0.13.7)
  11. 外部ライブラリとしてのschroedingerを廃止
  12. libpngのバージョンアップ(1.6.28 → 1.6.29)
2017.08.07 改訂第28版
  1. cmakeのバージョンアップ(3.8.2 → 3.9.0)
  2. mercurialのバージョンアップ(4.2.1 → 4.2.2)
  3. Opusのバージョンアップ(1.2 → 1.2.1)
  4. gsmのバージョンアップ(1.0.16 → 1.0.17)
  5. expatのバージョンアップ(2.2.0 → 2.2.3)
  6. fontconfigのバージョンアップ(2.12.3 → 2.12.4)
  7. snappyのバージョンアップ(1.1.3 → 1.1.6-11-g77c12ad)
  8. libpngのバージョンアップ(1.6.29 → 1.6.30)

参考サイト

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL