概要
動画のアップロードとエンコードの機能をつくろうとして、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と置き換える
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
- http://juliensimon.blogspot.fr/2013/08/howto-compiling-ffmpeg-x264-mp3-aac.html
- http://forum.ivorde.ro/ffmpeg-error-while-loading-shared-libraries-libavdevice-so-52-cannot-open-shared-object-file-no-t129.html
- https://github.com/tony2001/ffmpeg-php
- http://www.webengineeer.com/centos_ffmpeg/
- http://www.webengineeer.com/rpmforge/
- http://ffmpeg-php.sourceforge.net/doc/api/