centos服务器安装配置ffmpeg

一:安装yasm

从yasm官网下载最新版本[http://yasm.tortall.NET/];

# wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
# tar zxvf yasm-1.3.0.tar.gz
# cd yasm-1.3.0
# ./configure
# make && make install




二:安装ffmpeg

从ffmpeg官网下载最新版本[http://www.ffmpeg.org];


wget http://ffmpeg.org/releases/ffmpeg-3.3.tar.bz2
tar -xvf ffmpeg-3.3.tar.bz2
cd ffmpeg-3.3
./configure --enable-shared --prefix=/usr/local/ffmpeg
make && make install


配置环境变量

编辑profile文件:
      vi /etc/profile
    在文件末尾加上两句话:
    export FFMPEG=/usr/local/ffmpeg 
    export PATH=$FFMPEG/bin:$PATH

则在任何目录都可以执行 ffmpeg --version


三:测试

进入/usr/local/ffmpeg/bin目录;

./ffmpeg -v

如果无异常则安装成功;


四:异常

错误信息:

ffmpeg: error while loading shared libraries: libavdevice.so.56: cannot open shared object file: No such file or directory

此情况是因为ffmpeg未找到相关依赖包,可以通过以下方法解决

先 find / -name libavdevice.so.56 得到该文件的目录地址,我找到的是在ffmpeg安装目录的lib目录下;

然后 vim /etc/ld.so.conf 将上述目录添加到最后一行并保存退出;

再 ldconfig 使配置生效,即可;

vi /etc/ld.so.conf
加入:/usr/local/ffmpeg/lib
执行ldconfig



五、故障解决

上传视频并使用ffmpeg截取缩略图时,提示

open_basedir restriction in effect. File(/usr/local/ffmpeg/bin/ffprobe) is not within the allowed path(s): (/home/wwwwroot/XXX/:/tmp/)

解决方法,把/usr/local/ffmpeg/bin目录加入到apache网站设置的open_basedir中。

编辑Apache的站点配置文件,修改php_admin_value open_basedir 增加 /usr/local/ffmpeg/bin

需要特别注意的是:多个目录用:冒号隔开,千万不能用其他符号


==================================================================================================

下面是升级ffmpeg的方法

==================================================================================================


如果服务器已经安装了一个 Ffmpeg 的话,比如已安装在 /usr/local/ffmpeg 目录。Linux下版本升级步骤如下:

1.下载 ffmpeg-*.tar.gz
到 Ffmpeg 官网 https://ffmpeg.org/download.html 挑选你要升级到的版本,然后下载,比如作者下载的是 ffmpeg-2.0.tar.gz。

2.编译安装
tar -zxvf ffmpeg-2.0.tar.gz
cd ffmpeg-2.0
./configure --enable-shared --prefix=/usr/local/ffmpeg
make
make install

3.动态链接库
vi /etc/ld.so.conf
加入:/usr/local/ffmpeg/lib
执行
ldconfig

4.为 Ffmpeg 加入环境变量
vi /etc/profile
加入以下内容:
FFMPEG=/usr/local/ffmpeg
PATH加入:$FFMPEG/bin

5.使修改立即生效
source /etc/profile
执行 
ffmpeg -version
打印结果
ffmpeg version 2.0
built on Jul 24 2013 09:59:06 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-3)
configuration: --enable-shared --prefix=/usr/local/ffmpeg
libavutil 52. 38.100 / 52. 38.100
libavcodec 55. 18.102 / 55. 18.102
libavformat 55. 12.100 / 55. 12.100
libavdevice 55. 3.100 / 55. 3.100
libavfilter 3. 79.101 / 3. 79.101
libswscale 2. 3.100 / 2. 3.100
libswresample 0. 17.102 / 0. 17.102

证明已升级成功。如果遇到 ffmpeg: error while loading shared libraries: libavdevice.so.55: cannot open shared object file: No such file or directory 之类的错误,请检查第三步是否做好。