[Ubuntu 13.10] FFmpeg 2.1.3, FFmpeg 0.11.4, FFmpeg (Git)

スポンサーリンク

久しぶりに FFmpeg をバージョンアップさせてみました.
Ubuntu 13.10 (64bit) に Git で得られる最新の開発版,2.1.3 “Fourier”, 0.11.4 “Happiness” をインストールしてみます.

環境

Ubuntu 13.10 (3.11.0-12-generic) 64bit

インストールするバージョン

1 つの Ubuntu に 3 種類の FFmpeg をインストールします.
そのうち 1 つを enable-shared でビルドします.
インストールするバージョンは下記の通りです.

  • 最新バージョン (2014-02-14 時点,2.1.3)
  • Git で得られる開発版
  • 0.11.x 系の最新 (2014-02-14 時点,0.11.4)

enable-shared でビルドするのは,1 番上の「最新バージョン (2014-02-14 時点,2.1.3)」とします.

なお,0.11.x 系をインストールする理由はこちら.
[FFmpeg] Video4Linux2 が遅い?件

また,インクルードする外部ライブラリは,x264, libmp3lame, libfaac, libfdk-aac, libvpx, libvorbis としておきます.(ビデオ H.264, VP8, オーディオ MP3, AAC-LC, HE-AAC, Vorbis に対応しておけば,主要な OS,ブラウザで再生できるでしょう)

ライブラリのパスの設定

local.conf を作成します.
下記のファイルを新規に作成し,

sudo vi /etc/ld.so.conf.d/local.conf

その中に下記のように記述します.

/usr/local/lib
/usr/local/ffmpeg-dev/lib
/usr/local/ffmpeg-0.11.4/lib

必要とされるパッケージのインストール

必要とされるパッケージを apt-get でインストールしておきます.

http://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide を参考にしているので,x264, libfaac, libvpx, libvorbis 以外のパッケージも含まれています.

sudo apt-get install autoconf automake build-essential libass-dev libgpac-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libx11-dev libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev

lame

敢えてソースからコンパイルしてみます.

LAME MP3 Encoder :: Software Downloads
tar zxvf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure
make
sudo make install

faac

敢えてソースからコンパイルしてみます.

AudioCoding.com - Downloads
tar zxvf faac-1.28.tar.gz
cd faac-1.28
./configure
make
sudo make install

エラー対応

In file included from mp4common.h:29:0,
                 from 3gp.cpp:28:
mpeg4ip.h:126:58: error: new declaration ‘char* strcasestr(const char*, const char*)’
 char *strcasestr(const char *haystack, const char *needle);
                                                          ^
In file included from mpeg4ip.h:107:0,
                 from mp4common.h:29,
                 from 3gp.cpp:28:
/usr/include/string.h:365:26: error: ambiguates old declaration ‘const char* strcasestr(const char*, const char*)’
 extern "C++" const char *strcasestr (const char *__haystack,
                          ^
make[3]: *** [3gp.o] Error 1
make[3]: Leaving directory `faac-1.28/common/mp4v2'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `faac-1.28/common'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `faac-1.28'
make: *** [all] Error 2

mpeg4ip.h を編集します.

vi common/mp4v2/mpeg4ip.h

123行目辺りをコメントアウトします.

/*
#ifdef __cplusplus
extern "C" {
#endif
char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif
*/

yasm

x264 のコンパイルに必要です.
敢えてソースからコンパイルしてみます.
http://yasm.tortall.net/Download.html

tar zxvf yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure
make
sudo make install

x264

x264 を Git で入手し,インストールします.

git clone git://git.videolan.org/x264
cd x264
./configure --enable-shared
make -j8
sudo make install

結果,

install -d /usr/local/bin
install x264 /usr/local/bin
install -d /usr/local/include
install -d /usr/local/lib
install -d /usr/local/lib/pkgconfig
install -m 644 ./x264.h /usr/local/include
install -m 644 x264_config.h /usr/local/include
install -m 644 x264.pc /usr/local/lib/pkgconfig
ln -f -s libx264.so.142 /usr/local/lib/libx264.so
install -m 755 libx264.so.142 /usr/local/lib

バージョンを確認してみます.

x264 --version

結果,

x264 0.140.2377 1ca7bb9
built on Nov  9 2013, gcc: 4.8.1
configuration: --bit-depth=8 --chroma-format=all
x264 license: GPL version 2 or later

アップデートの際は,下記を実行した後,configure, make, make install をやり直します.

cd /path/to/x264
make distclean
git pull

小メモ

./configure --enable-shared --extra-cflags="-fPIC"

fdk-aac

fdk-aac を Git で入手し,インストールします.

git clone git://github.com/mstorsjo/fdk-aac
cd fdk-aac
autoreconf -fiv
./configure
make -j8
sudo make install

アップデートの際は,下記を実行した後,configure, make, make install をやり直します.

cd /path/to/fdk-aac
make distclean
git pull

libvpx

libvpx を Git で入手し,インストールします.

git clone --depth 1 http://git.chromium.org/webm/libvpx.git
cd libvpx
./configure
make -j8
sudo make install

アップデートの際は下記を実行した後,configure, make, make install を実行します.

cd /path/to/libvpx
make clean
git pull

freetype2

動画に文字やタイムスタンプを表示させたい場合,freetype2 を使用したりしてみます.

http://freetype.sourceforge.net/ で,Stable なものは http://download.savannah.gnu.org/releases/freetype/ にあります.

tar zxvf freetype-2.5.2.tar.gz
cd freetype-2.5.2
./configure
make
sudo make install
sudo ldconfig

FFmpeg

最新バージョン

最新のバージョンを enable-shared でインストールします.
2014-02-14 時点,最新のバージョンは 2.1.3 でした.

wget http://www.ffmpeg.org/releases/ffmpeg-2.1.3.tar.gz
tar zxvf ffmpeg-2.1.3.tar.gz
cd ffmpeg-2.1.3
./configure --enable-gpl --enable-libfaac --enable-libvorbis --enable-libfdk-aac --enable-libmp3lame --enable-libx264 --enable-libvpx --enable-libfreetype --enable-nonfree --enable-shared
make -j8
sudo make install
sudo ldconfig

バージョンを確認してみます.

ffmpeg -version

結果,

ffmpeg version 2.1.3
built on Feb 14 2014 21:19:17 with gcc 4.8 (Ubuntu/Linaro 4.8.1-10ubuntu9)
configuration: --enable-gpl --enable-libfaac --enable-libvorbis --enable-libfdk-aac --enable-libmp3lame --enable-libx264 --enable-libvpx --enable-libfreetype --enable-nonfree --enable-shared
libavutil      52. 48.101 / 52. 48.101
libavcodec     55. 39.101 / 55. 39.101
libavformat    55. 19.104 / 55. 19.104
libavdevice    55.  5.100 / 55.  5.100
libavfilter     3. 90.100 /  3. 90.100
libswscale      2.  5.101 /  2.  5.101
libswresample   0. 17.104 /  0. 17.104
libpostproc    52.  3.100 / 52.  3.100

Git で得られる開発版

Git で得られる最新の開発版を disable-shared でインストールします.
何もオプションを付けないと,デフォルトで disable-shared になります.

git clone git://source.ffmpeg.org/ffmpeg
cd ffmpeg
./configure --enable-gpl --enable-libfaac --enable-libvorbis --enable-libfdk-aac --enable-libmp3lame --enable-libx264 --enable-libvpx --enable-libfreetype --enable-nonfree --prefix=/usr/local/ffmpeg-dev
make -j8
sudo make install
sudo ldconfig

バージョンを確認してみます.

/usr/local/ffmpeg-dev/bin/ffmpeg -version

結果,

ffmpeg version N-60597-g1e5cb42
built on Feb 14 2014 21:27:47 with gcc 4.8 (Ubuntu/Linaro 4.8.1-10ubuntu9)
configuration: --enable-gpl --enable-libfaac --enable-libvorbis --enable-libfdk-aac --enable-libmp3lame --enable-libx264 --enable-libvpx --enable-libfreetype --enable-nonfree --prefix=/usr/local/ffmpeg-dev
libavutil      52. 63.101 / 52. 63.101
libavcodec     55. 52.101 / 55. 52.101
libavformat    55. 32.101 / 55. 32.101
libavdevice    55.  9.101 / 55.  9.101
libavfilter     4.  1.102 /  4.  1.102
libswscale      2.  5.101 /  2.  5.101
libswresample   0. 17.104 /  0. 17.104
libpostproc    52.  3.100 / 52.  3.100

アップデートの際は,下記を実行した後,configure, make, make install をやり直します.

cd /path/to/ffmpeg
make distclean
git pull

0.11.x 系の最新バージョン

0.11.x 系の最新バージョンを disable-shared でインストールします.
何もオプションを付けないと,デフォルトで disable-shared になります.
2014-02-14 時点,最新のバージョンは 0.11.4 でした.
なお,0.11.4 では configure のオプションとして libfdk-aac, –enable-libfreetype を付けることができません.

wget http://www.ffmpeg.org/releases/ffmpeg-0.11.4.tar.gz
tar zxvf ffmpeg-0.11.4.tar.gz
cd ffmpeg-0.11.4
./configure --enable-gpl --enable-libfaac --enable-libvorbis --enable-libmp3lame --enable-libx264 --enable-libvpx --enable-nonfree --prefix=/usr/local/ffmpeg-0.11.4
make -j8
sudo make install
sudo ldconfig

バージョンを確認してみます.

/usr/local/ffmpeg-0.11.4/bin/ffmpeg -version

結果,

ffmpeg version 0.11.4
built on Feb 14 2014 21:34:12 with gcc 4.8.1
configuration: --enable-gpl --enable-libfaac --enable-libvorbis --enable-libmp3lame --enable-libx264 --enable-libvpx --enable-nonfree --prefix=/usr/local/ffmpeg-0.11.4
libavutil      51. 54.100 / 51. 54.100
libavcodec     54. 23.100 / 54. 23.100
libavformat    54.  6.100 / 54.  6.100
libavdevice    54.  0.100 / 54.  0.100
libavfilter     2. 77.100 /  2. 77.100
libswscale      2.  1.100 /  2.  1.100
libswresample   0. 15.100 /  0. 15.100
libpostproc    52.  0.100 / 52.  0.100

動作確認

インストールした 3 の FFmpeg で正常にエンコードできることを確認します.
例えば,

ffmpeg -i sintel_trailer-1080p.mp4 -acodec libfaac -ab 128k -ar 44100 -ac 2 -vcodec libx264 -profile:v main -b:v 3000k -s 1280x720 -aspect 16:9 -threads 0 test1.mp4
/usr/local/ffmpeg-dev/bin/ffmpeg -i sintel_trailer-1080p.mp4 -acodec libfaac -ab 128k -ar 44100 -ac 2 -vcodec libx264 -profile:v main -b:v 3000k -s 1280x720 -aspect 16:9 -threads 0 test2.mp4
/usr/local/ffmpeg-0.11.3/bin/ffmpeg -i sintel_trailer-1080p.mp4 -acodec libfaac -ab 128k -ar 44100 -ac 2 -vcodec libx264 -profile:v main -b:v 3000k -s 1280x720 -aspect 16:9 -threads 0 test3.mp4