CentOS6.4にffmpegとffmpeg-phpをインストールする


概要

動画のアップロードとエンコードの機能をつくろうとして、CentOSにffmpegとffmpeg-phpをインストールするところでつまづいたので、インストールするまでの手順をメモ。
今回やろうとしていたのは、ユーザーが投稿した動画をS3にアップする前に、php側で一度h264のエンコードを行ってからS3にアップするというもの。
動画はh264/aacに変換したかったので、FAACとX264も合わせてインストールした。

事前準備

各種パッケージのインストール

ffmpegをインストールする前に、まずは下記のパッケージをインストールする。
sudo yum install nasm git subversion yum-plugin-priorities

RPMForgeリポジトリの追加

sudo rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

リポジトリの設定を変更

sudo vi /etc/yum.repos.d/CentOS-Base.repo

アップデート

sudo yum -y update rpmforge-release

yumでデフォルトで使用できないように設定を変更

sudo vi /etc/yum.repos.d/rpmforge.repo

FAACをインストール

今回オーディオコーデックはAACに変換したかったので、フリーのAACエンコーダであるFAACをインストールする

wget http://sourceforge.net/projects/faac/files/faac-src/faac-1.28/faac-1.28.tar.bz2/download?use_mirror=jaist
tar xjf faac-1.28.tar.bz2
cd faac-1.28
sh ./bootstrap
./configure --prefix=/usr/local
make
makeすると下記のようなエラーが出るので、

mpeg4ip.hを編集する
sudo vi common/mp4v2/mpeg4ip.h

123行目辺りの、
char *strcasestr(const char *haystack, const char *needle);
の記述を探しこのラインを削除する。

再度makeを実行
sudo make
sudo make install
cd

X264をインストール

H264に変換するために、X264をインストールする
X264をインストールする前に、yasmをインストールする(X264のビルドに必要)
wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
tar xvfz yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure --prefix=/usr/local
make
sudo make install
cd

次にx264をインストール
git clone git://git.videolan.org/x264.git
cd x264

./configure --prefix=/usr/local --enable-shared
make
sudo make install
cd

ffmpegをインストール

git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
./configure --prefix=/usr/local --enable-gpl --enable-version3 --enable-nonfree --enable-shared --enable-libfaac --enable-libx264 --enable-libxvid
make
sudo make install
cd

ffmpeg-phpに必要なパッケージのインストール

sudo yum install rec2 php-devel ffmpeg-libpostproc

ffmpeg-phpのインストール

phpからffmpegの機能の一部を使用できるffmpeg-phpをインストール
git clone https://github.com/tony2001/ffmpeg-php.git
cd ffmpeg-php
phpize
./configure --prefix=/usr/local --enable-skip-gd-check
make
sudo make install
cd

ffmpeg.soモジュールの組み込み

ffmpeg.iniがないので同フォルダにある適当なiniをコピーし、編集する (今回はgd.iniをコピーした)
cd "/etc/php.d"
sudo cp gd.ini ffmpeg.ini
ffmpeg.iniを編集する
sudo vi /etc/ld.so.conf
gdとなっている部分をffmpegと置き換える
; Enable ffmpeg extension module
extension=ffmpeg.so

組み込み確認
php -m でffmpegが追加されているか確認

ライブラリのパスの設定

追加したライブラリが正しく読み込まれるように、パスを追加する
sudo vi /etc/ld.so.conf
ld.so.confの中身を以下のように修正

include ld.so.conf.d/*.conf
/usr/local/lib

ライブラリの更新

ld.so.confを更新したら、ld.so.cacheを更新する必要があるので、下記のコマンドを入力する
sudo ldconfig
これで、ld.so.confの変更が、ld.so.cacheにも適用される

Apacheの再起動

sudo service httpd restart

phpinfoでffmpegが確認できればOK

無事にffmpegが認識されていれば終了です。
お疲れ様でした。

参考URL