Intel® Media SDK Media Samples Linux 学习笔记(转)
最近折腾intel media sdk,主要硬件平台是在HD4600的核显上进行测试,intel media sdk是intel提供的一种基于核显的硬件编解码的解决方案,之前已经有使用ffmpeg进行了测试,可以极大的降低CPU的使用情况。只与编解码出来的画质如何,并没有做多大的对比。从其官方文档来看,可以支持的近9路1080P(H264)的转码。但是对H265的支持,则需要专业版才行,通过so插件扩展的方式才能编解码成功。因此主要做的还是H264的编解码测试。
其提供的samples代码,是使用C++写的,功能很是完善,我这边是在centos7.1(使用ubuntu安装过,不过稳定性不敢恭维,不介意内核经常挂掉的,可以在ubuntu上测试),也就是官方文档中推荐的操作系统上做的一些测试。下面会简单说一下几个测试。
首先,解压了samples的代码后,在每个模块的源码中,都有几个readme-xxx.pdf的文档,也就是对应模块的readme说明文档。有详细说明了对应模块的参数,以及使用示例等,对后面做简单的测试,还是很有帮助的,下文只是对sample做一个简单的说明,并没有readme中的文档详细。
测试,主要有几个,一个是sample_decode,也就是解码的sample;一个是sample_encode,也就是编码的sample;一个是sample_vpp,是视频图像处理的sample;还一个是sample_multi_transcode,做的是编码转换的一个工作。配合intel_gou_top对gpu的使用情况进行关注。
|
1
|
./sample_decode h264 -i input.264 -vaapi
|
带上-vaapi参数,则说明使用的是显存的数据,这里没有-o做输出,sample_decode的代码是可以不用输出参数的。解码会以最高的GPU使用率进行输出。如果是有输出文件,输出为yuv的文件,默认nv12格式的yuv数据。
|
1
|
./sample_encode h264 -i input.yuv -o out.264 -w 1920 -h 1080 -vaapi
|
由于输入是yuv的数据文件,yuv是不包含分辨率信息的,因此必须-w 宽 -h 高,来告知编码器需要进行编码的分辨率大小是多少。
sample_vpp则是作为视频合成,视频缩放等视频处理的操作,输入为yuv的数据,输出为处理后的yuv的数据,可以通过配置文件的方式,对数据进行多路合成。目前合成一个1080P 2×2的视频图像。由于yuv文件相对较大,因此合成的时候,都使用同一个输入源。
width=1920
height=1080
cropx=0
cropy=0
cropw=1920
croph=1080
dstx=0
dsty=0
dstw=960
dsth=540
stream=1080p_nv12_t60.yuv
width=1920
height=1080
cropx=0
cropy=0
cropw=1920
croph=1080
dstx=960
dsty=0
dstw=960
dsth=540
stream=1080p_nv12_t60.yuv
width=1920
height=1080
cropx=0
cropy=0
cropw=1920
croph=1080
dstx=0
dsty=540
dstw=960
dsth=540
stream=1080p_nv12_t60.yuv
width=1920
height=1080
cropx=0
cropy=0
cropw=1920
croph=1080
dstx=960
dsty=540
dstw=960
dsth=540
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
stream=1080p_nv12_t60.yuv
width=1920
height=1080
cropx=0
cropy=0
cropw=1920
croph=1080
dstx=0
dsty=0
dstw=960
dsth=540
stream=1080p_nv12_t60.yuv
width=1920
height=1080
cropx=0
cropy=0
cropw=1920
croph=1080
dstx=960
dsty=0
dstw=960
dsth=540
stream=1080p_nv12_t60.yuv
width=1920
height=1080
cropx=0
cropy=0
cropw=1920
croph=1080
dstx=0
dsty=540
dstw=960
dsth=540
stream=1080p_nv12_t60.yuv
width=1920
height=1080
cropx=0
cropy=0
cropw=1920
croph=1080
dstx=960
dsty=540
dstw=960
dsth=540
|
执行操作命令如下:
|
1
|
./sample_vpp -composite 1080p_2x2 -o out.yuv
|
如果想要查看输入文件的合成情况,可以使用ffplay进行播放:
|
1
|
ffplay -video_size 1920x1080 -pixel_format nv12 out.yuv
|
而由于输入是yuv的数据,数据量比较大,而输出也是yuv的数据,其实vpp的操作,用显存进行操作,反倒效率会比较低,毕竟需要将内存的yuv数据拷贝到显存,然后合成后的显存数据再拷贝到内存。所以可以将-vaapi参数去掉。
sample_multi_transcode是可以执行多路的转码,可以将一个文件作为解码后的输入源,根据这个源再做其余的转码,有个join session的概念,据说join的操作,可以提高不少的效率,具体多少,这个还没研究太深。
-o::h264 output1.264 -i::source -join -w 640 -h 480
-o::mpeg2 output2.mpeg2 -async 2 -u 3 -i::source -join
|
1
2
3
|
-i::h264 1080P_30fps.264 -o::sink -join
-o::h264 output1.264 -i::source -join -w 640 -h 480
-o::mpeg2 output2.mpeg2 -async 2 -u 3 -i::source -join
|
这边的配置,1080P_30fps.264解码后作为后面几个的输入源,-i::sink说明其作为输出源,而后面两个-i::source,则说明使用-o::sink作为输入源。
执行的话,只需要执行
|
1
|
./sample_multi_transcode -par parfile
|
执行期间,都可以通过intel_gpu_top进行对gpu使用情况的查看。intel提供的sample代码已经将所有的API都有做了相关的演示,可以很方便的对API进行一个理解以及自己往上面添加log之类的操作,可以很好的调试一些信息。整体来说,实现了一个GPU该有的大部分功能。有初步做了一些测试,编解码/VPP操作一个分辨率的视频,GPU使用情况是编码>解码>VPP。
转载请注明: 转载自elkPi
Intel® Media SDK Media Samples Linux 学习笔记(转)的更多相关文章
- Linux 学习笔记之超详细基础linux命令 Part 8
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 7----------------- ...
- Linux 学习笔记之超详细基础linux命令 Part 7
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 6----------------- ...
- 91 Testing Linux学习笔记
91 Testing Linux学习笔记... 学习地址:91Testing 的Linux教程=====================学习网址:http://www.91testing.net/ar ...
- 20155303狄惟佳预备作业三Linux学习笔记
20155303狄惟佳预备作业三Linux学习笔记 初次接触Ubuntu系统以及Linux内核,了解了其产生的历史,从感性来讲,深深吸引我的是其中蕴含的珍贵的开源精神,以及Stallman等人对&qu ...
- Linux学习笔记-文件系统和基本命令
目录 分区设备文件名 分区 挂载 文件目录 文件处理命令 目录处理命令 硬件设备文件名 IDE硬盘 /dev/hd[a-d] USB硬盘 /dev/sd[a-p] 光驱 /dev/cdrom或者/de ...
- Linux学习笔记-Linux系统简介
Linux学习笔记-Linux系统简介 UNIX与Linux发展史 UNIX是父亲,Linux是儿子. UNIX发行版本 操作系统 公司 硬件平台 AIX IBM PowerPC HP-UX HP P ...
- Linux学习笔记之 Btrfs文件系统简介及使用
Btrfs 也有一个重要的缺点,当 BTree 中某个节点出现错误时,文件系统将失去该节点之下的所有的文件信息.而 ext2/3 却避免了这种被称为”错误扩散”的问题. Btrfs相关介绍: Btrf ...
- Linux 学习笔记
Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...
- linux学习笔记2-linux的常用命令
第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装linux操作系统,以及一些基本的设置修改. 本篇博客主要介绍linux中的一些常用的终端命令 ======== ...
随机推荐
- Python入门--8--现在需要先学习可视化--包:easygui
一.安装.了解easygui 下载地址:http://bbs.fishc.com/forum.php?mod=viewthread&tid=46069&extra=page%3D1%2 ...
- sugar与阿龙的互怼(第一季)
§ 第一季 回家风波 高考了,啦啦啦~ 快要高考了,显然sugar很伤心. 显然不是因为快要考试了sugar才伤心的. 那为什么??? 因为他们都回家了,但是sugar和他的小伙伴们都不回家!!! ...
- scott登陆PLSQL时候出现insufficient privileges的解决方法
先用SYS登陆SQLPLUS,即: 再给scott授权:
- Ubuntu 16.04安装Jetty Web服务器
一.下载 http://www.eclipse.org/jetty/download.html 二.安装 tar -zxvf jetty-distribution-9.4.7.v20170914.ta ...
- 【chrome错误】Cross origin requests are only supported for protocol schemes: http, data,chrome-extension, https, chrome-extension-reso
使用ajax请求本地文件,chrome会报跨域错误. XMLHttpRequest cannot loadfile:///C:/Users/Li/Desktop/images/alist.json.C ...
- 使用Maven运行Java main的方法(转)
使用Maven运行Java Main的方法(既Java Application项目),可以有如下方式解决: 1.将Maven项目导入到eclipse中,然后直接项目右键[Run As]->[Ja ...
- 前端MVC Vue2学习总结(九)——Vuex状态管理插件
一.概要 1.1.Vuex定义与注意事项 Vuex是为vue.js框架更好的管理状态而设计一个插件.Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的 ...
- iOS Block学习
iOS4已经直接支持blocks,很有必要学习一下. 在ios中,将blocks当成对象来处理,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数的返回值,而其 本身又 ...
- Coursera 机器学习Course Wiki Lecture Notes
https://share.coursera.org/wiki/index.php/ML:Main 包含了每周的Lecture Notes,以便复习回顾的时候使用.
- 转: memcache, redis, mongodb 对比
http://db-engines.com/en/system/Memcached%3BMongoDB%3BRedis