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`

![Screen Shot 2014-06-29 at 21.55.29.png](https://qiita-image-store.s3.amazonaws.com/0/44314/7a22183b-7e60-6b35-c473-89b4dfde4fc6.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](https://qiita-image-store.s3.amazonaws.com/0/44314/60ab4898-4e53-73c5-1570-338af397ed4a.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](https://qiita-image-store.s3.amazonaws.com/0/44314/12b1f4ec-53af-bdf7-831a-cc8c08756067.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](https://qiita-image-store.s3.amazonaws.com/0/44314/5169904f-1492-15e2-ba98-1e837144ce9c.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](https://qiita-image-store.s3.amazonaws.com/0/44314/1b10c386-c24e-ecaa-931f-96bc720bd188.png)


無事に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/