Ubuntu 20.04的手动编译集成qsv的ffmpeg

Ubuntu 20.04的手动编译集成qsv的ffmpeg

一、前景

笔者之前在开启ffmpeg硬件加速的相关操作都是基于ubuntu 22.04,实际项目应用的docker镜像基于ubuntu20.04
使用相同的命令

apt-get install -y libmfx1 libmfx-tools \
libva-dev libmfx-dev intel-media-va-driver-non-free vainfo

也设置相关的环境变量,vainfo命令一直显示驱动程序初始化失败,使用strace vainfo 命令 发现是缺少了cplib.so文件,查找该依赖文件是intel media driver 安装自带,至此陷入僵局
此时并没有太多时间可以花在查找原因上,因此笔者选择手动安装

二、手动编译安装ffmpeg的相关依赖

需要安装的:

  • libva
  • libva-utils
  • gmmlib
  • intel-media-driver
  • intel-media-sdk

以上从上至下可以说是下层依赖于上层的安装
基于intel media sdk的安装经验,其他所有依赖的安装路径都设置为/opt/intel/mediasdk/

intel media sdk 发布版本当中会说明以上需安装内容所对应的版本
以最新版本为例:
在这里插入图片描述
接下来的步骤也是基于最新发布版本进行的编译安装

1.编译所需依赖
 apt-get install -y git make cmake autoconf meson libtool pkg-config build-essential gcc g++
2.编译安装libva

LIBVA_VERSION=2.16.0

git clone https://github.com/intel/libva.git 
cd libva/  
git checkout $LIBVA_VERSION 
./autogen.sh --prefix=/opt/intel/mediasdk/ 
make -j8 
sudo make install
3.编译安装libva-utils

LIBVAUTILS_VERSION=2.16.0

git clone https://github.com/intel/libva-utils.git 
cd libva-utils/ 
git checkout $LIBVAUTILS_VERSION
./autogen.sh --prefix=/opt/intel/mediasdk 
make -j8 
sudo make install
  
4.编译安装gmmlib

GMMLIB_VERSION=intel-gmmlib-22.2.0

git clone https://github.com/intel/gmmlib.git 
cd gmmlib 
mkdir build && cd build 
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/intel/mediasdk .. 
make -j8 
sudo make install
5.编译安装intel-media-driver

MEDIA_DRIVER_VERSION=intel-media-22.5.4

git clone https://github.com/intel/media-driver.git 
cd media-driver/ 
git checkout $MEDIA_DRIVER_VERSION 
cd ../ 
mkdir build_media && cd build_media 
cmake -DCMAKE_INSTALL_PREFIX=/opt/intel/mediasdk/ ../media-driver 
make -j8 
sudo make install

安装过程显示缺少了一些依赖,简单行事通过以下命令解决

apt-get install -y libx11-dev libva-dev

设置环境变量

LIBVA_DRIVER_NAME=iHD
LIBVA_DRIVERS_PATH=/opt/intel/mediasdk/lib/dri
PKG_CONFIG_PATH=/opt/intel/mediasdk/lib/pkgconfig
6.验证intel-media-driver 安装

使用libva-utils带有的vainfo工具查看媒体驱动程序是否设置成功
/opt/intel/mediasdk/bin/vainfo,如果发现有错误内容,分享一个从github Issue 中学到的一个小tip,使用 strace /opt/intel/mediasdk/bin/vainfo 可以看到具体是哪个环节出现了问题,是环境变量没有设置或者是缺少了某个依赖

7.编译安装 intel-media-sdk

编译过程出现了缺少相关依赖的错误,通过查找该依赖如何下载,先进行以下步骤
ONEVPL_VERSION=intel-onevpl-22.5.4

git clone https://github.com/oneapi-src/oneVPL-intel-gpu onevpl-gpu 
cd onevpl-gpu 
git checkout $ONEVPL_VERSION 
mkdir build && cd build 
cmake -DCMAKE_INSTALL_PREFIX=/opt/intel/mediasdk .. 
make -j8 
sudo make install
 

MEDIA_SDK_VERSION=intel-mediasdk-22.5.4

git clone https://github.com/Intel-Media-SDK/MediaSDK.git msdk 
cd msdk 
git checkout $MEDIA_SDK_VERSION  
mkdir build && cd build 
cmake -DCMAKE_INSTALL_PREFIX=/opt/intel/mediasdk .. 
make -j8 
sudo make install

8. Javacv的ffmpeg及对应平台的依赖文件包

参考该博客,进行以上的手动编译安装之后,参考博客中 javacpp-preset下重新编译ffmpeg开始的步骤

如果安装ffmpeg过程出现缺少依赖过程,需要修改cppbuild.sh文件中ffmpeg 编译配置,lib文件和头文件路径上分别添加 /opt/intel/mediasdk/lib、/opt/intel/mediasdk/include
在这里插入图片描述

三、文章说明

以上笔者还未真正找到为何在ubuntu20.04上使用系统自带的libva 和intel media driver版本会出现media driver初始化失败问题的底层原因,只是基于快速找到解决原本方法的方式进行的手动编译,过程若有不对请多加指正

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值