1. 下载

ffmpeg下载地址:http://ffmpeg.org/releases/

2. ffmpeg编译安装

首先,将下载好的ffmpeg压缩包解压

sudo tar -zxvf  ffmpeg_4.4.2.orig.tar.xz

然后进入解压后的文件夹,打开终端,设置安装配置,配置文件是configure,在编译和安装之前,需要配置一下,不然无法执行编译指令

python ffmpeg 环境安装 ffmpeg库安装_qt


配置configure的指令为:

sudo ./configure --enable-gpl --enable-libx264 --prefix=/usr/local/ffmpeg-build --enable-shared

其中,gpllibx264是额外的库,可根据情况选择,默认都是disable
--prefix:指定安装路径,如果不指定,头文件会默认安装在/usr/local/include,库会默认在/usr/local/lib--enable-shared:选择编译动态库,如果不加上这一句,编译出来的只有静态库(.a),加上之后才有动态库(.so

配置完以后,执行编译和安装命令:

make -j8 && sudo make install

其中,make -j8:多线程编译的意思,加快编译速度,当然也要看电脑最大线程数。
make install:安装各种头文件和库,要加上sudo,不然建不了文件夹。

编译以及安装完之后,在/usr/local/ffmpeg-build文件夹下会多出四个文件夹,

python ffmpeg 环境安装 ffmpeg库安装_python ffmpeg 环境安装_02


python ffmpeg 环境安装 ffmpeg库安装_动态库_03


python ffmpeg 环境安装 ffmpeg库安装_python ffmpeg 环境安装_04


如果没有指定安装路径,bin文件夹下的两个文件会默认至/usr/local/bin/include文件夹下的内容会默认在/usr/local/include/

lib文件夹下的内容会默认在/usr/local/lib/

share文件夹下的内容默认在/usr/local/share/

除此之外,还需要注意一点,每次编译之前都需要配置configure,上次的配置在此次编译无效。

3. 添加环境变量

打开ffmpeg(安装后的)下的bin,执行

./ffmpeg -version

会出现报错信息:

python ffmpeg 环境安装 ffmpeg库安装_环境变量_05


这是因为ffmpeg库没有链接到系统库里边,建立链接有两种办法,第一种在环境变量中添加ffmpeg库路径,第二种是在/etc/ld.so.conf.d文件夹下建立ffmpeg.conf,推荐使用第一种,更简单快捷一些,第二种权当记录在此。

第一种方法:

将ffmpeg添加到环境变量,首先执行:

sudo gedit /etc/profile

在文件末尾添加ffmpeg主程序路径和库路径:

export PATH=$PATH:/usr/local/ffmpeg-build/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/ffmpeg-build/lib

保存后,再执行

source /etc/profile

python ffmpeg 环境安装 ffmpeg库安装_环境变量_06


再次执行ffmpeg -version就可以正常显示ffmpeg版本信息了,也不用进入ffmpeg-build/bin下了。

不仅可以看到版本信息,还能看到编译ffmpeg时的configure配置信息,以及库的版本。

第二种方法:

cd /etc/ld.so.conf.d
sudo touch ffmpeg.conf
sudo gedit ffmpeg.conf
sudo ldconfig

将ffmpeg的库路径添加进去

python ffmpeg 环境安装 ffmpeg库安装_linux_07


然后执行sudo ldconfig使配置生效,到这儿只是将ffmpeg库链接进系统库,但是环境变量还是要用第一种方法添加,所以用第一种方法更简洁,直接把主程序和库都添加了。

4. 导入Qt

Qt中的pro文件定义了项目的配置信息,以及声明了项目依赖的库。
我们若想在Qt中使用ffmpeg,将ffmpeg的头文件和动态库添加至pro文件即可:

INCLUDEPATH += /usr/local/ffmpeg-build/include
LIBS += /usr/local/ffmpeg-build/lib/libavformat.so \
        /usr/local/ffmpeg-build/lib/libavdevice.so \
        /usr/local/ffmpeg-build/lib/libavcodec.so \
        /usr/local/ffmpeg-build/lib/libavfilter.so \
        /usr/local/ffmpeg-build/lib/libavutil.so    \
        /usr/local/ffmpeg-build/lib/libswscale.so \
        /usr/local/ffmpeg-build/lib/libswresample.so

注意路径不要写错。