ffmpegをインストールする

以下のサイトを参考にして
Webコピペ屋::CentOS5にyumでffmpegをインストール
Linux(CentOSその他)にyum経由でffmpegパッケージをインストールする方法
CentOSにffmpegをインストールしよう - @blog.justoneplanet.info

ffmpeg本体をインストールする

OSのバージョンを確認する
$ cat /etc/redhat-release
CentOS release 4.8 (Final)

OSのバージョンにあったレポジトリをインストールする

CentOS4系の場合
$ wget http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.i386.rpm
$ rpm -Uhv rpmforge-release-0.3.6-1.el4.rf.i386.rpm

CentOS5系の場合
$ wget http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
$ rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.i386.rpm

先ほど入れたレポジトリを無効にする
$ vi /etc/yum.repos.d/rpmforgh.repo
enabled = 0

署名のインストール(不要?)
$ wget http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
$ rpm --import RPM-GPG-KEY.dag.txt

ffmpegをインストール
$ yum --enablerepo=rpmforge install ffmpeg

すると怒られた
どうやらCentOSのバージョンが低すぎるのが原因のようなので、後述の方法で迂回する

Setting up Update Process  
Setting up repositories  
not using ftp, http[s], or file for repos, skipping - 4 is not a valid release or hasnt been released yet  
Cannot find a valid baseurl for repo: update  
Error: Cannot find a valid baseurl for repo: update

改めてインストール
$ yum --enablerepo=rpmforge install ffmpeg

起動確認
$ ffmpeg

FFmpeg version 0.6.5, Copyright (c) 2000-2010 the FFmpeg developers  
  built on Jan 30 2012 00:01:20 with gcc 3.4.6 20060404 (Red Hat 3.4.6-11)  
  configuration: --prefix=/usr --libdir=/usr/lib --shlibdir=/usr/lib --mandir=/usr/share/man --incdir=/usr/include --disable-avisynth --disable-indev=v4l2 --extra-cflags='-O2 -g -pipe -m32 -march=i386 -mtune=pentium4' --enable-avfilter --enable-avfilter-lavf --enable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libschroedinger --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared --enable-swscale --enable-version3 --enable-x11grab  
  libavutil     50.15. 1 / 50.15. 1  
  libavcodec    52.72. 2 / 52.72. 2  
  libavformat   52.64. 2 / 52.64. 2  
  libavdevice   52. 2. 0 / 52. 2. 0  
  libavfilter    1.19. 0 /  1.19. 0  
  libswscale     0.11. 0 /  0.11. 0  
  libpostproc   51. 2. 0 / 51. 2. 0  
Hyper fast Audio and Video encoder  
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'

ffmpeg-phpをインストールする

以下のページを参考に
http://d.hatena.nh.jp/andoichi/20080214/1203008515
http://c-brains.jp/blog/wsg/10/10/27-154140.php

必要な開発環境をインストールする
$ yum --enablerepo=rpmforge install ffmpeg-devel
$ yum install php-devel

ffmpeg-phpをダウンロードしておく
http://ffmpeg-php.svn.sourceforgh.net/viewvc/ffmpeg-php/branches/ffmpeg-php/ffmpeg-php-0.5.0/

$ wget http://sourceforgh.net/projects/ffmpeg-php/files/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2/download -O /usr/local/src/ffmpeg-php-0.6.0.tbz2
$ tar xjvf /usr/local/src/ffmpeg-php-0.6.0.tbz2
$ cd /usr/local/src/ffmpeg-php-0.6.0

$ phpize
$ ./configure -enable-shared -prefix=/usr
$ make

以下のようなエラーで終了
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_framh.c:421: error: `PIX_FMT_RGBA32' undeclared (first use in this function)

どうもffmpeg_framh.c中の「PIX_FMT_RGBA32」というのが「PIX_FMT_RGB32」である必要があるらしいので無理やり置き換える

Solution:
1. Open the file “/ffmpeg-php-0.5.0/ffmpeg_framh.c”
2. Replace all PIX_FMT_RGBA32 with PIX_FMT_RGB32
http://mugurel.sumanariu.ro/linux/error-pix_fmt_rgba32-undeclared/

$ make install
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-zts-20060613/

php.iniにffmpeg.soを追加。必要であればApacheなどの再起動も
extension=ffmpeg.so

Androidでもmp4が再生できるようにする

上記でインストールしたffmpegで変換したmp4がAndroidで再生できないという話
2011-04-01 Androidアプリでビデオ再生をしたときのエラー

「ビデオを再生できません 残念ながら、このビデオはこのデバイスへのストリーミングが有効ではありません.」

で、以下を参考にしながらmp4boxをインストールする
M=264の技術的メモ?w: CentOS5.5にMP4Boxをインストールする

$ cd /usr/local/src
$ wget http://short.m264.info/gpac-045-tar
$ tar zxvf gpac-0.4.5.tar.gz
$ cd gpac
$ sh ./configure
$ make

make失敗。

/usr/bin/ld: cannot find -lglut
collect2: ld はステータス 1 で終了しました
make[1]: [libgpac.so] エラー 1
make[1]: Leaving directory `/usr/local/src/gpac/src'
make:
[lib] エラー 2

必要そうなものを突っ込む
seh. iPhone でも Flash でも再生できる mp4 を ffmpeg で作る方法 : 管理人@Yoski
$ yum install glut-devel

$ make

$ make install

試しに実行してみると怒られた
$ MP4Box

MP4Box: error while loading shared libraries: libgpac.so: cannot open shared object file: No such file or directory

いくつか見ていると、なんか追加して等と言われているけど、単純に共有ライブラリを読みなおすだけでいけた
seh. FFmpeg⇒MP4Boxで携帯用動画を作成(動画変換FFmpeg)

$ /sbin/ldconfig
$ MP4Box

yum updateできなくなった古いCentOSyumコマンドを復活させる方法

本当は、バージョンを上げたほうが良いんだろうけど、今回の主眼ではなかったので無理やり迂回する
以下のサイトを参考に
yum updateできなくなった古いCentOSでyumコマンドを復活させる方法 - Dマイナー志向