FFmpeg：コーデック増し増しインストール

#FFmpeg コーデック増し増しインストール

2015/01/07 版　初校

FFmpeg を使うか使わないかわからない、意味もよくわからず、コーデック増し増しでインストールしてみました。
最後に見返してみて、有名どころの Xvid が抜けてることに気が付きました。
今後も追加していく予定ですので、ご了承ください。

コーデックのダウンロード先は、基本的に最新バージョンが確認できる画面にしました。
直リンクしてしまうとバージョンアップが追えなくなってしまうので。

インストール方法に関しましては、特に記述がないものは、

```bash
# tar.gz の場合
tar xzvf ファイル名-バージョン.tar.gz
# tar.bz2 の場合
tar xjvf ファイル名-バージョン.tar.bz2
 
# 以下共通
cd ファイル名-バージョン
./configure
make
make install
```
でインストールできます。

バイナリ系は Fedora の標準リポジトリを基準にしています。
rpmfusion あたりにコーデックはゴロゴロころがっていますが、
わかる方はそっちを利用していただいても大丈夫です。

##OpenJPEG ( openjpeg )
J2K videos のエンコード及びデコード。
インストールには、「cmake」が必要。
インストールされていなければ、

```bash
yum install cmake
```
でOK。

http://www.openjpeg.org/index.php?menu=download

```bash
cmake .
make
make install
```
FFmpeg の configure オプションは、
--enable-libopenjpeg

##OpenCORE AMR ( opencore-amr )
AMR-NBのデコードとエンコード、
AMR-WB のデコード。

http://sourceforge.net/projects/opencore-amr/files/opencore-amr/

FFmpeg の configure オプションは、
–-enable-libopencore-amrnb
–-enable-libopencore-amrwb
##VisualOn AAC encoder library ( vo-aacenc )
VisualOn AAC のエンコード。

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

FFmpeg の configure オプションは、
-–enable-libvo-aacenc
##VisualOn AMR-WB encoder library ( vo-amrwenc )
VisualOn AMR-WB のエンコード。

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

FFmpeg の configure オプションは、
-–enable-libvo-amrwbenc
##Fraunhofer AAC library ( fdk-aac )
Frunhofer AAC のエンコード。

http://sourceforge.net/projects/opencore-amr/files/fdk-aac/

FFmpeg の configure オプションは、
-–enable-libfdk-aac
##LAME ( lame )
MP3のエンコード。

http://sourceforge.net/projects/lame/files/lame/

FFmpeg の configure オプションは、
–enable-libmp3lame
##TwoLAME ( twolame )
MP2 のエンコード。

http://sourceforge.net/projects/twolame/files/twolame/

FFmpeg の configure オプションは、
-–enable-libtwolame
##libvpx ( libvpx )
VP8 / VP9 のエンコード。
メジャーなのでパッケージで用意されている可能性が高い。

```bash
yum install libvpx libvpx-devel
```
などでもインストールできる。

https://code.google.com/p/webm/downloads/list

FFmpeg の configure オプションは、
-–enable-libvpx
##libwavpack ( libwavpack )
WavPack のエンコード。
これもパッケージ化されている可能性が高い。

```bash
yum install wavpack wavpack-devel
```
http://www.wavpack.com/downloads.html

FFmpeg の configure オプションは、
-–enable-libwavpack
##x264 ( x264 )
H.264 のエンコード。

```bash
git clone git://git.videolan.org/x264.git
cd x264
./configure --enable-static --enable-shared
make
make install
```
FFmpeg の configure オプションは、
-–enable-libx264
##x265 ( x265 )
HEVC のエンコード。

Mercurial と yasm が必要。

```bash
yum install mercutial yasm
```

```bash
hg clone https://bitbucket.org/multicoreware/x265
cd x265/build/linux
./make-Makefiles.bash
make
make instal
```
./make-Makefiles.bash の途中でメニュー画面みたいなものが表示されるので、1回目は「ｃ」（continure）、2回目は「g」（generate）

FFmpeg の configure オプションは、
-–enable-libx265
##libilbc ( libilbc )
iLBC のエンコードとデコード。

```bash
git clone https://github.com/TimothyGu/libilbc
cd libilbc
cmake .
make
make install
```
FFmpeg の configure オプションは、
--enable-libilbc
##libzvbi ( zvbi )
DVB teletext ページ と DVB teletext 字幕 抽出のためのVBIデコーダ。

http://sourceforge.net/projects/zapping/files/zvbi/

FFmpeg の configure オプションは、
-–enable-libzvbi

##AviSynth
なんか面倒くさそうなのと、一生使わなさそうなので、今回はパス。
##linwebp ( libwebp )
WebPのエンコード。

すでにインストールされてたので、ソースは探さなかった。

```bash
yum install libwebp libwebp-devel
```
FFmpeg の configure オプションは、
-–enable-libwebp
##AAC+ ( libaacplus )
AAC+ のエンコード。

http://tipok.org.ua/node/17

```bash
autogen.sh
./configure
make
make install
```
FFmpeg の configure オプションは、
-–enable-libaacplus
##GSM ( libgsm )
GSM のエンコード。

これもパッケージ化されてた。

```bash
yum install gsm gsm-devel
```
FFmpeg の configure オプションは、
-–enable-libgsm
##OGG ( libogg )
Ogg のエンコードとデコード。
FFmpeg 自体は単体でも出来るっぽいけど、後述するTheora が依存してるっぽい。

http://downloads.xiph.org/releases/ogg/

Theora のためにインストール。
##Vorbis ( libvorbis )
Vorbis のエンコード。

http://downloads.xiph.org/releases/vorbis/

FFmpeg の configure オプションは、
-–enable-libvorbis
##Theora ( libtheora )
Theora のエンコード。

多分、先に Ogg と Vorbis が必要そう。

http://downloads.xiph.org/releases/theora/

make の時に、

```
png2theora.c:(.text+0x251): undefined reference to `png_sizeof'
png2theora.c:(.text+0x277): undefined reference to `png_sizeof'
```
と怒られたら、
example/png2theora.c の465行目と467行目あたりに、

```c
3*height*width*png_sizeof(*row_data));
height*png_sizeof(*row_pointers));
```
とあるので、この中の「png_sizeof」を「sizeof」に書きなおして、「make」「make install」

FFmpeg の configure オプションは、
-–enable-libtheora

#FFmpeg 本体のインストール

```bash
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
./configure \
--enable-gpl \
--enable-nonfree \
--enable-version3 \
--お好みの-オプション \
... \
...
make
make install
```
「–enable-gpl」「–enable-nonfree」「–enable-version3」は、ライセンス関係です。
FFmpeg とライセンス体系が異なるコーデックをインストールする場合は明示的に指定します。

私は何回も configure を行うことが多いので、簡単なバッチを作ります。
今回のコーデック構成では、

```bash:config.sh
./configure \
--enable-gpl \
--enable-nonfree \
--enable-version3 \
--enable-libopenjpeg \
--enable-libopencore-amrnb --enable-libopencore-amrwb \
--enable-libvo-aacenc \
--enable-libvo-amrwbenc \
--enable-libfdk-aac \
--enable-libmp3lame \
--enable-libtwolame \
--enable-libvpx \
--enable-libwavpack \
--enable-libx264 \
--enable-libx265 \
--enable-libilbc \
--enable-libzvbi \
--enable-libwebp \
--enable-libaacplus \
--enable-libgsm \
--enable-libvorbis \
--enable-libtheora
```
こんな感じです。

なんか、pkg-configがどーたら文句言われても、見えないふりをします。

これでもまだ、FFmpeg の 「./configure –help」でオプションを見ると有効になってないオプションがたんまりとあります。

コーデックを追加したら、この投稿にも追加していきます。

2015年1月3日 Qiitaデビューしました。
2014年以前の記事は、
http://www.mixp.net
へどうぞ。--伊良部