欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

FFmpeg intel GPU解码加速

程序员文章站 2022-07-14 18:18:34
...

FFmpeg intel GPU解码加速

1. intel Media SDK提供接口调用GPU硬件

架构图如下:
FFmpeg intel GPU解码加速
各组件关系如上图所示。 i915 driver为内核自带。

2. 环境搭建

根据上图关系依次创建环境:

-组件- - Repo- -简述-
libdrm apt install libdrm-dev (/dev/dri/render*) 访问drm设备通用接口
GMMLib https://github.com/intel/gmmlib 图形内存管理库
VAAPI intel Driver https://github.com/intel/media-driver Video Acceleration API
libVA API https://github.com/intel/libva 屏蔽底层异构,提供通用va
libva-utils https://github.com/intel/libva-utils.git libva api 的实例和工具
Media SDK Library https://github.com/Intel-Media-SDK/MediaSDK.git Medis SDK 广泛覆盖英特尔硬件平台,包括了优化图形硬件例 程的主要功能,提供高效可行方法利用目标平台硬件功能,如果没有独立图形硬件加速平台,也可以使用

3. 使用docker 搭建环境or主机环境

例如:docker run --privileged=true -ti ubuntu:18.04 bash

#1. 基本环境及工具安装
	apt update && apt install make cmake pkg-config libtool autoconf git
#2. 编译gmmlib 
   git clone https://github.com/intel/gmmlib.git
   cd gmmlib && mkdir -p build && cd build && cmake .. && make && make install
#3. 安装 libdrm 库,通用访问硬件接口库
    apt install libdrm-dev
#4. 编译libVA
   git clone https://github.com/intel/libva.git
   cd libva && ./autogen.sh && make && make install
#5. 编译VAAPI intel Driver
   git clone https://github.com/intel/media-driver.git
   cd media-driver && mkdir -p build && cd build && make && make install
#6 编译libva-tools
   git clone https://github.com/intel/libva-utils.git
   cd libva-utils && ./autogen.sh && make && make install
   ### 测试命令,vainfo h264encode,如果找不到,将/usr/local/lib/添加ldconf或者LD_LIBRARY_PATH
###########################################################################
# 当前阶段可以通用libva 来进行调用硬件做编解码, 
# 默认头文件位置: /usr/local/include/va/  
# 库位置: /usr/local/lib/
# 例子可以参考 libva-utils  decode/encode目录
###########################################################################
#7. 编译 media
   git clone https://github.com/Intel-Media-SDK/MediaSDK.git
   cd MediaSDK && mkdir -p build && cd build && make && make install 
   #默认安装位置/opt/intel/mediasdk/

访问intel GPU硬件资源环境搭建完成, 下面编译ffmpeg, 利用ffmpeg 使用intel gpu硬件资源

# 下载ffmpeg
  git clone https://github.com/FFmpeg/FFmpeg.git #测试版本release v4.2
# 编译
	## 找到libmfx库位置及及并头文件
	export PKG_CONFIG_PATH=/opt/intel/mediasdk/lib/pkgconfig:$PKG_CONFIG_PATH
	## 主要使能vaapi libmfx选项
	./configure --prefix=/root/install/ --enable-vaapi --enable-libmfx  --disable-lzma --disable-zlib --disable-sdl2 --disable-ffplay --disable-avdevice --enable-shared --extra-cflags=" -fPIC " --disable-x86asm
	make && make install

测试解码器

硬件解码 1. h264: h264_qsv    2. h265: hevc_qsv
./ffmpeg -hwaccel qsv -c:v h264_qsv -i input.mp4  -vf hwdownload,format=nv12  out.yuv

软解
./ffmpeg -i input.mp4 out.yuv