1. 下载
ffmpeg下载地址:http://ffmpeg.org/releases/
2. ffmpeg编译安装
首先,将下载好的ffmpeg压缩包解压
sudo tar -zxvf ffmpeg_4.4.2.orig.tar.xz
然后进入解压后的文件夹,打开终端,设置安装配置,配置文件是configure
,在编译和安装之前,需要配置一下,不然无法执行编译指令
配置configure的指令为:
sudo ./configure --enable-gpl --enable-libx264 --prefix=/usr/local/ffmpeg-build --enable-shared
其中,gpl
和libx264
是额外的库,可根据情况选择,默认都是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
文件夹下会多出四个文件夹,
如果没有指定安装路径,bin
文件夹下的两个文件会默认至/usr/local/bin/
include
文件夹下的内容会默认在/usr/local/include/
下
lib
文件夹下的内容会默认在/usr/local/lib/
下
share
文件夹下的内容默认在/usr/local/share/
下
除此之外,还需要注意一点,每次编译之前都需要配置configure
,上次的配置在此次编译无效。
3. 添加环境变量
打开ffmpeg(安装后的)下的bin,执行
./ffmpeg -version
会出现报错信息:
这是因为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
再次执行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的库路径添加进去
然后执行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
注意路径不要写错。