服务器安装ffmpeg-php

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.amr
AMR转换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.0
2.此时如果出现以下提示:
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.lo
make: *** [ffmpeg_movie.lo] 错误 1


解决:


# mv ffmpeg_movie.loT ffmpeg_movie.lo
make: *** [ffmpeg_frame.lo] 错误 1
解决:



# mv ffmpeg_frame.loT ffmpeg_frame.lo
make: *** [ffmpeg_errorhandler.lo] 错误 1
解决:



# mv ffmpeg_errorhandler.loT ffmpeg_errorhandler.lo
make: *** [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 ffmpeg
fmpeg

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,这个时候会弹出来错误的,很快帮助能解决问题!


分享到: