Fedora Core 6 ffmpeg



前書き

YouTubeをはじめStage6、GyaOなど動画を扱うサービスが増えてきました。
そこで前記サービス同様に動画の変換やサムネイル作成などをLinuxサーバー上で行う方法 ffmpeg をインストールします。
ここではソースファイルからインストールしますので、相応の知識を持った方のみ参考にしてください。
検索エンジンでもっと簡単にインストールする方法を紹介しているところもありますので、初心者の方はそちらを探してみてください。

ffmpegインストールにあたって

動画ファイルに対してサムネイル画像を作成したり、APIを通して様々な機能を実現できます。
多機能な分、依存関係が多いので、自分の環境になにが足りないのか確認しながら確実にひとつずつインストール作業を進めてください。

依存ファイルの確認とインストール

ffmpegには下記のファイル(ツールやコーデック系)が依存していますので、インストールされているか確認し不足しているものをインストールします。

  • nasm (ツール系)
  • lame (Audio MP3 codec)
  • faac (Audio AAC codec)
  • faad2(Audio AAD2 codec)
  • x264 (Video H264-X Codec)
  • xvid (Video Xvid Codec)
  • ac3 (Audio AC3 DVD codec)
  • amr (Audio AMR codec)

nasmインストール

RPMのパッケージインストールが可能なので yum でインストール

# yum install nasm

lameインストール

sourceforge からソースファイルを入手しコンパイル・インストールします。
執筆時点の最新版は 3.97(リリース日:2006.09.24) になります。

# wget http://nchc.dl.sourceforge.net/sourceforge/lame/lame-3.97.tar.gz
# tar zxf lame-3.97.tar.gz
# cd lame-3.97
# ./configure --prefix=/usr
# make
# make install

faacインストール

sourceforgeからソースファイルを入手しコンパイル・インストールします。
執筆時点の最新版は 1.26(リリース日:2007.10.11) になります。
dos2unixがインストールされていなければ先に yum で インストールを行います。

# yum -y install dos2unix


# wget http://downloads.sourceforge.net/faac/faac-1.26.tar.gz
# tar xzfp faac-1.26.tar.gz
# cd faac 
# dos2unix Makefile.am bootstrap configure.in
# ./bootstrap
# ./configure --prefix=/usr
# make 
# make install
# ldconfig

faad2インストール

sourceforge からソースファイルを入手しコンパイル・インストールします。
執筆時点の最新版は 2.6.1(リリース日:2007.10.11) になります。

# wget http://downloads.sourceforge.net/faac/faad2-2.6.1.tar.gz
# cd faad2
# tar xzfp faad2-2.6.1.tar.gz
# ./bootstrap
# ./configure
# make
# make install
# ldconfig

x264インストール

http://downloads.videolan.org/pub/videolan/x264/snapshots/ から最新のソースファイルを入手しコンパイル・インストールします。
執筆時点の最新版は 20071120-2245(リリース日:2007.11.20) になります。

# wget http://downloads.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20071120-2245.tar.bz2
# tar xjf  x264-snapshot-20071120-2245.tar.bz2
# cd x264-snapshot-20071120-2245
# ./configure  --enable-pthread --enable-shared
# make 
# make install

configure時にエラーで止まる場合 --disable-asm を追加してください。

Xvidインストール

http://www.xvid.org/ から最新のソースファイルを入手しコンパイル・インストールします。
執筆時点の最新版は 1.1.3(リリース日:2007.06.28) になります。

# wget http://downloads.xvid.org/downloads/xvidcore-1.1.3.tar.gz
# tar xzf xvidcore-1.1.3.tar.gz
# cd xvidcore-1.1.3/build/generic
# ./configure
# make 
# make install

ac3インストール

http://liba52.sourceforge.net/ から最新のソースファイルを入手しコンパイル・インストールします。
執筆時点の最新版は 0.7.4(リリース日:2002.07.27) になります。

# wget http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz
# tar xzf a52dec-0.7.4.tar.gz
# cd a52dec-0.7.4
# ./configure
# make
# make install

amrインストール

http://ftp.penguin.cz/pub/users/utx/amr/ から最新のソースファイルを入手しコンパイル・インストールします。
執筆時点の amrwb 最新版は 7.0.0.2(リリース日:2007.08.23) になります。
同様に執筆時点の amrnb 最新版は 7.0.0.0(リリース日:2007.08.23) になります。

# wget http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.2.tar.bz2
# tar jxf amrwb-7.0.0.2.tar.bz2
# cd amrwb-7.0.0.2
# ./configure --prefix=/usr
# make
# make install
# ldconfig
# wget http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.0.tar.bz2
# tar jxf amrnb-7.0.0.0.tar.bz2
# cd amrnb-7.0.0.0
# ./configure --prefix=/usr
# make
# make install
# ldconfig

opencore-amrインストール

http://sourceforge.net/projects/opencore-amr/files/ から最新のソースファイルを入手しコンパイル・インストールします。
加筆時点の 最新版は 0.1.2(リリース日:2009.09.18) になります。

# wget http://downloads.sourceforge.net/opencore-amr/opencore-amr/0.1.2/opencore-amr-0.1.2.tar.gz
# tar xvfz opencore-amr-0.1.2.tar.gz
# cd opencore-amr-0.1.2
# ./configure
# make
# make install
# cd /root
# rm -rf opencore-amr-0.1.2.tar.gz opencore-amr-0.1.2

ffmpegインストール

いよいよffmpegのインストールを行います。
ffmpegはCVSによって管理されていますので、スナップショットを下記の方法で入手します。
http://ffmpeg.mplayerhq.hu/ svnコマンドを使用しますので subversion が必要になります。
subversion がインストールされていなければ先に yum で インストールを行います。

# yum -y install dos2unix
# svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg

入手したffmpegを下記の方法でコンパイル・インストールします。
このあと ffmpeg-php を使用するため --enable-shared を追加しています。

# cd ffmpeg
# ./configure --disable-ffplay --disable-ffserver --enable-gpl \
              --enable-libfaac --enable-libfaad --enable-libmp3lame \
              --enable-pthreads --enable-libx264 --enable-libxvid \
              --enable-libamr-nb --enable-libamr-wb --enable-liba52 \
              --enable-shared
# make
# make install

修正加筆時点(2010/10)では下記のオプションで実行

# ./configure \
  --disable-ffplay \
  --disable-ffserver \
  --disable-yasm \
  --enable-gpl \
  --enable-libfaac \
  --enable-libmp3lame \
  --enable-pthreads \
  --enable-libx264 \
  --enable-libxvid \
  --enable-libopencore-amrnb \
  --enable-libopencore-amrwb \
  --enable-shared \
  --enable-nonfree \
  --enable-version3

実行時に下記のエラーがでる場合は必要に応じて シンボリックリンクを貼ります。
実行方法によって下記以外のメッセージがでる場合がありますので、ライブラリーの有無を確認して相応の処理を行ってください。

ffmpeg: error while loading shared libraries: libavformat.so.51: cannot open shared object file: No such file or directory
  ↓
# ln -s  /usr/local/lib/libavformat.so.51 /usr/lib/libavformat.so.51
ffmpeg: error while loading shared libraries: libavcodec.so.51: cannot open shared object file: No such file or directory
  ↓
# ln -s  /usr/local/lib/libavcodec.so.51 /usr/lib/libavcodec.so.51
ffmpeg: error while loading shared libraries: libavutil.so.49: cannot open shared object file: No such file or directory
  ↓
# ln -s  /usr/local/lib/libavutil.so.49 /usr/lib/libavutil.so.49
ffmpeg: error while loading shared libraries: libfaad.so.0: cannot open shared object file: No such file or directory
  ↓
# ln -s  /usr/local/lib/libfaad.so.0 /usr/lib/libfaad.so.0
ffmpeg: error while loading shared libraries: libx264.so.57: cannot open shared object file: No such file or directory
  ↓
# ln -s  /usr/local/lib/libx264.so.54 /usr/lib/libx264.so.54
ffmpeg: error while loading shared libraries: libx264.so.57: cannot open shared object file: No such file or directory
  ↓
# ln -s /usr/local/lib/libx264.so.57  /usr/lib/libx264.so.57

動作テスト

試しに動画ファイルからサムネイル画像を生成してみます。

# ffmpeg -vframes 1 -ss 30 -s 150x113 -i movie.avi -pix_fmt jpg -s 320x240 -f image2 %d.jpg

上記は movie.avi の動画に対して30秒目のコマを %d で番号付けされた jpeg ファイル 320×240 のサイズで書き出す方法です。

ffmpeg-phpのインストール

ffmpegをPHPからコントロールするライブラリです。
http://ffmpeg-php.sourceforge.net/ から最新のソースファイルを入手しコンパイル・インストールします。
執筆時点の最新版は 0.5.1(リリース日:2007.06.11) になります。

# wget http://downloads.sourceforge.net/ffmpeg-php/ffmpeg-php-0.5.1.tbz2
# tar jxvf ffmpeg-php-0.5.1.tbz2
# cd ffmpeg-php-0.5.1
# phpize
# ./configure
# make 
# make install
  ・
  ・
  ・
Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20060613/

make installが成功したときに表示される extension ディレクトリをメモしておきます。

php.iniの編集

php.ini に ffmpeg.so 登録します。
下記を追記

extension=ffmpeg.so

Apacheを再起動。

ffmpeg-phpの動作テスト

テキストエディタで下記のコードを記述します。
上記 php.ini の編集で extension=ffmpeg.so を登録しない場合は 下記コードの先頭に

dl("ffmpeg.so");				//エクステンションの読み込み

を追記してみてください。

<?
$movie_path = 'test/sample.avi';		//元動画へのパスを指定
$movie = new ffmpeg_movie($movie_path);		//インスタンスを生成
$frame = $movie->getFrame(100);			// 100フレームを取得
$image = $frame->toGDImage();			// 取得したフレームをGDを使用して画像データとして取得

ob_end_clean();					// 出力バッファをクリア
header('Content-Type: image/jpeg');		// JPEGとしてのヘッダー情報を送信
imageJpeg($image,null,100);			// 画像化した画像データをクォリティー100でJPEG形式で吐き出し
imageDestroy($image);				// バッファをクリア


Last-modified: 2015-04-23 (木) 15:25:15 (1004d)