一种基于Nvidia Maxwell2显卡的H265硬件编码方法及直播平台技术

技术编号:21634608 阅读:113 留言:0更新日期:2019-07-17 12:59
本发明专利技术公开了一种基于Nvidia Maxwell2显卡的H265硬件编码方法及直播终端,该方法包括初始化NVENC环境;初始化H265硬件编码器;分配图像输入源;分配编码输出源;获取H265视频编码参数;基于所述H265视频编码参数,通过所述H265硬件编码器对所述图像输入源的图像进行编码。这样,在同等视频分辨率、码率、帧率的情况下,编码后的视频体积相比H264来说减少了30%左右,并且因为是硬件编码,对用户计算机的CPU消耗并不大,从而也减少了用户CPU的消耗,提高了编码的流畅性。

A H265 Hardware Coding Method and Live Platform Based on Nvidia Maxwell 2 Graphic Card

【技术实现步骤摘要】
一种基于NvidiaMaxwell2显卡的H265硬件编码方法及直播平台
本申请涉及计算机领域,尤其涉及一种基于NvidiaMaxwell2显卡的H265硬件编码方法及直播终端。
技术介绍
H265是在H264的基础上的新的视频编码规范,H265相对于H264的优点是在同等视频分辨率以及码率的情况下,编码出来的视频体积比H264要少30%左右,这意味着可以降低30%的磁盘存储或者30%左右的网络带宽使用。但是,由于H265相对于H264来说,在编码的时候,对CPU的消耗要成倍的增加,如果使用软件编码的方案来进行H265编码的话,需要计算机大量的资源,容易造成电脑出现卡顿等现象。因此,现有技术中亟需一种H265硬件编码方法。
技术实现思路
本专利技术提供了一种基于NvidiaMaxwell2显卡的H265硬件编码方法及直播终端,以满足现有技术中对H265硬件编码方法的需求。为解决上述技术问题,本专利技术第一方面提供了一种基于NvidiaMaxwell2显卡的H265硬件编码方法,所述方法包括:初始化NVENC环境;初始化H265硬件编码器;分配图像输入源;分配编码输出源;获取H265视频编码参数;基于所述H265视频编码参数,通过所述H265硬件编码器对所述图像输入源的图像进行编码。可选地,所述初始化NVENC环境,具体包括:调用LoadLibrary函数加载nvcuda.dll模块,若成功则继续;调用GetProcAddress函数获取cuInit,cuDeviceGetCount,CUDACreateContext函数,若成功则继续;调用LoadLibrary函数加载nvEncodeAPI模块,若成功则继续;调用LoadLibrary函数加载nvEncodeAPI模块,若成功则继续;调用GetProcAddress函数获取NvEncodeAPICreateInstance函数,若成功则继续;调用所述NvEncodeAPICreateInstance函数,初始化NV_ENCODE_API_FUNCTION_LIST结构实例标记为nvEncodeAPI,若成功则确定初始化所述NVENC环境成功。可选地,所述初始化H265硬件编码器,具体包括:创建CUDA环境块,若成功则继续;创建所述H265硬件编码器,若成功则将获取到所述H265硬件编码器的接口标记为m_nvEncoder,并继续;根据待编码视频的图像参数初始化所述H265硬件编码器。可选地,所述分配图像输入源,具体包括:创建一个类型为NV_ENC_CREATE_INPUT_BUFFER的图像输入源;将所述NV_ENC_CREATE_INPUT_BUFFER的version字段设置为NV_ENC_CREATE_INPUT_BUFFER_VER,将所述NV_ENC_CREATE_INPUT_BUFFER的width字段设置为视频的宽度,将所述NV_ENC_CREATE_INPUT_BUFFER的height字段设置为视频的高度,将所述NV_ENC_CREATE_INPUT_BUFFER的bufferFmt字段设置为NV_ENC_BUFFER_FORMAT_NV12_PL;调用nvEncodeAPI中的nvEncCreateInputBuffer函数,创建一个图像输入源。可选地,所述分配编码输出源,具体包括:创建一个类型为NV_ENC_CREATE_BITSTREAM_BUFFER的编码输出源;将所述NV_ENC_CREATE_BITSTREAM_BUFFER的version字段设置为NV_ENC_CREATE_BITSTREAM_BUFFER_VER,size字段设置为视频分辨率的乘积;调用nvEncodeAPI的nvEncCreateBitstramBuffer方法,创建编码输出源。可选地,所述获取H265视频编码参数,具体包括:调用nvEncodeAPI结构中的nvEncGetSequenceParams函数,获取H265序列集参数、H265图像集参数和H265视频集参数。可选地,所述基于所述H265视频编码参数,通过所述H265硬件编码器对所述图像输入源的图像进行编码,具体包括:将待编码图像传入所述图像输入源;通过所述H265硬件编码器,对所述待编码图像进行H265硬件编码,并判断编码是否完成;若编码完成,则将对所述编码的图像对应的编码数据传入所述编码输出源中。本专利技术第二方面还提供了一种直播终端,所述直播终端包括NvidiaMaxwell2显卡,所述直播终端包括:获取装置,用于获取直播图像;编码装置,通过第一方面提供的方法,利用NvidiaMaxwell2显卡所述对所述直播图像进行编码;传输装置,用于将对所述编码装置输出的编码数据发送给直播平台。本专利技术第三方面还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面提供的方法的步骤。本专利技术第四方面还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面提供的方法的步骤。通过本专利技术的一个或者多个技术方案,本专利技术具有以下有益效果或者优点:由于采用了通过初始化NVENC环境、初始化H265硬件编码器、分配图像输入源、分配编码输出源、获取H265视频编码参数以及基于所述H265视频编码参数,通过所述H265硬件编码器对所述图像输入源的图像进行编码的技术方案,实现了利用NvidiaMaxwell第二代架构的特性进行H265硬件编码的目的,在同等视频分辨率、码率、帧率的情况下,编码后的视频体积相比H264来说减少了30%左右,并且因为是硬件编码,对用户计算机的CPU消耗并不大,从而也减少了用户CPU的消耗,提高了编码的流畅性。附图说明图1为本专利技术实施例提供的基于NvidiaMaxwell2显卡的H265硬件编码方法的流程图。具体实施方式为了使本申请所属
中的技术人员更清楚地理解本申请,下面结合附图,通过具体实施例对本申请技术方案作详细描述。本专利技术实施例提供了一种基于NvidiaMaxwell2显卡的H265硬件编码方法及直播终端,以满足现有技术中对基于NvidiaMaxwell2显卡的H265硬件编码方法的需求。本专利技术实施例第一方面提供了一种基于基于NvidiaMaxwell2显卡的H265硬件编码方法,请参考图1,图1为本专利技术实施例提供的基于NvidiaMaxwell2显卡的H265硬件编码方法的流程图,如图1所示,该方法包括:S1:初始化NVENC()环境;S2:初始化H265硬件编码器;S3:分配图像输入源;S4:分配编码输出源;S5:获取H265视频编码参数;S6:基于H265视频编码参数,通过H265硬件编码器对图像输入源的图像进行编码。可以看出,由于采用了通过初始化NVENC环境、初始化H265硬件编码器、分配图像输入源、分配编码输出源、获取H265视频编码参数以及基于H265视频编码参数,通过H265硬件编码器对图像输入源的图像进行编码的技术方案,实现了利用NvidiaMaxwell第二代架构的特性进行H265硬件编码的目的,在同等视频分辨率、码率、帧率的情况下,编码后的视频体积相比H264本文档来自技高网
...

【技术保护点】
1.一种基于Nvidia Maxwell2显卡的H265硬件编码方法,其特征在于,所述方法包括:初始化NVENC环境;初始化H265硬件编码器;分配图像输入源;分配编码输出源;获取H265视频编码参数;基于所述H265视频编码参数,通过所述H265硬件编码器对所述图像输入源的图像进行编码。

【技术特征摘要】
1.一种基于NvidiaMaxwell2显卡的H265硬件编码方法,其特征在于,所述方法包括:初始化NVENC环境;初始化H265硬件编码器;分配图像输入源;分配编码输出源;获取H265视频编码参数;基于所述H265视频编码参数,通过所述H265硬件编码器对所述图像输入源的图像进行编码。2.如权利要求1所述的方法,其特征在于,所述初始化NVENC环境,具体包括:调用LoadLibrary函数加载nvcuda.dll模块,若成功则继续;调用GetProcAddress函数获取cuInit,cuDeviceGetCount,CUDACreateContext函数,若成功则继续;调用LoadLibrary函数加载nvEncodeAPI模块,若成功则继续;调用LoadLibrary函数加载nvEncodeAPI模块,若成功则继续;调用GetProcAddress函数获取NvEncodeAPICreateInstance函数,若成功则继续;调用所述NvEncodeAPICreateInstance函数,初始化NV_ENCODE_API_FUNCTION_LIST结构实例标记为nvEncodeAPI,若成功则确定初始化NVENC环境成功。3.如权利要求2所述的方法,其特征在于,所述初始化H265硬件编码器,具体包括:创建CUDA环境块,若成功则继续;创建所述H265硬件编码器,若成功则将获取到所述H265硬件编码器的接口标记为m_nvEncoder,并继续;根据待编码视频的图像参数初始化所述H265硬件编码器。4.如权利要求3所述的方法,其特征在于,所述分配图像输入源,具体包括:创建一个类型为NV_ENC_CREATE_INPUT_BUFFER的图像输入源;将所述NV_ENC_CREATE_INPUT_BUFFER的version字段设置为NV_ENC_CREATE_INPUT_BUFFER_VER,将所述NV_ENC_CREATE_INPUT_BUFFER的width字段设置为视频的宽度,将该结构的height字段设置为视频的高度,将所述NV_ENC_CREATE_INPUT_...

【专利技术属性】
技术研发人员:杨亮张文明陈少杰
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

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

1