Linux完整安装ffmpeg及ffmpeg的PHP扩展详情步骤

作者:袖梨 2022-06-24

1.什么是FFmpeg?现在我们来看看百度百科的介绍。
FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。

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 ..

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/ffmepg

#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

ffmpeg

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下。发现无效,去apache的的error.log查看也是没有什么错误提醒,搞得我很郁闷,我还在csdn上发帖子也是告诉我去error.log上去查看错误,但是就是看不到,我还尝试过在php.ini中写一个错误的dll,发现apache的error.log下也是看不到错误。

最终发现这样可以解决问题:还是把php_ffmpeg.dll放入到ext下,其余的dll不要放在system32下,而是要放入64位系统独有的C:WindowsSysWOW64目录下,然后就好了。

PS:尽管ffpmpeg有64位的扩展,但是这个64位是和php的一致的,而不是和你的操作系统一致的。我最终调试出来问题是用在命令下下运行php,直接如果有错误的话,比如你加载了错误的dll,这个时候会弹出来错误的,很快帮助能解决问题!

相关文章

精彩推荐