GPU视频编解码「建议收藏」

GPU视频编解码「建议收藏」一视频编解码基础1.1识别编码流程视频编解码流程1.2YUV颜色空间YCbCr通常是YUV的同义词,Y为明度(luma),CbCr为色度(chroma),Cb为蓝色分量,Cr为红色分量。颜色空间转换公式:–      RGB转YUV•      y=[0.299,0.587,0.114]*[r,g,b]’•      u=[-0.147,-0.28…

大家好,又见面了,我是你们的朋友全栈君。

视频编解码基础

1.1识别编码流程

GPU视频编解码「建议收藏」

视频编解码流程

1.2 YUV颜色空间

YCbCr通常是YUV的同义词,Y为明度(luma),CbCr为色度(chroma),Cb为 蓝色分量,Cr为红色分量。

颜色空间转换公式:

–      RGB转YUV

•      y = [0.299,0.587,0.114] *[r,g,b]’

•      u = [-0.147,-0.289,0.436] *[r,g,b]’ + 128

•      v = [0.615,-0.515,-0.100] *[r,g,b]’ + 128

–      YUV转RGB

•      r = y + 1.371 * (v-128)

•      g = y – 0.338 * (u-128) – 0.698* (v-128)

•      b = y + 1.732 * (u-128)

 

1.3 YUV采样比例与内存布局

YUV444平面格式:各分量依次连续存储,无交叉

•       采样比例

–      人眼对颜色敏感度低于明度,因此UV分量可被亚采样

–      4:2:0 横向1/2,纵向1/2

–      4:2:2 横向1/2,纵向1/1

•       4:2:0采样下的内存布局

–      I420(IYUV):YUV分别连续存储(右图)

–      YV12:YVU分别连续存储

–      NV12(推荐格式):Y连续存储,UV交错(右图)

–      NV21:Y连续存储,VU交错

 

1.4、H264文件分析

•       帧类型

–      I帧:独立图片

–      P帧:参考前向图片

–      B帧:参考双向图片

•       帧的序号

–      流序号(streamorder):帧在流中的次序。该次序保证每帧的解码只依赖前面已出现的帧

–      显示序号(displayorder):图像正常行进的次序

•       元数据:SPS/PPS

–      包含对流正确解码所需要的元信息

–      如图像大小,采样比例

 

二:NVIDIA GPU 编解码视频

2.1 支持硬件编解码的GPU

•       服务器显卡:GRID系列

–      K1/K2/K340/K520/M60/

–      单GPU编码速度:M60 =2.6 x K340,K340 = 1.5 x K1(单GPU芯片)

•       桌面显卡:Quadro系列

–      K5000/M5000

–      单GPU编码速度:M5000 =M60 = 4 x K5000 (K1)

•       桌面显卡:GeForce系列,编码限并发2路

2.2 视频编解码 GPU API

•       NVENC: 通用的底层API

–      可灵活控制所有编码参数

–      可与CUDA/DX互操作

•       GRID: 游戏视频流化API

–      面向DX/OGL游戏整合

–      接口简单,易于使用

 

 

 

2.3 GPU 硬编码NVENC(已经集成到ffmpeg)

•       输入

–      格式:仅支持YUV平面格式,包括IYUV(I420),YV12, NV12, YUV444

–      载体:主存/CUDA设备内存/D3D9surface

•       输出

–      H264, H265(即HEVC,仅GM2xx芯片支持)

–      载体:主存

NVENC编码H264的编码参数:

•       码率

–      码流的平均每秒比特数

•       码率控制

–      CBR/VBR/CONSTQP

–      QP (体现量化步长)

•       Profile

–      编解码所使用的工具集合

•       预设

 

2.4 GPU视频硬解码NVCUVID

•       支持硬件

–      全部NV显卡,无使用限制

–      单GPU解码速度:GM2xx = 3 x GK1xx

•       输入格式

–      H264, MPEG-2

•       输出格式

–      NV12

2.5 复用和解复用

•       媒体容器格式(mp4;avi;flv;)

•       复用/解复用

•       复用/解复用工具:FFmpeg

 

三、ffmpeg

3.1、ffmpeg

ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。ffmpeg 中只包含了GPU的硬编码,nvenc。

3.2、Nvidia GPU解码

如果需要将GPU的硬解码加入到ffmpeg需要自己编写解码程序nvcuvid,具体编写可参考NV的视频编解码Sample,然后放到目录libavcodec下,并修改部分文件。如下要修改的文件:

•       configure,

•       libavcodec/allcodecs.c

•       libavcode.c/Makefile.c

•       libavfilter/allfilters.c

•       libavfilter/Makefile

 

四、视频测试

4.1性能测试

         GPU性能测试有编码模式有HP,HQ,HP是性能较高,但是图像质量较差,HQ 是性能较差,编码的质量好。

4.2编码质量测试

名词解释:PSNR:峰值信噪比(PSNR),一种评价图像的客观标准,PSNR值越大,就代表失真越少。

目前GPU的硬编码质量与软编码有较大差距。

测试方法:

1、  使用GPU 的sample中的nvenc编码原始的YUV视频,生成H264视频文件。

2、  使用ffmpeg软件解码H264文件生成新的YUV视频文件。

使用软件Elecard测试原始的YUV与新生成的YUV视频文件,得到平均PSNR值。
——————— 
原文:https://blog.csdn.net/Mrhiuser/article/details/50824648 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158576.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Idea激活码永久有效Idea2017.1.6激活码教程-持续更新,一步到位[通俗易懂]

    Idea激活码永久有效Idea2017.1.6激活码教程-持续更新,一步到位[通俗易懂]Idea激活码永久有效2017.1.6激活码教程-Windows版永久激活-持续更新,Idea激活码2017.1.6成功激活

  • Mac 终端命令行读写NTFS硬盘方法[通俗易懂]

    Mac 终端命令行读写NTFS硬盘方法[通俗易懂]1.插入移动硬盘后,先查看移动硬盘的名称:mount|grepntfs这里的MyPassport是我的移动硬盘,可以看到它实际位置是/dev/disk2s12.先把移动硬盘卸载sudoumount/dev/disk2s13.建立挂载点,并重新挂载,这里我还是把它挂载在Volumes目录下,并新建文件夹cd/VolumesmkdirMy\Passport/使用自带的mount_ntfs就可以完成挂载了。sudomount_ntf…

  • naviacat激活码[最新免费获取]

    (naviacat激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html1STL5S9V8F-eyJsaWNlbnNlSW…

  • 协同过滤推荐算法介绍(协同过滤的推荐算法)

    随着电商企业的发展,为了更好的了解用户喜好以便于将更加适合的商品推荐给用户,不仅能得到用户好的评价,而且也有利于自身企业的利益,因此,随之诞生了很多推荐系统,最为常用的推荐算法就是协同过滤算法。转载请标明原文链接推荐算法的基础就是基于两个对象之间的相关性,常用的计算方法有欧几里得相似性,这是一种使用较多的相似性计算方法。除此之外还有曼哈顿相似性和余弦相似性的计算方法。协同过滤算…

  • 2021 pycharm 激活码_通用破解码

    2021 pycharm 激活码_通用破解码,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • JS跳转代码_js中跳转页面路径

    JS跳转代码_js中跳转页面路径一、常规的JS页面跳转代码1、在原来的窗体中直接跳转用2、在新窗体中打开页面用:3、JS页面跳转参数的注解参数解释:第2种:第3种:第4种:第5种:三、页面停留指定时间再跳转(如3秒)四、根据访客来源跳转的JS代码1、JS判断来路代码此段代码主要用于百度谷歌点击进入跳转,直接打开网站不跳转:2、JS直接跳转代码3、ASP跳转代码判断来路<%  ifinstr(Request.ServerVariables(“http_referer”),“www

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号