[FFmpeg] ライブラリ全部入り

# ffmpeg 全部入り
5年くらい前に仕事で``FFmpeg``に出会って以来、公私ともどもずっとお世話になっているので、そろそろ本気出して出来る限り多くのライブラリをリンクさせようと思ったのが9月初旬。

その結果わかったことは、**めっちゃ時間かかる**ということでした。

~~まだ終わってませんが、本日(9/24)いったん投稿。~~

## 共通の処理
``ffmpeg: error while loading shared libraries: libfaac.so.0: cannot open shared object file: No such file or directory`` のように、ライブラリが見つからないと言われたら

```shell-session
$ ldd /usr/local/bin/ffmpeg
```
で調べたのち、``ld.so.conf``を編集し再読み込み

```shell-session:/etc/ld.so.conf
# vi /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib

# ldconfig -v
```

``ffmpeg``の``configure``でつまずいたら、``config.log``を確認して原因を調査する。



## --enable-avisynth
windowsビルドする場合は入れます。でもAvisynth 2.6になってるので注意！

## --enable-cuda

## --enable-chromaprint

```
$ wget https://bitbucket.org/acoustid/chromaprint/downloads/chromaprint-1.3.1.tar.gz
$ tar zxvf chromaprint-1.3.1.tar.gz
$ cd chromaprint-1.3.1
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local .
$ make -j4

Linking CXX shared library libchromaprint.so
[ 50%] Built target chromaprint_p
/usr/bin/ld: /usr/local/lib/libavcodec.a(dct.o): relocation R_X86_64_32S against `.text' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libavcodec.a: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
make[2]: *** [src/libchromaprint.so.1.3.0] Error 1
make[1]: *** [src/CMakeFiles/chromaprint.dir/all] Error 2
make: *** [all] Error 2

```



## --enable-fontconfig
```
# yum install fontconfig fontconfig-devel
```

## --enable-frei0r
```
$ git clone git://code.dyne.org/frei0r.git
$ cd frei0r
$ autoreconf -i
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install 
```

## --enable-gnutls （未完）

## --enable-ladspa
### SDL2
[SDL version 2.0.3 (stable)](https://www.libsdl.org/download-2.0.php)

```
$ git clone https://github.com/swh/ladspa.git
$ cd ladspa
$ autoreconf -i
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install 
```


## --enable-libaacplus（未完）
### FFTW
```shell-session:fftw
# yum install fftw fftw-devel fftw-static
```

```shell-session:libaacplus
$ wget http://tipok.org.ua/downloads/media/aacplus/libaacplus/libaacplus-2.0.2.tar.gz
$ tar zxvf libaacplus-2.0.2.tar.gz
$ cd libaacplus-2.0.2
$ autoreconf -i
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
sbr.h:165: error: expected specifier-qualifier-list before ‘SBR_TON_CORR_EST’
```

## --enable-libass
```shell-session:libass
$ git clone https://github.com/libass/libass.git
$ cd libass
$ autoreconf -i
$ ./configure --prefix=/usr/local --enable-shared --enable-static
checking for FRIBIDI... configure: error: Package requirements (fribidi >= 0.19.0) were not met:

No package 'fribidi' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables FRIBIDI_CFLAGS
and FRIBIDI_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

```

### fribidi

http://fribidi.org/

```shell-session:fribidi
$ wget http://fribidi.org/download/fribidi-0.19.7.tar.bz2
$ tar jxvf fribidi-0.19.7.tar.bz2
$ cd fribidi-0.19.7
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

```shell-session:libass
$ cd libass
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install

```


## --enable-libbluray

### libudfread
```shell-session:libudfread
$ git clone git://git.videolan.org/libudfread.git
$ cd libudfread
$ autoreconf -i
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

```shell-session:libbluray
$ git clone git://git.videolan.org/libbluray.git
$ cd libbluray
$ cp -r libudfread/src libbluray/contrib/libudfread/src
$ autoreconf -i
$ ./configure --prefix=/usr/local --enable-shared --enable-static --enable-udf --disable-bdjava
$ make
# make install
```



## --enable-libbs2b
```shell-session
# yum install libbs2b libbs2b-devel
```


## --enable-libcaca
```shell-session
# yum install libcaca libcaca-devel
```

## --enable-libcelt
```shell-session
# yum install celt celt-devel
```

``ERROR: libcelt must be installed and version must be >= 0.11.0.``

```shell-session
# yum erase celt celt-devel
$ git clone https://git.xiph.org/celt.git
$ cd celt
$ autoreconf -i
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```


## --enable-libdc1394
http://damien.douxchamps.net/ieee1394/libdc1394/

```shell-session
$ git clone git://libdc1394.git.sourceforge.net/gitroot/libdc1394/libdc1394/
$ cd libdc1394/libdc1394
$ autoreconf -i
$ autoreconf -i
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```


## --enable-libfaac
```shell-session
$ wget http://downloads.sourceforge.net/faac/faac-1.28.tar.bz2
$ tar jxvf faac-1.28.tar.bz2
$ cd faac-1.28
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make

mpeg4ip.h:126: error: new declaration ‘char* strcasestr(const char*, const char*)’

$ emacs ./common/mp4v2/mpeg4ip.h

lines 126
- char *strcasestr(const char *haystack, const char *needle);
+ //char *strcasestr(const char *haystack, const char *needle);

$ make
# make install

```

## --enable-libfdk-aac
http://www.iis.fraunhofer.de/en/ff/amm/impl/fdkaaccodec.html

```shell-session
$ git clone https://github.com/mstorsjo/fdk-aac
$ cd fdk-aac
$ ./autogen.sh
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

## --enable-libflite （未完）
http://www.speech.cs.cmu.edu/flite/download.html

```shell-session
$ wget http://www.speech.cs.cmu.edu/flite/packed/flite-1.4/flite-1.4-release.tar.bz2
$ tar jxvf flite-1.4-release.tar.bz2
$ cd flite-1.4-release
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
mkdir: cannot create directory `shared_os': File exists
make[1]: *** [../build/x86_64-linux-gnu/lib/libflite_cmu_time_awb.so] Error 1
make[1]: *** Waiting for unfinished jobs....
mkdir: cannot create directory `shared_os': File exists
make[1]: *** [../build/x86_64-linux-gnu/lib/libflite_cmu_us_slt.so] Error 1
make: *** [build/x86_64-linux-gnu/obj//.make_build_dirs] Error 2
```

## --enable-libfreetype
http://www.freetype.org/

```shell-session
$ git clone git://git.sv.nongnu.org/freetype/freetype2.git
$ cd freetype2
$ sh autogen.sh
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

## --enable-libfribidi
``--enable-libass``参照


## --enable-libgme
https://code.google.com/p/game-music-emu/

```shell-session
$ wget https://game-music-emu.googlecode.com/files/game-music-emu-0.6.0.tar.bz2
$ tar jxvf game-music-emu-0.6.0.tar.bz2
$ cd game-music-emu-0.6.0
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local .
$ make
# make install
```

## --enable-libgsm
http://www.quut.com/gsm/

```shell-session
$ wget http://www.quut.com/gsm/gsm-1.0.14.tar.gz
$ tar zxvf gsm-1.0.14.tar.gz
$ cd gsm-1.0-pl14/
$ make
# cp lib/libgsm.a /usr/local/lib
# cp inc/gsm.h /usr/local/include
```

## --enable-libiec61883
http://www.dennedy.org/libiec61883/

```shell-session:libiec61883
$ git clone git://dennedy.org/libiec61883.git
$ cd libiec61883
$ ./configure --prefix=/usr/local --enable-shared --enable-static
checking for LIBRAW1394... configure: error: Package requirements (libraw1394 >= 1.2.1) were not met:

No package 'libraw1394' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables LIBRAW1394_CFLAGS
and LIBRAW1394_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
```

### libraw1394
```shell-session:libraw1394
$ git clone git://dennedy.org/libraw1394.git
$ cd libraw1394
$ autoreconf -i
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

### /usr/bin/ld: cannot find -lavc1394
http://sourceforge.net/projects/libavc1394/

```shell-session:libavc1394
$ svn checkout http://svn.code.sf.net/p/libavc1394/code/trunk libavc1394
$ cd libavc1394/libavc1394
$ sh bootstrap
$ --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

```shell-session:libiec61883
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

## --enable-libilbc
https://github.com/TimothyGu/libilbc

```shell-session
$ git clone https://github.com/TimothyGu/libilbc.git
$ cd libilbc
$ autoreconf -i
$ make
# make install
```


## --enable-libkvazaar
https://github.com/ultravideo/kvazaar

```shell-session
$ git clone https://github.com/ultravideo/kvazaar.git
$ cd kvazaar
$ cd src
$ export CC=gcc

$ make
cc1: error: unrecognized command line option "-fno-lto"
make: *** [strategies/sse2/picture-sse2.o] Error 1
make: *** Waiting for unfinished jobs....

$ export CC=clang
/usr/bin/ld: cannot find -lgcc_s
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [kvazaar] Error 1
make: *** Waiting for unfinished jobs....

$ export CC=gcc
$ make
# make install

```

## --enable-libmfx （未完）
```shell-session
$ git clone https://github.com/lu-zero/mfx_dispatch.git
$ autoreconf -i
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

```text:ffmpeg/config.log
gcc -Wl,--as-needed -Wl,-z,noexecstack -I/usr/local/include -L/usr/local/lib -o /tmp/ffconf.KwrAwxCz /tmp/ffconf.qW3Nk1pj.o -lmfx -lstdc++ -ldl -L/usr/local/lib -lkvazaar -lm -lrt -lilbc -lgsm -L/usr/local/lib -lfribidi -lglib-2.0 -L/usr/local/lib -lfreetype -lfontconfig -L/usr/local/lib -lfdk-aac -lfaac -lcaca -lcelt0 -lcelt0 -lbs2b -L/usr/local/lib -lass -lraw1394 -lavc1394 -lrom1394 -liec61883 -lm -lz -pthread -lrt
/usr/local/lib/libmfx.so: undefined reference to `mfx_allocate_va'
/usr/local/lib/libmfx.so: undefined reference to `mfx_deallocate_va'
collect2: ld returned 1 exit status
ERROR: libmfx not found using pkg-config
```


```text:libmfx.so
$ objdump -S /usr/local/lib/libmfx.so | grep mfx_allocate_va
0000000000006110 <mfx_allocate_va@plt>:
        void *handle = mfx_allocate_va(session);
    6d00:       e8 0b f4 ff ff          callq  6110 <mfx_allocate_va@plt>

$ objdump -S /usr/local/lib/libmfx.so | grep mfx_deallocate_va
0000000000006240 <mfx_deallocate_va@plt>:
                mfx_deallocate_va(pHandle->internal_hwctx);
    85dd:       e8 5e dc ff ff          callq  6240 <mfx_deallocate_va@plt>


$ pkg-config --list-all | grep libmfx
libmfx                libmfx - Intel Media SDK Dispatched static library
```





## --enable-libmodplug
http://modplug-xmms.sourceforge.net/

```shell-session
$ git clone git://git.code.sf.net/p/modplug-xmms/git modplug-xmms-git
$ cd modplug-xmms-git/libmodplug
$ autoreconf -i
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

## --enable-libmp3lame
http://lame.sourceforge.net/

```shell-session
$ wget http://jaist.dl.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
$ tar zxvf lame-3.99.5.tar.gz
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

## --enable-libnut （保留）

## --enable-libopencore-amrnb, --enable-libopencore-amrwb
http://sourceforge.net/projects/opencore-amr/files/opencore-amr/

```shell-session
$ wget http://jaist.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-0.1.3.tar.gz
$ tar zxvf opencore-amr-0.1.3.tar.gz
$ cd opencore-amr-0.1.3
$ ./configure --prefix=/usr/local --enable-shared --enable-static --enable-amrnb-encoder --enable-amrnb-decoder
$ make
# make install
```

## --enable-libopencv
```shell-session
# yum install opencv-devel
```

## --enable-libopenh264
https://github.com/cisco/openh264

```shell-session
$ git clone https://github.com/cisco/openh264.git
$ cd openh264
$ make
make: nasm: Command not found
make: *** [codec/common/x86/cpuid.o] Error 127
make: *** Waiting for unfinished jobs....

# yum install nasm

$ make
# make install
```
/usr/localにインストールされます

## --enable-libopenjpeg
```shell-session
# yum install openjpeg openjpeg-devel openjpeg-libs
```

## --enable-libopus
```shell-session
$ git clone https://git.xiph.org/opus.git
$ cd opus
$ autoreconf -i
$ ./configure --prefix=/usr/local --enable-shared --enable-static --enable-custom-modes --enable-float-approx --enable-intrinsics --enable-assertions --enable-fuzzing
$ make
# make install
```

## --enable-libpulse（保留）
http://www.freedesktop.org/wiki/Software/PulseAudio/

```shell-session:libpulse
$ git clone http://anongit.freedesktop.org/git/pulseaudio/pulseaudio.git
$ cd pulseaudio
$ ./bootstrap.sh
./bootstrap.sh: line 46: intltoolize: command not found

# yum install intltool

$ ./bootstrap.sh
autopoint: *** The AM_GNU_GETTEXT_VERSION declaration in your configure.ac file requires the infrastructure from gettext-0.18.1 but this version is older. Please upgrade to gettext-0.18.1 or newer.

$ gettext --version
gettext (GNU gettext-runtime) 0.17
```
~~gettext のアップデートはちょっとやだな～~~
``/usr/local``にインストールする

```shell-session:gettext
$ wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.6.tar.gz
$ tar zxvf gettext-0.19.6.tar.gz
$ cd gettext
$ ./configure --prefix=/usr/local
$ make
# make install
```
~~インストール保留~~

```shell-session:libpulse
$ ./bootstrap.sh
configure.ac:374: error: Libtool version 2.4 or higher is required
```
~~インストール保留~~

### Libtool
http://www.gnu.org/software/libtool/

```shell-session:libtool
$ git clone git://git.savannah.gnu.org/libtool.git
$ ./bootstrap
bootstrap:   error: Prerequisite 'help2man' not found. Please install it, or
bootstrap:          'export HELP2MAN=/path/to/help2man'.
bootstrap:   error: Prerequisite 'makeinfo' not found. Please install it, or
bootstrap:          'export MAKEINFO=/path/to/makeinfo'.
bootstrap:   error: HACKING explains how to obtain these prerequisite programs:
bootstrap:          Program    Min_version Homepage
bootstrap:          -----------------------------------------------------------
bootstrap:          help2man   1.29        http://www.gnu.org/s/help2man
bootstrap:          make       3.81        http://www.gnu.org/s/make
bootstrap:          makeinfo   4.8         http://www.gnu.org/s/texinfo
bootstrap:          xz         4.999.8beta http://tukaani.org/xz
bootstrap:          autoconf   2.62        http://www.gnu.org/s/autoconf
bootstrap:          automake   1.11.1      http://www.gnu.org/s/automake
bootstrap:          -----------------------------------------------------------
```

#### help2man, texinfo

```shell-session:help2man,texinfo
# yum install help2man texinfo
```

```shell-session:libtool
# yum erase libtool
$ ./bootstrap
$ ./configure --prefix=/usr
$ make
# make install
```

```shell-session:libpulse
$ ./bootstrap.sh
./configure: line 9408: syntax error near unexpected token `2.4'
./configure: line 9408: `LT_PREREQ(2.4)'
```
インストール保留



## --enable-libquvi（未完）
http://quvi.sourceforge.net/

```shell-session
$ git clone https://github.com/mogaal/libquvi.git
$ cd libquvi
$ ./configure --prefix=/usr/local --enable-shared --enable-static
checking for a2x... no
configure: error: a2x is required to create man pages when building from git

# yum install asciidoc
$ ./configure --prefix=/usr/local --enable-shared --enable-static
configure: error: Package requirements (lua-5.1 >= 5.1) were not met:

No package 'lua-5.1' found

# yum install lua-devel
$ ./configure --prefix=/usr/local --enable-shared --enable-static
checking for libproxy... no
configure: error: Package requirements (libproxy-1.0 >= 0.3.1) were not met:

No package 'libproxy-1.0' found

# yum install libproxy-devel
Removing:
 libproxy-devel         x86_64         0.3.0-10.el6         base         3.6 k

NG
```

## --enable-librtmp
https://rtmpdump.mplayerhq.hu/

```shell-session
$ git clone git://git.ffmpeg.org/rtmpdump
$ cd rtmpdump
$ cd librtmp
$ vi Makefile /* 必要あれば */
$ make
# make install
```

## --enable-libschroedinger
http://diracvideo.org/2012/01/schroedinger-1-0-11/

```shell-session:libschroedinger
$ wget http://diracvideo.org/download/schroedinger/schroedinger-1.0.11.tar.gz
$ tar zxvf schroedinger-1.0.11.tar.gz
$ ./configure --prefix=/usr/local --enable-shared --enable-static
checking for ORC... no
configure: error: orc-0.4 >= 0.4.16 is required
```

### Orc
http://code.entropywave.com/orc/

```shell-session:orc
$ git clone http://anongit.freedesktop.org/git/gstreamer/orc.git
$ cd orc
$ ./autogen.sh
configure.ac:1: error: Autoconf version 2.68 or higher is required
```

### autoconf
```shell-session:autoconf
$ wget http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz
$ tar zxvf autoconf-latest.tar.gz
$ cd autoconf-2.69
$ ./configure --prefix=/usr/local
$ make
# make install
```

```shell-session:orc
$ autoreconf -i
$ ./configure --prefix=/usr/local --enable-shared --enable-static -disable-gtk-doc
$ make
# make install
```

```shell-session:libschroedinger
$ export LDFLAGS='-L/usr/local/lib'
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```
``liborc.so``がうまくリンクできないときは``# ldconfig -v``を実行する


## --enable-libshine（保留）
```shell-session
$ wget http://jaist.dl.sourceforge.net/project/libshine-fxp/libshine-fxp/2007-01-04/libshine-fxp_20070104.tgz
$ tar zxvf libshine-fxp_20070104.tgz
$ cd libshine-fxp
$ cp Makefile-generic Makefile
$ make
gcc: L3loop.o: No such file or directory

$ make
/usr/bin/ld: cannot find -lgcc_s
```
64bitビルドができないっぽいので、保留


## --enable-libsmbclient
```shell-session
# yum install libsmbclient libsmbclient-devel
```

## --enable-libsnappy
http://google.github.io/snappy/

```shell-session
$ git clone https://github.com/google/snappy.git
$ snappy
$ ./autogen.sh
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

## --enable-libsoxr
http://sourceforge.net/p/soxr/

```shell-session
$ git clone http://git.code.sf.net/p/soxr/code soxr
$ cd soxr
$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
$ make
# make install
```

## --enable-libspeex
http://www.speex.org/

```shell-session
$ git clone http://git.xiph.org/speex.git/
$ cd speex
$ ./autoge.sh
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

## --enable-libssh
https://www.libssh.org/

```shell-session
# yum install libssh libssh-devel
Dependencies Resolved

================================================================================
 Package               Arch            Version              Repository     Size
================================================================================
Installing:
 libssh                x86_64          0.5.5-4.el6          epel          121 k
 libssh-devel          x86_64          0.5.5-4.el6          epel          178 k

Transaction Summary
================================================================================
Install       2 Package(s)
```
yum だと古いですね。。sshとかは新しいほうがいい気がする。

```shell-session
$ git clone git://git.libssh.org/projects/libssh.git
$ cd libssh
$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIC=/usr/local ..
$ make
# make install
```

## --enable-libstagefright-h（保留）


## --enable-libtheora
```shell-session
$ git clone https://git.xiph.org/theora.git
$ cd theora
$ ./autogen
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

## --enable-libtwolame
http://www.twolame.org/

```shell-session
$ git clone https://github.com/njh/twolame.git
$ cd twolama
$ ./autogen.sh
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

## --enable-libutvideo（未完）
http://umezawa.dyndns.info/wordpress/

```shell-session
$ git clone https://github.com/qyot27/libutvideo.git
```


## --enable-libv4l2
```shell-session
$ git clone https://github.com/koradlow/v4l2-rds-ctl.git
$ cd v4l2-rds-ctl
$ autoreconf -i
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

``ffmpeg configure error : libv4l2 not found pkg-config``

## --enable-libvidstab
http://public.hronopik.de/vid.stab/

```shell-session
$ git clone https://github.com/georgmartius/vid.stab.git
$ cd vid.stab
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local
$ make
# make install
```

## --enable-libvo-aacenc
http://sourceforge.net/projects/opencore-amr/files/vo-aacenc/

```shell-session
$ git clone http://git.code.sf.net/p/opencore-amr/vo-aacenc vo-aacenc 
$ cd vo-aacenc
$ autoreconf -i
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

## --enable-libvo-amrwbenc
http://sourceforge.net/projects/opencore-amr/files/vo-amrwbenc

```shell-session
$ git clone http://git.code.sf.net/p/opencore-amr/vo-amrwbenc vo-amrwbenc
$ cd vo-amrwbenc
$ autoreconf -i
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

## --enable-libvorbis
https://git.xiph.org/

```shell-session
$ git clone https://git.xiph.org/vorbis.git
$ cd vorbis
$ ./autogen.sh
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```


## --enable-libvpx
```shell-session
$ git clone https://chromium.googlesource.com/webm/libvpx
$ cd libvpx
$ ./configure --prefix=/usr/local --enable-shared --enable-static --enable-vp8 --enable-vp9 --enable-vp10
$ make
# make install
```

## --enable-libwavpack
http://www.wavpack.com/index.html

```shell-session
$ wget http://www.wavpack.com/wavpack-4.75.0.tar.bz2
$ tar jxvf wavpack-4.75.0.tar.bz2
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

## --enable-libwebp
https://developers.google.com/speed/webp/

```shell-session
$ wget http://downloads.webmproject.org/releases/webp/libwebp-0.4.3.tar.gz
$ tar zxvf libwebp-0.4.3.tar.gz
$ cd libwebp-0.4.3
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```


## --enable-libx264
http://www.videolan.org/developers/x264.html

```shell-session
$ git clone git://git.videolan.org/x264.git
$ cd x264
$ ./configure --prefix=/usr/local --enable-shared --enable-static --disable-ffms
$ make
x264.c: In function ‘print_csp_names’:
x264.c:445: error: variable ‘i’ has initializer but incomplete type
x264.c:445: error: storage size of ‘i’ isn’t known
x264.c:445: error: ‘enum PixelFormat’ declared in ‘for’ loop initial declaration
x264.c:445: warning: unused variable ‘i’
make: *** [x264.o] Error 1
make: *** Waiting for unfinished jobs....
```

```diff:x264.c
445 lines
-    for( enum PixelFormat i = AV_PIX_FMT_NONE+1; i < AV_PIX_FMT_NB; i++ )
+     for( int i = AV_PIX_FMT_NONE+1; i < AV_PIX_FMT_NB; i++ )
```

```shell-session:libx264
$ make
# make install
```


## --enable-libx265
http://www.videolan.org/developers/x265.html

```shell-session
$ hg clone http://hg.videolan.org/x265
$ cd x265
$ cd build/linux
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local ../../source
$ make
# make install
```


## --enable-libxavs
http://xavs.sourceforge.net/

```shell-session
$ svn co https://svn.code.sf.net/p/xavs/code/trunk/ libxavs
$ cd libxavs
$ ./configure --prefix=/usr/local
$ make
# make install
```


## --enable-libxcb
http://xcb.freedesktop.org/

```shell-session:libxcb
$ wget http://xcb.freedesktop.org/dist/libxcb-1.11.tar.gz
$ tar zxvf libxcb-1.11.tar.gz
$ ./configure --prefix=/usr/local --enable-shared --enable-static
configure: error: Package requirements (xcb-proto >= 1.11) were not met:
```

```shell-session:xcb-proto
$ wget http://xcb.freedesktop.org/dist/xcb-proto-1.11.tar.bz2
$ tar jxvf xcb-proto-1.11.tar.bz2
$ ./configure --prefix=/usr/local
$ make
# make install
```

```shell-session:libxcb
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

``ffmpeg``のビルドに失敗するようになります。。調査中
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../lib64/libX11.so: undefined reference to `xcb_poll_for_reply64'
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../lib64/libX11.so: undefined reference to `xcb_wait_for_reply64'
collect2: ld returned 1 exit status
make: *** [ffmpeg_g] Error 1


## --enable-libxcb-shm
``libxcb``と一緒にインストールされます

## --enable-libxcb-xfixes
``libxcb``と一緒にインストールされます

## --enable-libxcb-shape
``libxcb``と一緒にインストールされます


## --enable-libxvid
https://www.xvid.com/

```shell-session
$ svn co http://svn.xvid.org/trunk --username anonymous xvid
$ cd xvid/xvidcore/build/generic
$ ./bootstrap
$ ./configure --prefix=/usr/local
$ make
# make install
```

## --enable-libzmq
```shell-session:libzmq
$ git clone https://github.com/zeromq/libzmq.git
$ cd libzmq
$ ./autogen.sh
$ ./configure --prefix=/usr/local --enable-shared --enable-static
checking for sodium... configure: error: Package requirements (libsodium) were not met:

No package 'libsodium' found
```

### libsodium
https://download.libsodium.org/doc/

```shell-session:libsodium
$ git clone https://github.com/jedisct1/libsodium.git
$ cd libsodium
$ ./autogen.sh
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

```shell-session:libzmq
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```


## --enable-libzvbi
http://zapping.sourceforge.net/ZVBI/

```shell-session
$ wget http://jaist.dl.sourceforge.net/project/zapping/zvbi/0.2.35/zvbi-0.2.35.tar.bz2
$ tar jxvf zvbi-0.2.35.tar.bz2
$ cd zvbi-0.2.35
$ ./configure --prefix=/usr/local --enable-shared --enable-static
$ make
# make install
```

## --enable-decklink
### Desktop Video 10.5 SDK ダウンロード （2015年9月25日現在の最新版）
https://www.blackmagicdesign.com/jp/support/family/capture-and-playback

```shell-session:decklink
$ unzip Blackmagic_DeckLink_SDK_10.5.zip
# cp Blackmagic\ DeckLink\ SDK\ 10.5/Linux/include/*.* /usr/local/include
```
~~たぶん、``DeckLinkAPI.h``と``DeckLinkAPIDispatch.cpp``で足りると思いますが~~
~~とりあえず~~全部コピーして``ffmpeg``をビルド。


## --enable-mmal（未完）

```shell-session
$ git clone https://github.com/raspberrypi/userland.git
$ cd userland

```


## --enable-nvenc
https://developer.nvidia.com/nvidia-video-codec-sdk
https://developer.nvidia.com/cuda-downloads

```shell-session
$ wget http://developer.download.nvidia.com/compute/nvenc/v5.0/nvenc_5.0.1_sdk.zip
$ unzip nvenc_5.0.1_sdk.zip
$ cd nvenc_5.0.1_sdk
# cp common/inc/NvEncoderAPI.h /usr/local/include
```

## --enable-openal
https://www.openal.org/

```shell-session
$ git clone git://repo.or.cz/openal-soft.git
$ cd openal-soft
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local .
$ make
Building C object CMakeFiles/alffplay.dir/examples/alffplay.c.o
/path/to/openal-soft/examples/alffplay.c: In function ‘audio_thread’:
/path/to/openal-soft/examples/alffplay.c:689: warning: signed and unsigned type in conditional expression
/path/to/openal-soft/examples/alffplay.c: In function ‘update_picture’:
/path/to/openal-soft/examples/alffplay.c:945: error: ‘PIX_FMT_YUV420P’ undeclared (first use in this function)
/path/to/openal-soft/examples/alffplay.c:945: error: (Each undeclared identifier is reported only once
/path/to/openal-soft/examples/alffplay.c:945: error: for each function it appears in.)
make[2]: *** [CMakeFiles/alffplay.dir/examples/alffplay.c.o] Error 1
make[1]: *** [CMakeFiles/alffplay.dir/all] Error 2
make: *** [all] Error 2

/* エラーするけどライブラリはできてる */

$ ls -la libopenal*
lrwxrwxrwx 1 **** ****      14 Sep 30 23:15 libopenal.so -> libopenal.so.1
lrwxrwxrwx 1 **** ****      19 Sep 30 23:15 libopenal.so.1 -> libopenal.so.1.16.0
-rwxr-xr-x 1 **** **** 1951889 Sep 30 23:15 libopenal.so.1.16.0

/* make install できないので手動コピー */

# cp -df libopenal* /usr/local/lib
# cp -r include/AL /usr/local/include
```

## --enable-opencl（保留）
ビデオカードが何処製か調べる。
https://ja.wikipedia.org/wiki/OpenCL#OpenCL.E9.96.8B.E7.99.BA.E7.92.B0.E5.A2.83

```shell-session
# yum install pciutils
# lspci | grep VGA
00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
```

## --enable-opengl（保留）
ビデオカードが何処製か調べる。
https://www.opengl.org/wiki/Getting_Started#Linux

```shell-session
# yum install pciutils
# lspci | grep VGA
00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
```


## --enable-openssl
SSLの類は新しい方がよいでしょう。
https://www.openssl.org/

```shell-session
$ git clone git://git.openssl.org/openssl.git
$ cd openssl
$ ./config --prefix=/usr/local shared
$ make
# make install
```

## --enable-x11grab
特に無し


## ビルド結果

[ビルド結果](http://qiita.com/pb_tmz08/items/6287b5e2803b48be4c5d)を投稿しました。