一种基于GPU的完全硬件转码的方法和系统技术方案

技术编号:12668255 阅读:71 留言:0更新日期:2016-01-07 12:34
本申请涉及一种基于GPU的完全硬件转码的方法和系统。具体而言,本申请的方法和系统是在原本NVENC的基础上,借助OPENCV封装的CUVID进行硬件解码,然后在显存里使用新开发的转码逻辑进行转码计算,最后使用NVENC的编码器进行编码,从而实现完整的纯GPU硬件转码过程。

【技术实现步骤摘要】

本专利涉及到流媒体视频转码技术,尤其是针对一种基于GPU的对具有H.264、MPEG-2编码格式的视频数据进行完全硬件转码生成H.264编码格式的视频以减少CPU占用率的方法和系统。
技术介绍
2007 年,NVIDIA 公司推出了 CUDA (Compute Unified Device Architecture)框架以及CUDA C语言,将传统的GPU通用计算(GPGPU)推向一个新的高峰。传统的GPU通用计算是通过“欺骗”GPU与显存的渲染过程,来借助显卡的强大并行处理矩阵型数据的能力达到通用计算的目的。这一过程既不直观,也很费力,很难得到较好的推广。而CUDA框架的出现,使GPGPU编程变得类似普通高级语言编程,使开发者可以便利使用GPU的强大并行运算能力。具体而言,CUDA框架是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA C采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。GPU极为擅长处理大型矩阵型或类矩阵型数据的整体变换或计算,在当时,借助GPU的计算能力可以达到CPU效率的数倍甚至数十倍。尽管在现在随着CPU的进一步发展,GPU的压倒性优势有所衰减,但其强大依然不容小视。而视频转码技术是指将已经压缩编码的视频码流转换成另一个视频码流,以适应不同的网络带宽、不同的终端处理能力和不同的用户需求。随着互联网技术的发展,越来越多的视频被广泛传播到各种播放设备上,例如个人计算机、笔记本、电视机、MP4播放器、平板和手机等等。这些设备通常安装了各种不同的操作系统或播放软硬件,分别支持不同格式的视频流。这就很容易导致用户所获得的视频的格式可能并不能直接被其持有的播放设备所支持。而随着技术的进步,各种新的视频编码技术被不断推出,这也导致老的设备可能并不支持最新的视频格式。因此,为了解决上述问题,视频转码技术正变得日益重要。所述视频转码技术本质上是一个先对原始格式的视频进行解码,随后将其转码成所需的格式,再以新的视频编码标准对其进行编码的过程。对于高效的视频文件转码需求,视频文件的每一帧都是一幅图像,而图像是完美的矩阵型数据,因此,借助GPGPU进行GPU硬件视频转码,从而在效率上超越传统的纯CPU视频转码就成了一个很自然的思路。NVIDIA伴随着CUDA,也发布了视频的解码与编码工具开发包,解码工具为NVCUVID (简称CUVID),编码工具为NVENC。乍看之下,CUVID+NVENC已经可以完成GPU视频转码,而且新版本的FFMPEG中已经增加了对NVENC的支持,但经代码分析和运行测试,可以发现:NVENC包含转码计算(包含转码率计算)和编码器两个部分,其中转码部分的计算依旧在CPU里完成,并非真正的纯GPU硬件转码——FFMPEG也是如此。另一个常见的商业转码软件WOWZA也不是纯GPU硬件转码,它们都采用了 “GPU解码,取回内存,CPU转码,推送显存,GPU编码”的方式,这一方式对CPU和内存资源消耗依旧很大,同时,在转码过程中,数据在内存和显存之间的来回过程消耗了大量的系统时间,而且转码计算并没有充分利用GPU的计算能力。因此,现有的NVENC和应用NVENC的诸如FFMPEG、W0WZA之类的转码软件均不是严格意义上的完全基于GPU的硬件转码。因此,为了提高视频转码效率,存在期望能够提供一种基于GPU的完全硬件转码的方法和系统的需求。
技术实现思路
本申请的方法和系统是在原本NVENC的基础上,借助OPENCV封装的CUVID进行硬件解码,然后在显存里使用新开发的转码逻辑进行转码计算,最后使用NVENC的编码器进行编码,从而完成完整的纯GPU硬件转码过程。在本申请的一个方面,提供了一种基于GPU的完全硬件转码的方法,其特征在于,包括:GPU转码器从显存中读取经GPU解码器解码的YUV4:4:4格式的视频帧数据;将所述视频帧数据拆分成Y、U、V三个通道的独立矩阵;对于Y矩阵,通过转换分辨率形成新Y矩阵;对于U矩阵和V矩阵,按YUV4:2:0格式转换分辨率分别形成新U矩阵和新V矩阵,并且将所述新U矩阵和新V矩阵合并成双通道的UV矩阵;将所述新Y矩阵的数据和所述双通道的UV矩阵的数据分别复制到待编码的显存中;以及GPU编码器对从所述待编码的显存中读取的所述新Y矩阵的数据和所述双通道的UV矩阵的数据进行编码以生成输出的视频文件。在本专利技术的另一个方面,提供了一种基于GPU的完全硬件转码的系统,其特征在于,包括:GPU解码器,配置为将来自存储器或数据源的视频帧数据解码成YUV4:4:4格式的视频帧数据并将其写入到显存中;GPU转码器,配置用于执行下述操作:从所述显存中读取经所述GPU解码器解码的YUV4:4:4格式的视频帧数据;将所述视频帧数据拆分成Y、U、V三个通道的独立矩阵;对于Y矩阵,通过转换分辨率形成新Y矩阵;对于U矩阵和V矩阵,按YUV4:2:0格式转换分辨率分别形成新U矩阵和新V矩阵,并且将所述新U矩阵和新V矩阵合并成双通道的UV矩阵;将所述新Y矩阵的数据和所述双通道的UV矩阵的数据分别复制到待编码的显存中;以及GPU编码器,配置为对从所述待编码的显存中读取的所述新Y矩阵的数据和所述双通道的UV矩阵的数据进行编码以生成输出的视频文件。一个或多个实施例的详情在附图及以下描述中阐述。通过阅读以下详细描述并查阅相关联的附图,其它特征和优点将是显而易见的。应该理解,下述详细的描述仅是说明性的,而不是对所要求保护的专利技术的限制。【附图说明】为让本申请的上述目的、特征和优点能更明显易懂,以下结合附图对本申请的【具体实施方式】作详细说明,其中:图1是根据本申请的实施例的系统硬件结构示意图。图2是根据本申请的实施例的GPU转码器工作流程图的理论层面示意图。图3是根据本申请的实施例的GPU转码器工作流程图的实践层面示意图。【具体实施方式】在现有GPU转码技术中的“解码-转码-编码”计算链中,转码步骤的实现依旧是在GPU对视频帧数据解码之后将所解码的视频帧数据从显存取回到内存中,然后使用CPU完成转码计算后,再从内存将所述转码后的数据推送至显存,再由GPU进行后续的编码操作。这一转码过程中,数据在显存与内存之间多了一个来回传输的过程,耗费了大量的系统时间,同时也无法彻底降低视频转码处理的CPU占用率,也没有充分利用GPU的计算能力。因此,本申请的方法和系统的目的即是设法让“解码-转码-编码”这三个核心步骤全部在GPU及显存里完成,省去转码步骤在显存与内存之间的数据传输的系统耗时,并通过极大化使用GPU的计算能力来相应地降低CPU占用率,使得所述视频转码处理的整个过程都可以不依赖于CPU的使用,实现真正意义上的完全硬件转码。具体而言,在现有的开源库OPENCV中,封装了一定程度的GPU、图像、视频处理本文档来自技高网
...

【技术保护点】
一种基于GPU的完全硬件转码的方法,其特征在于,包括:GPU转码器从显存中读取经GPU解码器解码生成的YUV4:4:4格式的视频帧数据;将所述视频帧数据拆分成Y、U、V三个通道的独立矩阵;对于Y矩阵,通过转换分辨率形成新Y矩阵;对于U矩阵和V矩阵,按YUV4:2:0格式转换分辨率分别形成新U矩阵和新V矩阵,并且将所述新U矩阵和新V矩阵合并成双通道的UV矩阵;将所述新Y矩阵的数据和所述双通道的UV矩阵的数据分别复制到待编码的显存中;以及GPU编码器对从所述待编码的显存中读取的所述新Y矩阵的数据和所述双通道的UV矩阵的数据进行编码以生成输出的视频文件。

【技术特征摘要】

【专利技术属性】
技术研发人员:洪珂白永光王荣祥
申请(专利权)人:网宿科技股份有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1