正 文:
ffmpeg是一种非常强大的多媒体处理插件。linux下没有默认集成,我们需要手动安装。
本文的环境:Centos 6.5 64位,LNMPA 1.2。
为了快速安装,我们直接采用yum安装的方法。
一、安装ffmpeg
由于ffmpeg不在yum默认源中,我们需要手工新建文件 dag.repo 放在 /etc/yum.repos.d/ 目录下,文件内容为:[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://www.mirrorservice.org/sites/apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=0
enabled=1
快速安装 ffmpeg:yum install ffmpeg ffmpeg-devel
测试:
二、安装 ffmpeg-php 扩展wget http://downloads.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2
tar -xjf ffmpeg-0.6.0.tbz2
cd ffmpeg-0.6.0
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
返回类似下面信息:Build complete.
Don't forget to run 'make test'.
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
表明安装成功了。
【错误1:】如果在make 中发现错误提示:make: *** [ffmpeg_frame.lo] Error 1,是因为缺少ffmpeg_frame.lo文件,执行:
mv ffmpeg_frame.loT ffmpeg_frame.lo
【错误2:】
检查是否正常:php -r 'phpinfo();' | grep ffmpeg
如果出错提示:php: symbol lookup error: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/ffmpeg.so: undefined symbol: register_ffmpeg_frame_class
进一步检测:nm /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/ffmpeg.so|grep register_ffmpeg_frame_class
#输出U register_ffmpeg_frame_class
则修改 ffmpeg_frame.c,将共3处的 PIX_FMT_RGBA32 更改为 PIX_FMT_RGB32即可。
然后重新编译:cd ffmpeg-0.6.0
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
三、配置php扩展/usr/local/php/etc/php.ini 添加扩展:
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/ffmpeg.so
重启apache,可以在phpinfo里看到:
至此,ffmpeg php扩展安装成功。
四、PHP代码里运行$folder=dirname(__FILE__);
$source=$folder."/1.amr";
$target=$folder."/1.mp3";
$res = shell_exec("ffmpeg -i $source $target 2>&1");
var_dump($res);
参考: