基于DXVA进行硬件解码H264视频流的方法及系统技术方案

技术编号:14012633 阅读:115 留言:0更新日期:2016-11-17 14:04
本发明专利技术公开了一种基于DXVA进行硬件解码H264视频流的方法及系统,涉及H264格式的视频流的解码领域。该方法的步骤为:通过多媒体编程接口创建DXVA功能接入接口;通过DXVA功能接入接口创建视频解码服务接口;通过视频解码服务接口获取DXVA硬件解码器中所有的硬件解码级别,分别获取每个解码级别的最优硬件解码参数;分别调用视频解码服务接口创建解码视频输出接口和硬件解码接口;将最优硬件解码参数、解码视频输出接口和硬件解码接口与FFMPEG关联;通过FFMPEG对需要解码的视频流进行解码并显示。本发明专利技术能够同时进行50多路的1080p高清视频流的硬件解码,解码速度较快,工作效率较高。

【技术实现步骤摘要】

本专利技术涉及H264格式的视频流的解码领域,具体涉及一种基于DXVA(DirectX Video Acceleration,视频硬件加速)进行硬件解码H264(数字视频压缩格式)视频流的方法及系统。
技术介绍
随着网络的发展,越来越多的用户喜爱在网络直播平台中观看直播,因此网络直播平台已经广泛适用于社会之中,网络直播平台的直播内容也越来越多样化。为了保证网络信息的健康传播,杜绝不良直播内容的流出,需要网络直播平台的直播内容进行监控,在监控之前需要对直播内容进行解码。现有的对网络直播平台的直播内容一般通过H264进行编码,H264格式的视频流进行解码的方法一般为软件解码,软件解码方法存在以下缺陷:传统的H264软件解码时,会占用较多的CPU资源,进而使得解码速度较慢,同时进行解码的视频流较少;而且随着视频显示格式的提高,网络直播平台中的视频流的视频显示格式越来越高清化,采用H264软件对HD视频流(高清视频流,分辨率达到720p以上的视频流)的解码更为缓慢。
技术实现思路
针对现有技术中存在的缺陷,本专利技术解决的技术问题为:提供一种基于DXVA进行硬件解码H264视频流的方法及系统。本专利技术对高清视频流的解码速度较快,工作效率较高。为达到以上目的,本专利技术提供的基于DXVA进行硬件解码H264视频流的方法,包括以下步骤:S1:通过多媒体编程接口创建DXVA功能接入接口;S2:通过DXVA功能接入接口创建视频解码服务接口;S3:通过视频解码服务接口获取DXVA硬件解码器中所有的硬件解码级别,分别获取每个解码级别的最优硬件解码参数;S4:调用视频解码服务接口分别创建解码视频输出接口和硬件解码接口;S5:将FFMPEG分别与S3中的最优硬件解码参数、S4中的解码视频输出接口和硬件解码接口关联;S6:通过关联后的FFMPEG对需要解码的视频流进行解码并显示。本专利技术提供的实现上述方法的基于DXVA进行硬件解码H264视频流的系统,包括DXVA功能接入接口创建模块、视频解码服务接口创建模块、最优硬件解码参数获取模块、解码视频输出接口创建模块、硬件解码接口创建模块、FFMPEG关联模块和解码显示模块;DXVA功能接入接口创建模块用于:通过多媒体编程接口创建DXVA功能接入接口;视频解码服务接口创建模块用于:通过DXVA功能接入接口创建视频解码服务接口;最优硬件解码参数获取模块用于:通过视频解码服务接口获取DXVA硬件解码器中所有的硬件解码级别,分别获取每个解码级别的最优硬件解码参数;解码视频输出接口创建模块用于:调用视频解码服务接口创建解码视频输出接口;硬件解码接口创建模块用于:调用视频解码服务接口创建硬件解码接口;FFMPEG关联模块用于:将FFMPEG分别与最优硬件解码参数、解码视频输出接口和硬件解码接口关联;解码显示模块用于:通过FFMPEG对需要解码的视频流进行解码并显示。与现有技术相比,本专利技术的优点在于:与现有技术中的软件解码相比,本专利技术将DXVA硬件解码器与FFMPEG(Fast Forward Mpeg,多媒体视频处理工具)结合,从而基于DXVA对网络直播平台的视频流进行硬件解码。经测试得出,本专利技术的方法和系统使用时,利用Windows操作系统的视频加速接口,在Intel的I5-4440这样的计算机下,能够同时进行50多路的1080p高清视频流的硬件解码,解码速度较快,工作效率较高,进而能够实现通过多台计算机的配置,对网络直播平台下的所有视频直播内容进行监控。附图说明图1为本专利技术实施例中的基于DXVA进行硬件解码H264视频流的方法的流程图。具体实施方式以下结合附图及实施例对本专利技术作进一步详细说明。参见图1所示,本专利技术实施例中的基于DXVA进行硬件解码H264视频流的方法,包括以下步骤:S1:通过多媒体编程接口创建DXVA功能接入接口并进行初始化;多媒体编程接口采用Direct3D9(DirectX的一个版本,其包含2D或3D图像的编程接口、音频接口、以及外接设备的输入输出接口);在此基础上,S1的具体流程为:S101:通过DXVA2CreateDirect3DDeviceManager9(接入接口创建函数)创建IDirect3DDeviceManager9接口(即DXVA功能接入接口)。S102:通过IDirect3D9接口(Direct3D9的入口接口)的创建函数(CreateDevice)创建解码图像显示接口:IDirect3DDevice9接口,该接口是Direct3D9中最为重要的一个接口,提供创建资源、状态管理、内存管理和显示绘制等功能。S103:通过IDirect3DDevice9接口对IDirect3DDeviceManager9接口进行初始化。S2:通过DXVA功能接入接口创建视频解码服务接口,具体流程为:S201:调用IDirect3DDeviceManager9接口的重置函数(ResetDevice),对IDirect3DDeviceManager9接口进行重置;S202:调用IDirect3DDeviceManager9接口的设备句柄获取函数(OpenDeviceHandle),获取一个设备句柄deviceHandle;S203:调用IDirect3DDeviceManager9接口的视频服务获取函数(GetVideoService),通过S202中的设备句柄deviceHandle创建IDirectXVideoDecoderService接口(视频解码服务接口)。S3:通过视频解码服务接口获取DXVA硬件解码器中所有的硬件解码级别,分别获取每个解码级别的最优硬件解码参数,具体流程为:S301:调用IDirectXVideoDecoderService接口的硬件解码级别获取函数(GetDecoderDeviceGuids),获取DXVA硬件解码器中所有的硬件解码级别。S302:调用硬件解码参数获取函数(GetDecoderConfigurations),获取每个解码级别的DXVA2_ConfigPictureDecode(最优硬件解码参数),以供后面的过程使用。S4:调用视频解码服务接口的表面创建函数(CreateSurface),创建解码视频输出接口(IDirect3DSurface9接口),解码后的视频图像内容存储在该接口中。调用视频解码服务接口的视频解码创建函数(CreateVideoDecoder)创建硬件解码接口(IDirectXVideoDecoder接口)并初始化。S5:将FFMPEG分别与S3中的最优硬件解码参数、S4中的解码视频输出接口和硬件解码接口关联,具体流程为:S501:对FFMPEG进行初始化,与DXVA关联形成DXVA连接场景(dxva_context)。S502:分别将S3中的硬件解码参数DXVA2_ConfigPictureDecode以及S4中的解码视频输出接口IDirect3DSurface9和硬件解码接口IDirectXVideoDecoder,赋值至dxva_context中的对应字段。S503:将赋值后的dxva_context与FFMPEG的结构体数据(AVCodecContext)的硬件解码连接参数(hwaccel_context本文档来自技高网...
基于DXVA进行硬件解码H264视频流的方法及系统

【技术保护点】
一种基于DXVA进行硬件解码H264视频流的方法,其特征在于,该方法包括以下步骤:S1:通过多媒体编程接口创建DXVA功能接入接口;S2:通过DXVA功能接入接口创建视频解码服务接口;S3:通过视频解码服务接口获取DXVA硬件解码器中所有的硬件解码级别,分别获取每个解码级别的最优硬件解码参数;S4:调用视频解码服务接口分别创建解码视频输出接口和硬件解码接口;S5:将FFMPEG分别与S3中的最优硬件解码参数、S4中的解码视频输出接口和硬件解码接口关联;S6:通过关联后的FFMPEG对需要解码的视频流进行解码并显示。

【技术特征摘要】
1.一种基于DXVA进行硬件解码H264视频流的方法,其特征在于,该方法包括以下步骤:S1:通过多媒体编程接口创建DXVA功能接入接口;S2:通过DXVA功能接入接口创建视频解码服务接口;S3:通过视频解码服务接口获取DXVA硬件解码器中所有的硬件解码级别,分别获取每个解码级别的最优硬件解码参数;S4:调用视频解码服务接口分别创建解码视频输出接口和硬件解码接口;S5:将FFMPEG分别与S3中的最优硬件解码参数、S4中的解码视频输出接口和硬件解码接口关联;S6:通过关联后的FFMPEG对需要解码的视频流进行解码并显示。2.如权利要求1所述的基于DXVA进行硬件解码H264视频流的方法,其特征在于:S1中所述多媒体编程接口采用Direct3D9;在此基础上,S1的具体流程为:S101:通过接入接口创建函数创建DXVA功能接入接口;S102:通过Direct3D9的入口接口创建解码图像显示接口;S103:通过解码图像显示接口对DXVA功能接入接口进行初始化;S2的具体流程为:S201:对DXVA功能接入接口进行重置;S202:调用DXVA功能接入接口的设备句柄获取函数,获取一个设备句柄;S203:调用DXVA功能接入接口的视频服务获取函数,通过所述设备句柄创建视频解码服务接口。3.如权利要求2所述的基于DXVA进行硬件解码H264视频流的方法,其特征在于,S3的具体流程为:S301:调用视频解码服务接口的硬件解码级别获取函数,获取DXVA硬件解码器中所有的硬件解码级别;S302:调用硬件解码参数获取函数,获取每个解码级别的最优硬件解码参数;S4的具体流程为:调用视频解码服务接口的表面创建函数,创建解码视频输出接口;调用视频解码服务接口的视频解码创建函数,创建硬件解码接口。4.如权利要求3所述的基于DXVA进行硬件解码H264视频流的方法,其特征在于,S5的具体流程为:S501:对FFMPEG进行初始化,与DXVA关联形成DXVA连接场景;S502:分别将S301中的最优硬件解码参数、以及S4中的解码视频输出接口和硬件解码接口,赋值至DXVA连接场景中的对应字段;S503:将赋值后的DXVA连接场景与FFMPEG的结构体数据的硬件解码连接参数关联;S6的具体流程为:通过FFMPEG的解码函数对需要解码的视频流进行解码;通过S102中所述解码图像显示接口显示解码后的图像。5.如权利要求1至4任一项所述的基于DXVA进行硬件解码H264视频流的方法,其特征在于:S6之前还包括以下步骤:根据网络地址获取需要解码的视频流。6.一种实现权利要求1至5任一项所述方法的基于DXVA进行硬件解码H264视频流的系统,其特征在于:该系统包括DXVA功能接入接口创建模块、视频解码服务接口创建模块、最优硬件解码参数获取模块、解码视频输出接口创建模块...

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

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

1