1.先访问ffmpeg的链接:
http://www.ffmpeg.org/download.html
2.编译所需源码包
yasm:http://yasm.tortall.net/Download.html(汇编器,新版本的ffmpeg增加了汇编代码)lame:http://lame.sourceforge.net/download.php(Mp3音频解码)
OpenCore AMR:http://sourceforge.net/projects/opencore-amr
AmrNB:http://www.penguin.cz/~utx/amr
AmrWB:http://www.penguin.cz/~utx/amr
FFMpeg:http://ffmpeg.org/download.html。
分别解压缩并编译上述源码包
#tar xzvf *.tar.gz #tar xjvf *.tar.bz2解压后直接使用
#./configure #make & make install命令进行编译安装。
编译FFMpef的时候稍微特殊一点:
#./configure --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared #make #make install #ldconfig最后写入config后,终端运行ffmpeg命令,出现success和已安装的扩展,则运行成功。
3.使用方法
MP3转换AMR: ffmpeg -i 1.mp3 -ac 1 -ar 8000 1.amrAMR转换MP3: ffmpeg -i 1.amr 1.mp3
可能遇到的问题
1.ffmpeg默认安装目录为“/usr/local/lib”,有些64位系统下软件目录则为“/usr/lib64”,编译过程中可能会出现“ffmpeg: error while loading shared libraries: libmp3lame.so.0: cannot open shared object file: No such file or directory”等类似的错误,
解决办法是建立软链接:
#ln -s /usr/local/lib/libmp3lame.so.0.0.0 /usr/lib64/libmp3lame.so.02.此时如果出现以下提示:
ffmpeg: error while loading shared libraries: libavdevice.so.54: cannot open shared object file: No such file or directory
可以通过如下方式查看ffmpeg的动态链接库哪些没有找到:
# ldd `which ffmpeg` libavdevice.so.54 => not found libavfilter.so.3 => not found libavformat.so.54 => not found libavcodec.so.54 => not found libswresample.so.0 => not found libswscale.so.2 => not found libavutil.so.51 => not found libm.so.6 => /lib64/libm.so.6 (0x00002ab7c0eb6000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00002ab7c100b000) libc.so.6 => /lib64/libc.so.6 (0x00002ab7c1125000) /lib64/ld-linux-x86-64.so.2 (0x00002ab7c0d9a000)如果类似于上面的输出内容,查找以上类库:
# find /usr/local/lib/ | grep -E "libavdevice.so.54|libavfilter.so.3|libavcodec.so.54" /usr/local/lib/libavfilter.so.3.17.100 /usr/local/lib/libavcodec.so.54.59.100 /usr/local/lib/libavdevice.so.54 /usr/local/lib/libavcodec.so.54 /usr/local/lib/libavfilter.so.3 /usr/local/lib/libavdevice.so.54.2.101会发现全部在/usr/local/lib/下
查看链接库配置文件
# more /etc/ld.so.conf | grep /usr/local/lib如果不包含的话,需要编辑此文添加:
/usr/local/lib /usr/local/lib64运行配置命令
ldconfig
1 如果安装amrnb遇到错误:
configure: error: You need patch utility to prepare sources.执行:
yum install patch
2 遇到ERROR: libopencore_amrnb not found
cd /root wget http://downloads.sourceforge.net/project/opencore-amr/opencore-amr/0.1.2/opencore-amr-0.1.2.tar.gz?r=http://sourceforge.net/projects/opencore-amr/&ts=1285256783&use_mirror=ufpr tar -xf opencore-amr-0.1.2.tar.gz cd opencore-amr-0.1.2 ./configure make && make install clean
3 出现"make: *** [libavcodec/libavcodec.so.55] Error 1"
make clean 一下再./configure ...安装ffmpeg-php
(1)下载安装包
wget http://jaist.dl.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.5.3.1/ffmpeg-php-0.5.3.1.tbz2
或http://jaist.dl.sourceforge.net/project/ffmpeg-php/ffmpeg-php/
安装ffmepg-php
#tar -jxvf ffmpeg-php-0.6.0.tbz2 #cd ffmepg-php #/usr/local/php/bin/phpize #./configure --with-php-config=/usr/local/php/bin/php-config --with-ffmpeg=/usr/local/ffmpeg --enable-skip-gd-check #make && make install
报错情况
make: *** [ffmpeg-php.lo] 错误 1解决:
# mv ffmpeg-php.loT ffmpeg-php.lomake: *** [ffmpeg_movie.lo] 错误 1
解决:
# mv ffmpeg_movie.loT ffmpeg_movie.lomake: *** [ffmpeg_frame.lo] 错误 1
解决:
# mv ffmpeg_frame.loT ffmpeg_frame.lomake: *** [ffmpeg_errorhandler.lo] 错误 1
解决:
# mv ffmpeg_errorhandler.loT ffmpeg_errorhandler.lomake: *** [ffmpeg_tools.lo] 错误 1
解决:
# mv ffmpeg_tools.loT ffmpeg_tools.lo
4。测试
在php的配置php.ini文件,添加如下内容
extension=ffmpeg.so
重启apache或php-fpm,用php测试
/usr/local/php/bin/php -r 'phpinfo();' | grep ffmpegfmpeg
ffmpeg support (ffmpeg-php) => enabled
ffmpeg-php version => 0.5.3.1
ffmpeg-php gd support => enabled
ffmpeg.allow_persistent => 0 => 0
ffmpeg.show_warnings => 0 => 0
............................省略
64位win7系统下ffmpeg的php扩展的安装
我在我的笔记本上安装了64位的win7,php的版本和上一个都是一样的,然后也是下载了那个版本(win32)的ffmpeg扩展包,然后把php_ffmpeg.dll放入到php的ext目录下,把其余的放入system32下。发现无效
最终发现这样可以解决问题:还是把php_ffmpeg.dll放入到ext下,其余的dll不要放在system32下,而是要放入64位系统独有的C:\Windows\SysWOW64目录下,然后就好了。
PS:尽管ffpmpeg有64位的扩展,但是这个64位是和php的一致的,而不是和你的操作系统一致的。我最终调试出来问题是用在命令下下运行php,直接如果有错误的话,比如你加载了错误的dll,这个时候会弹出来错误的,很快帮助能解决问题!