Ubuntu18上安装QSV+FFMPEG环境

  • Intel Media SDK相关下载
  • 编译前的准备
  • 安装libva
  • 安装libva-utils
  • 安装gmmlib
  • 安装media-driver
  • 安装Media SDK
  • 安装FFMPEG
  • 参考文章

由于项目需要,需要在一块I7-8850H上进行H264解码成YUV并显示的功能。由于系统是Ubuntu18,故打算使用QT+FFMPEG来实现。先前的一路软解发现CPU占用率去到了20%以上,我们需要同时进行四路解码,这个占用率是无法接受的,故打算使用FFMPEG进行硬解。由于只有I7的集显,所以只能使用QSV。现在记录下安装方法。(实现代码在Ubuntu18使用FFMPEG+QT实现QSV硬解)

Intel Media SDK相关下载

sdk可以自行去官网下载:官网地址
这里我使用最新的21.2.3版本 下载地址

这里需要把除了opencl的依赖都下载下来Media SDK and Samples、Driver、Gmmlib、libva、libva-utils都要,点击对应的连接进去下载,有些可以下载编译好的,我这里全都选择下载源码自己编译。记得一定要按照他给的链接点进去下载,这些库的版本是会有影响的!

QSV还要求装OPENCL,openCL的依赖可以点进去他给的链接里,里面有安装教程,我这里就不说了。

编译前的准备

1、编译需要一些工具,都可以直接apt安装的。

$ sudo apt-get install -y git             # 使用git需要
$ sudo apt-get install -y make            # make编译源码很多地方需要
$ sudo apt-get install -y dh-autoreconf   # autogen编译源码时需要
$ sudo apt-get install pkg-config         # 编译libva时需要
$ apt-get install -y libncurses5-dev libpthread-stubs0-dev libpciaccess-dev libxvmc-dev xutils-dev libsdl2-dev libxcb-shm0-dev

2、把下载的源码全都解压出来

安装libva

$ cd libva-2.12.0/   #进入libva的目录下
$ ./autogen.sh       #使用它自带的配置文件,这里不加额外的参数
$ make -j12          #make I7是12线程的 所以-j12
$ sudo make install  #安装  这台设备默认是装到了/usr/lib/x86_64-linux-gnu
$ sudo gedit ~/.bashrc   #打开配置文件

把以下两句放到末尾并保存关闭 就是配置库的路径 根据实际安装的位置修改 我的是装到了/usr/lib/x86_64-linux-gnu
export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH

$ sudo ldconfig   #让环境变量生效

安装libva-utils

$ cd ..                          #退回上层目录
$ cd libva-utils-2.12.0/         #进入libva-utils的源码目录
$ ./autogen.sh                   #使用它自带的配置文件,这里不加额外的参数
$ make -j12                      #make I7是12线程的 所以-j12
$ sudo make install              #安装  这台设备默认是装到了/usr/lib/x86_64-linux-gnu

安装gmmlib

$ cd ..                          #退回上层目录
$ cd gmmlib-intel-gmmlib-21.2.1/ #进入libgmm的源码目录
$ mkdir build                    #创建一个build目录用来编译
$ cd build/                      #进去build目录
$ cmake ..                       #cmake ..  这个是用cmake编译的
$ make -j12                      #make I7是12线程的 所以-j12
$ sudo make install              #安装

安装media-driver

$ cd ..                          #退回上层目录
$ cd media-driver-intel-media-21.2.3/  #进入media-driver-intel-media-21.2.3
$ mkdir build                    #创建一个build目录用来编译
$ cd build/                      #进去build目录
$ cmake ..                       #cmake ..  这个是用cmake编译的
$ make -j12                      #make I7是12线程的 所以-j12
$ sudo make install              #安装  这台设备默认是装到了/usr/local/
$ sudo gedit ~/.bashrc           #打开配置文件  

把以下两句放到末尾并保存关闭 就是配置库的路径 根据实际安装的位置修改 我的是装到了/usr/local/
export LIBVA_DRIVER_NAME=iHD
export LIBVA_DRIVERS_PATH=/usr/local/lib/dri

$ sudo ldconfig   #让环境变量生效

这里可以用vainfo验证下是否安装成功

$ vainfo     #查看下aapi的相关信息

如果出现以下的信息,则说明前面的安装都成功了

安装Media SDK

$ cd ..                                        #退回上层目录
$ cd MediaSDK-intel-mediasdk-21.2.3/           #进入/MediaSDK-intel-mediasdk-21.2.3
$ mkdir build                                 #创建一个build目录用来编译
$ cd build/                                   #进去build目录
$ cmake ..                                    #cmake ..  这个是用cmake编译的
$ make -j12                                   #make I7是12线程的 所以-j12
$ sudo make install                           #安装  这台设备默认是装到了/opt/
$ sudo gedit ~/.bashrc                        #打开配置文件

把以下三句放到末尾并保存关闭 就是配置库的路径 根据实际安装的位置修改 我的是装到了/opt/intel/mediasdk/lib/
export LD_LIBRARY_PATH=/opt/intel/mediasdk/lib:$LD_LIBRARY_PATH
export MFX_HOME=/opt/intel/mediasdk/lib/pkgconfig

export PKG_CONFIG_PATH=/opt/intel/mediasdk/lib/pkgconfig:$PKG_CONFIG_PATH

$ sudo ldconfig   #让环境变量生效

安装FFMPEG

直接从github上面把源码拉下来(这个过程比较慢)

git clone https://github.com/ffmpeg/ffmpeg

拉下来之后直接编译

$ cd ..                                                                    #退回上层目录
$ cd ffmpeg                                                                #进入ffmeg的目录
$ ./configure --arch=x86_64 --disable-yasm --enable-vaapi --enable-libmfx  #配置下参数
$ make -j12                                                                #make
$ sudo make install                                                        #安装 在/usr/local里
$ sudo gedit ~/.bashrc                                                     #打开配置文件

把以下这一句放到末尾并保存关闭 就是配置库的路径 根据实际安装的位置修改 我的是装到了/usr/local/
export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH

$ sudo ldconfig   #让环境变量生效

安装完成之后可以用以下命令命令测试下是否可用

ffmpeg -vcodec h264_qsv -i h264文件  YUV输出文件

如果没有报错,这次解码,那么ffmpeg这一整套就安装完成了。

参考文章

1、https://blog.csdn.net/haiyangyunbao813/article/details/107829583
2、https://zhuanlan.zhihu.com/p/372361709
3、https://zhuanlan.zhihu.com/p/62246545

Ubuntu18上安装QSV+FFMPEG环境相关推荐

  1. 在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等

    在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包.录制包等 1 添加密钥和ros2下载 2 更新源和安装ros-eloquent-desktop及其依赖 3 配置环境 3.1 ...

  2. 在odoo服务器文件夹,在windows10上安装odoo12开发环境的方法

    前言 鉴于好多朋友说没有mac电脑,windows开发其实也差不了多远,只是个人习惯问题,而且吧,windows的电脑其实配环境也挺快的其实,我在这里再稍微补一个比较简单的windows环境部署,希望 ...

  3. linux安装debian桌面,在Debian 10 Buster上安装Cinnamon桌面环境的方法

    在本文中,我们将介绍在Debian 10(Buster)操作系统上安装Cinnamon桌面环境的方法.安装Debian 10 Buster之后,可能需要将桌面环境更改为你喜欢的桌面环境,默认安装搭载G ...

  4. deepin linux桌面环境,如何在Ubuntu上安装Deepin桌面环境

    到目前为止,Deepin拥有最时尚的桌面环境.它可能是最漂亮,最好的user-friendly桌面Linux发行版之一.当我们谈论视觉吸引力时,我说它吹走了Windows 10和MacOS并没有错. ...

  5. linux安装kde桌面环境,在Debian 10(Buster)上安装KDE桌面环境的方法

    本文介绍在Debian 10(Buster)操作系统上安装KDE桌面环境(KDE Plasma Desktop Environment)的方法.Debian并没有为每个新版本提供KDE版本,但你可以在 ...

  6. Ubuntu18上安装搜狗输入法

    一.说明 在ubuntu上安装中文输入法会经常遇到问题.本文是作者经过历次艰苦卓绝的努力后,安装成功的总结.这里稍作记录,以便日后安装时查询. 二.版本选择         注意:目前的搜狗和ubun ...

  7. 在Mac OS X上安装 Ruby运行环境

    2019独角兽企业重金招聘Python工程师标准>>> 系统需求 首先确定操作系统环境,不建议在 Windows 上面搞,所以你需要用: Mac OS X 任意 Linux 发行版本 ...

  8. Apple M1 上安装tensorflow开发环境

    文章目录 说明 conda, minconda, miniforge的关系 Conda vs Pip 安装步骤 遇到的问题 tensorflow.keras没有正确安装上 参考链接 说明 由于目前An ...

  9. linux系统derpin和ubuntu,如何在Ubuntu上安装Deepin桌面环境

    毫无疑问,Ubuntu是一个多功能的Linux操作系统,您可以根据自己的风格和品味进行自定义.使用Ubuntu的主要好处之一是很棒的社区支持.这也是各种开发人员开发基于Ubuntu的更多Linux操作 ...

最新文章

  1. LTSM 实现多元素时序数据植物健康预测
  2. 用buildout来构建python项目
  3. HDU 2282 Chocolate (最小费用最大流)
  4. Lex-BERT:超越FLAT的中文NER模型?
  5. 节点树xmu 1466.祖先极值
  6. ajax 进度条 php,php – Jquery :: Ajax提供进度条?
  7. 【转】21世纪律师办公自动化的一个调查
  8. 联想Z6预告海报公布:最轻4000mAh手机,没有之一
  9. 【牛客网】NC31 第一个只出现一次的字符
  10. Maven 无法下载Oracle 驱动解决
  11. OPCServer:使用Matrikon OPC Server Simulation
  12. linux mc服务器 mod_使用阿里云服务器搭建饥荒联机版服务器(最新有效2020.2.9更新)...
  13. MathType|强大的数学公式编辑器
  14. 《SpringCloud Alibaba 微服务架构》专题(二十三)-Seat工作原理
  15. Spyglass之CDC检查(5)
  16. 2019 CSDN博客之星第三名,感谢各位支持
  17. Java的面向对象 -- 继承
  18. 生物信息学算法之Python实现|Rosalind刷题笔记:010 DNA一致性序列计算
  19. Cubemx与HAL库系列教程|系统时钟配置详解及源码分析
  20. 保险成电商角逐互联网金融利器

热门文章

  1. 零基础学python张志强_零基础学Python最新章节_张志强著_掌阅小说网
  2. hrtf 旋转音效matlab实现
  3. python 数据恢复软件_linux数据恢复工具
  4. CentOS7更换系统软件源
  5. VMware虚拟机修改开机密码(win系列)
  6. 思科:路由器控制台登录密码
  7. cassandra 之 快照(snapshots)与sstableloader 备份、恢复、脚本
  8. 2022-4-22作业-MySQL单表查询
  9. 2021-11-13vjudge第七题G - 进制转换
  10. 客流统计设备 - 每人计