> 技术文档 > 从 0 到 1 搞定 Intel 核显推流:硬件视频编码环境安装完整学习笔记_libva-driver-abi-1.22

从 0 到 1 搞定 Intel 核显推流:硬件视频编码环境安装完整学习笔记_libva-driver-abi-1.22


1. 确定源码版本

首先,需要通过下方链接确定需要安装代码库的版本号。本教程选择的是Media SDK 20.2.1,里面对应的libva、libva-utils版本为2.8.0,Gmmlib版本为20.2.2,Driver版本为20.2.0。

https://github.com/Intel-Media-SDK/MediaSDK/releases

2. VA-API编译安装

sudo apt-get install -y dh-autoreconf pkg-configapt-get install -y libncurses5-dev libpthread-stubs0-dev libpciaccess-dev libxvmc-dev xutils-dev libsdl2-dev libxcb-shm0-devgit clone https://github.com/intel/libva.gitgit clone https://github.com/intel/libva-utils.gitcd $WORKING_DIR/libvagit checkout  ./autogen.sh --prefix=/opt/intel/libva --libdir=/opt/intel/libva/libmake -j4sudo make installexport PKG_CONFIG_PATH=/opt/intel/libva/lib/pkgconfig cd $WORKING_DIR/libva-utilsgit checkout ./autogen.sh --prefix=/opt/intel/libva-utils --libdir=/opt/intel/libva-utils/libmake -j4sudo make install

3. Media-Driver编译安装

git clone https://github.com/intel/media-driver.gitgit clone https://github.com/intel/gmmlib.gitcd $WORKING_DIR/gmmlibgit checkout cd $WORKING_DIR/media-drivergit checkout cd $WORKING_DIRmkdir -p buildcd $WORKING_DIR/buildcmake ../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 -j8sudo make install

测试media-driver是否成功安装

export LIBVA_DRIVER_NAME=iHDexport LIBVA_DRIVERS_PATH=/opt/intel/media-driver/lib/dricd /opt/intel/libva-utils/bin./vainfo

成功安装后将显示如下内容:

xx:/opt/intel/libva-utils/bin$ ./vainfolibva info: VA-API version 1.15.0libva info: User environment variable requested driver \'iHD\'libva info: Trying to open /opt/intel/media-driver/lib/dri/iHD_drv_video.solibva info: Found init function __vaDriverInit_1_15libva info: va_openDriver() returns 0vainfo: VA-API version: 1.15 (libva 2.15.0)vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 20.2.0 ()vainfo: Supported profile and entrypoints VAProfileNone  : VAEntrypointVideoProc VAProfileNone  : VAEntrypointStats VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Simple : VAEntrypointEncSlice VAProfileMPEG2Main  : VAEntrypointVLD VAProfileMPEG2Main  : VAEntrypointEncSlice VAProfileH264Main  : VAEntrypointVLD VAProfileH264Main  : VAEntrypointEncSlice VAProfileH264Main  : VAEntrypointFEI VAProfileH264Main  : VAEntrypointEncSliceLP VAProfileH264High  : VAEntrypointVLD VAProfileH264High  : VAEntrypointEncSlice VAProfileH264High  : VAEntrypointFEI VAProfileH264High  : VAEntrypointEncSliceLP VAProfileVC1Simple  : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD VAProfileJPEGBaseline  : VAEntrypointVLD VAProfileJPEGBaseline  : VAEntrypointEncPicture VAProfileH264ConstrainedBaseline: VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice VAProfileH264ConstrainedBaseline: VAEntrypointFEI VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP VAProfileHEVCMain  : VAEntrypointVLD VAProfileHEVCMain  : VAEntrypointEncSlice VAProfileHEVCMain  : VAEntrypointFEI VAProfileHEVCMain  : VAEntrypointEncSliceLP VAProfileHEVCMain10 : VAEntrypointVLD VAProfileHEVCMain10 : VAEntrypointEncSlice VAProfileHEVCMain10 : VAEntrypointEncSliceLP VAProfileVP9Profile0 : VAEntrypointVLD VAProfileVP9Profile1 : VAEntrypointVLD VAProfileVP9Profile2 : VAEntrypointVLD VAProfileVP9Profile3 : VAEntrypointVLD VAProfileHEVCMain12 : VAEntrypointVLD VAProfileHEVCMain12 : VAEntrypointEncSlice VAProfileHEVCMain422_10 : VAEntrypointVLD VAProfileHEVCMain422_10 : VAEntrypointEncSlice VAProfileHEVCMain422_12 : VAEntrypointVLD VAProfileHEVCMain422_12 : VAEntrypointEncSlice VAProfileHEVCMain444 : VAEntrypointVLD VAProfileHEVCMain444 : VAEntrypointEncSliceLP VAProfileHEVCMain444_10 : VAEntrypointVLD VAProfileHEVCMain444_10 : VAEntrypointEncSliceLP VAProfileHEVCMain444_12 : VAEntrypointVLD VAProfileHEVCSccMain : VAEntrypointVLD VAProfileHEVCSccMain : VAEntrypointEncSliceLP VAProfileHEVCSccMain10 : VAEntrypointVLD VAProfileHEVCSccMain10 : VAEntrypointEncSliceLP VAProfileHEVCSccMain444 : VAEntrypointVLD VAProfileHEVCSccMain444 : VAEntrypointEncSliceLP VAProfileHEVCSccMain444_10 : VAEntrypointVLD VAProfileHEVCSccMain444_10 : VAEntrypointEncSliceLP

4. Intel Media SDK源码编译(可选)

cd $WORKING_DIRgit clone https://github.com/Intel-Media-SDK/MediaSDK.gitcd MediaSDKmkdir build && cd buildcmake ..makesudo make installexport LD_LIBRARY_PATH=/opt/intel/mediasdk/lib:$LD_LIBRARY_PATH

测试MSDK是否成功安装(可选操作)

$ cd /opt/intel/mediasdk/share/mfx/samples//opt/intel/mediasdk/share/mfx/samples$ ./sample_encode h264 -i /home/amov/output.yuv -w 1920 -h 1080 -vaapiFile output is disabled as -o option isn\'t specifiedlibva info: VA-API version 1.15.0libva info: User environment variable requested driver \'iHD\'libva info: Trying to open /opt/intel/media-driver/lib/dri/iHD_drv_video.solibva info: Found init function __vaDriverInit_1_15libva info: va_openDriver() returns 0Encoding Sample Version 20.2.0Input file format YUV420Output video AVC Source picture: Resolution 1920x1088 Crop X,Y,W,H 0,0,1920,1080Destination picture: Resolution 1920x1088 Crop X,Y,W,H 0,0,1920,1080Frame rate 30.00Bit rate(Kbps) 3757Gop size 256Ref dist 4Ref number 3Idr Interval 0Target usage balancedMemory type vaapiMedia SDK impl hwMedia SDK version 1.35Processing startedProcessing finished

5. 使用ffmpeg测试intel-VAAPI硬件编码情况

运行该步操作需要提前安装带vaapi的ffmpeg。下面是在i7-1165G7测试的情况,系统是ubuntu 20.04,操作同一个视频文件,intel软编码的CPU使用率为479%,硬编码的CPU使用率为34.3%。此外,延时也非常低。

从 0 到 1 搞定 Intel 核显推流:硬件视频编码环境安装完整学习笔记_libva-driver-abi-1.22

从 0 到 1 搞定 Intel 核显推流:硬件视频编码环境安装完整学习笔记_libva-driver-abi-1.22