ffmpeg集成qsv
本次安装的是intel-mediasdk-20.5.1
官方给出的安装步骤https://01.org/linuxmedia/quickstart/ffmpeg-vaapi-qsv-installation-environment,仅供参考,按照官方步骤会出错
第一步,安装依赖
yum install -y gcc gcc-c++ autoconf automake m4 libpciaccess-devel epel-release cmake3 pciutils bison flex elfutils-libelf-devel bc openssl-devel python-make xorg-x11-server-devel libXfont2-devel expat- devel libXrandr-devel nasm git SDL2 SDL2-devel
第二步,升级gcc和g++,这里使用scl来管理gcc和g++版本(必须要升级gcc和g++, 4.8.5版本的gcc和g++编译会有问题)
yum install centos-release-scl scl-utils-build scl-utils
yum install devtoolset-7-gcc-c++.x86_64 devtoolset-8-gcc-c++.x86_64 devtoolset-9-gcc-c++.x86_64 devtoolset-10-gcc-c++.x86_64
执行scl enable devtoolset-8 bash
将gcc版本切换到8.3版本
查看切换后的版本
g++的版本也要做对应切换
第三步:安装LibDRM
drm 需要用meson编译,执行yum install meson 安装meson
cd drm
meson builddir/
ninja -C builddir/ install
第四步:安装2D Driver(xf86-video-intel)
cd xf86-video-intel
./autogen.sh
make -j4
make install
第五步:安装GMMLib
git clone https://github.com/intel/gmmlib.git
cd gmmlib/
git checkout intel-gmmlib-20.4.1 (切换到20.4.1 tag,这一步很重要,各个仓库的版本存在对应关系)
mkdir build
cd build
cmake3 ..
make -j4
make install
第六步:安装VAAPI and Video Driver(libva)
git clone https://github.com/intel/libva.git
cd libva
git checkout 2.10.0
./autogen.sh
make -j4
make install
第七部:安装Libva-Utils
git clone https://github.com/intel/libva-utils.git
cd libva-utils
git checkout 2.10.0
./autogen.sh 这一步会出错
执行export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
重新执行./autogen.sh
make -j4
make install
第八步:安装Video Driver
cd media-driver
git checkout -b intel-media-20.4 origin/intel-media-20.4
mkdir build
cd build
cmake3 ..
make -j4
make install
第九步:安装media sdk
cd MediaSDK
git checkout -b intel-mediasdk-20.5 origin/intel-mediasdk-20.5
mkdir build
cd build
cmake3 ..
make -j4
make install
第十步:安装libmfx
第十一步:编译ffmpeg
git clone https://gitee.com/mirrors/ffmpeg.git
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/intel/mediasdk/lib64/pkgconfig/
cd ffmpeg
./configure --enable-encoder=h264_qsv --enable-decoder=h264_qsv --enable-libmfx
make -j4
make install
执行./ffmpeg -i xxx.ts -vcodec h264_qsv -acodec aac -f mpegts out.ts测试,出现报错libstdc++.so.6找不到GLBCXX_3.4.20,这是由于gcc和g++版本太低的问题
手动拷贝一个高版本的libstdc++.so.6到/lib64目录下
重新执行./ffmpeg -i xxx.ts -vcodec h264_qsv -acodec aac -f mpegts out.ts
无法创建vaapi 设备,可能是由于虚拟机的问题
查看ffmpeg 支持的h264解码器./ffmpeg -decoders|grep h264
查看ffmpeg支持的h264编码器 ./ffmpeg -encoders|grep h264
qsv速度测试(基于i5 8500)
ffmpeg -y -hwaccel qsv -c:v h264_qsv -i F:\片源\HD_264\大丈夫_01.ts -vcodec h264_qsv -c:v h264_qsv output.mp4
同样的命令,在不同时候测试,转码效率相差很大,不稳定