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);
参考:
1、在CentOS上编译安装FFmpeg:http://www.yaosansi.com/post/ffmpeg-on-centos/