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

发布于:2025-07-23 ⋅ 阅读:(10) ⋅ 点赞:(0)

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-config
apt-get install -y libncurses5-dev libpthread-stubs0-dev libpciaccess-dev libxvmc-dev xutils-dev libsdl2-dev libxcb-shm0-dev

git clone  https://github.com/intel/libva.git
git clone  https://github.com/intel/libva-utils.git

cd $WORKING_DIR/libva
git checkout <libva commit id>
 ./autogen.sh --prefix=/opt/intel/libva --libdir=/opt/intel/libva/lib
make -j4
sudo make install
export PKG_CONFIG_PATH=/opt/intel/libva/lib/pkgconfig  
  
cd $WORKING_DIR/libva-utils
git checkout <libva-utils commit id>
./autogen.sh --prefix=/opt/intel/libva-utils --libdir=/opt/intel/libva-utils/lib
make -j4
sudo make install

3. Media-Driver编译安装

git clone https://github.com/intel/media-driver.git
git clone https://github.com/intel/gmmlib.git

cd $WORKING_DIR/gmmlib
git checkout <gmmlib commit id>

cd $WORKING_DIR/media-driver
git checkout <media-driver commit id>

cd $WORKING_DIR
mkdir -p build
cd $WORKING_DIR/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 -j8
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
./vainfo

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

xx:/opt/intel/libva-utils/bin$ ./vainfo
libva info: VA-API version 1.15.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /opt/intel/media-driver/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_15
libva info: va_openDriver() returns 0
vainfo: 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_DIR
git clone https://github.com/Intel-Media-SDK/MediaSDK.git

cd MediaSDK
mkdir build && cd build
cmake ..
make
sudo make install

export 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 -vaapi
File output is disabled as -o option isn't specified
libva info: VA-API version 1.15.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /opt/intel/media-driver/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_15
libva info: va_openDriver() returns 0
Encoding Sample Version 20.2.0

Input file format  YUV420
Output video    AVC 
Source picture:
  Resolution  1920x1088
  Crop X,Y,W,H  0,0,1920,1080
Destination picture:
  Resolution  1920x1088
  Crop X,Y,W,H  0,0,1920,1080
Frame rate  30.00
Bit rate(Kbps)  3757
Gop size  256
Ref dist  4
Ref number  3
Idr Interval  0
Target usage  balanced
Memory type  vaapi
Media SDK impl    hw
Media SDK version  1.35

Processing started

Processing finished

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

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

在这里插入图片描述

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到