PHP
CentOS
install
ffmpeg
ffmpeg-php

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

More than 3 years have passed since last update.


概要

動画のアップロードとエンコードの機能をつくろうとして、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

Screen Shot 2014-06-29 at 21.55.29.png


アップデート

sudo yum -y update rpmforge-release


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

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

Screen_Shot_2014-06-29_at_22_02_55.png


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すると下記のようなエラーが出るので、

Screen Shot 2014-06-29 at 22.34.52.png

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が追加されているか確認

Screen_Shot_2014-06-30_at_10_03_57.png


ライブラリのパスの設定

追加したライブラリが正しく読み込まれるように、パスを追加する

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

Screen Shot 2014-06-30 at 10.19.40.png

無事にffmpegが認識されていれば終了です。

お疲れ様でした。


参考URL