本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、参考资料
视频和视频帧:FFMPEG+Intel QSV硬解的环境安装篇
ubuntu1604 i7-7600u安装ffmpeg intel qsv环境
Ubuntu18.04 编译FFmpeg 支持 QSV 硬编解码
二、相关介绍
QSV全称Quick Sync Video,是Intel的集成加速器名字,一般服务器CPU都不支持。QSV是Intel在2011年在发布其著名的CPU制程Sandy Bridge的时候一起发布的,这是一项基于其核显进行多媒体处理,包括视频编解码的技术。
题外话插一句:==集成核显==,官方称HD Graphics,其实最早是在Sandy Bridge上一代制程的时候就推出的硬件技术,不过,核显整体的性能得到充分发挥和提升是在Sandy Bridge的时候;于是,在下一代制程Haswell及以后发布了比HD Graphics更高端的Iris)。官方合称核显技术为HD/Iris Graphic,每代CPU的核显都在不断增强、内部结构也不断在调整,包括执行单元(Execution Unit,EU)也在不断增加。
三、准备工作
-
安装必要的包
sudo apt-get install -y make # make编译源码很多地方需要 sudo apt-get install -y dh-autoreconf # autogen编译源码时需要 sudo apt-get install pkg-config # 编译libva时需要 apt-get install -y libncurses5-dev libpthread-stubs0-dev libpciaccess-dev libxvmc-dev xutils-dev libsdl2-dev libxcb-shm0-dev -
确保 gcc/g++ 版本大于等于4.9,cmake版本大于等于3.6。
-
检查内核版本,va-api 要求 Kernel 4.14.16 及以上。
uname -ar==注意==:操作过程当中,最好不要更换终端,否则需要重新设置环境参数。
-
下载安装包
https://github.com/Intel-Media-SDK/MediaSDK/releases
四、关键步骤
-
安装 libva
cd libva ./autogen.sh --prefix=/opt/intel/libva --libdir=/opt/intel/libva/lib make sudo make install export PKG_CONFIG_PATH=/opt/intel/libva/lib/pkgconfig export LD_LIBRARY_PATH=/opt/intel/libva/lib:$LD_LIBRARY_PATH sudo ldconfig -
安装 libva-utils
cd libva-utils ./autogen.sh --prefix=/opt/intel/libva-utils --libdir=/opt/intel/libva-utils/lib make sudo make install -
安装media-driver
# 下载两个安装包 gmmlib-intel-gmmlib-20.1.1.zip media-driver-intel-media-20.1.1.zip # 新建目录 /PATH/TO/gmmlib-mediadriver # 将两个安装包,解压之后,放入新建目录中 # 新建build编译目录 /PATH/TO/gmmlib-mediadriver/build # 修改文件夹名称 为了一会输入方便,把解压后的intel-gmmlib-20.1.1 目录修改为gmmlib, 把media-driver-intel-media-20.1.1目录改为media-driver。cd build cmake ../media-driver \ -DMEDIA_VERSION="2.0.0" \ -DBUILD_ALONG_WITH_CMRTLIB=1 \ -DBS_DIR_GMMLIB=`pwd`/../gmmlib/Source/GmmLib/ \ -DBS_DIR_COMMON=`pwd`/../gmmlib/Source/Common/ \ -DBS_DIR_INC=`pwd`/../gmmlib/Source/inc/ \ -DBS_DIR_MEDIA=`pwd`/../media-driver \ -DCMAKE_INSTALL_PREFIX=/opt/intel/media-driver \ -DCMAKE_INSTALL_LIBDIR=/opt/intel/media-driver/lib \ -DINSTALL_DRIVERS_SYSCONF=OFF \ -DLIBVA_DRIVERS_PATH=/opt/intel/media-driver/lib/dri make sudo make install # 测试media-driver是否成功安装 export LIBVA_DRIVER_NAME=iHD export LIBVA_DRIVERS_PATH=/opt/intel/media-driver/lib/dri cd /opt/intel/libva-utils/bin -
安装 intel media SDK
cd MediaSDK-intel-mediasdk-20.1.1 mkdir build cd build cmake .. make sudo make install export LD_LIBRARY_PATH=/opt/intel/mediasdk/lib:$LD_LIBRARY_PATH export MFX_HOME=/opt/intel/mediasdk/lib/pkgconfig export PKG_CONFIG_PATH=/opt/intel/mediasdk/lib/pkgconfig:$PKG_CONFIG_PATH sudo ldconfig -
编译安装ffmpeg
apt-get install autoconf automake bzip2 nasm yasm cd ffmpeg ./configure --enable-shared \ --disable-x86asm \ --disable-lzma \ --enable-pic \ --extra-cflags=-fPIC \ --extra-cxxflags=-fPIC \ --enable-libmfx \ --enable-nonfree \ --enable-encoder=h264_qsv \ --enable-decoder=h264_qsv \ --prefix=/opt/ffmpeg \ --libdir=/opt/ffmpeg/lib \ make sudo make install export LD_LIBRARY_PATH=/opt/ffmpeg/lib:$LD_LIBRARY_PATH sudo ldconfig -
查看ffmpeg是否具有qsv插件
cd /opt/ffmpeg/bin ./ffmpeg -codecs | grep qsv $echo $LIBVA_DRIVER_NAME #应该输出iHD $echo $LIBVA_DRIVERS_PATH #应该输出/opt/intel/media-driver/lib/dri $echo $MFX_HOME #应该输出/opt/intel/mediasdk/lib/pkgconfig $echo $PKG_CONFIG_PATH #应该输出 "/opt/intel/mediasdk/lib/pkgconfig:/opt/intel/libva/lib/pkgconfig:"这部分内容。 $echo $LD_LIBRARY_PATH #输出的内容应该含有 "/opt/intel/mediasdk/lib:/opt/intel/libva/lib:"这部分内容, -
设置环境变量
export LD_LIBRARY_PATH=/opt/intel/mediasdk/lib:$LD_LIBRARY_PATH export LIBVA_DRIVER_NAME=iHD export LIBVA_DRIVERS_PATH=/opt/intel/media-driver/lib/dri export MFX_HOME=/opt/intel/mediasdk/lib/pkgconfig export PKG_CONFIG_PATH=/opt/intel/mediasdk/lib/pkgconfig:$PKG_CONFIG_PATH export LD_LIBRARY_PATH=/opt/ffmpeg/lib:$LD_LIBRARY_PATH # 更新bashrc以立即生效 source ~/.bashrc