首页 / 专利库 / 软件 / 操作系统 / 一种基于虚拟化的硬件解码方法、解码设备及存储介质

一种基于虚拟化的硬件解码方法、解码设备及存储介质

阅读:662发布:2022-10-02

专利汇可以提供一种基于虚拟化的硬件解码方法、解码设备及存储介质专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于虚拟化的 硬件 解码方法、解码设备及存储介质。本发明中在第一 操作系统 中获取待解码视频数据,所述第一操作系统为 虚拟机 的操作系统,在所述第一操作系统中通过预设钩子程序截取所述待解码视频数据,将所述待解码视频数据发送至第二操作系统,所述第二操作系统为宿主机的操作系统,在所述第二操作系统中对所述待解码视频数据进行解码,以获取对应的解码视频数据。本发明中通过将第一操作系统中的待解码视频数据转发至第二操作系统,以调用GPU进行解码,改善了通过CPU进行解码带来的CPU负载过大的问题,也就解决了 现有技术 中虚拟机在进行视频解码时存在的物理设备运行负担过大的技术问题。,下面是一种基于虚拟化的硬件解码方法、解码设备及存储介质专利的具体信息内容。

1.一种基于虚拟化的硬件解码方法,其特征在于,所述方法包括以下步骤:
在第一操作系统中获取待解码视频数据,所述第一操作系统为虚拟机的操作系统;
在所述第一操作系统中通过预设钩子程序截取所述待解码视频数据,将所述待解码视频数据发送至第二操作系统,所述第二操作系统为宿主机的操作系统,所述虚拟机运行于所述宿主机中;
在所述第二操作系统中对所述待解码视频数据进行解码,以获取对应的解码视频数据。
2.如权利要求1所述的基于虚拟化的硬件解码方法,其特征在于,所述在第一操作系统中获取待解码视频数据之前,所述方法还包括:
在所述第一操作系统中响应于用户输入的硬件解码指令,根据所述硬件解码指令查找到保存的显卡属性信息
在所述第一操作系统中将所述显卡属性信息与各预设显卡属性信息进行匹配;
在匹配成功时,执行所述在第一操作系统中获取待解码视频数据的步骤。
3.如权利要求2所述的基于虚拟化的硬件解码方法,其特征在于,所述在所述第一操作系统中响应于用户输入的硬件解码指令,根据所述硬件解码指令查找到保存的显卡属性信息之前,所述方法还包括:
在所述第一操作系统中获取预设显卡信息指令,将所述预设显卡信息指令发送至所述第二操作系统,以获取所述宿主机的显卡属性信息;
在所述第二操作系统中将所述显卡属性信息反馈至所述第一操作系统,并保存至所述第一操作系统。
4.如权利要求2所述的基于虚拟化的硬件解码方法,其特征在于,所述在所述第一操作系统中响应于用户输入的硬件解码指令,根据所述硬件解码指令查找到保存的显卡属性信息,具体包括:
在所述第一操作系统中响应于用户输入的硬件解码指令,从所述硬件解码指令中提取出当前解码标识;
在所述第一操作系统中判断所述当前解码标识是否为预设解码标识;
在所述第一操作系统中在所述当前解码标识为所述预设解码标识,根据所述硬件解码指令查找到保存的显卡属性信息。
5.如权利要求1至4中的任一项所述的基于虚拟化的硬件解码方法,其特征在于,所述在所述第二操作系统中对所述待解码视频数据进行解码,以获取对应的解码视频数据之后,所述方法还包括:
将所述第二操作系统中的所述解码视频数据发送至所述第一操作系统;
在所述第一操作系统中对所述解码视频数据进行渲染处理,以实现视频的展示。
6.如权利要求1至4中的任一项所述的基于虚拟化的硬件解码方法,其特征在于,所述将所述待解码视频数据发送至第二操作系统,具体包括:
将所述待解码视频数据保存于预设共享内存空间,所述预设共享内存空间为所述第一操作系统与所述第二操作系统共享。
7.如权利要求1至4中的任一项所述的基于虚拟化的硬件解码方法,其特征在于,所述在所述第二操作系统中对所述待解码视频数据进行解码,以获取对应的解码视频数据,具体包括:
在所述第二操作系统中调用预设硬件解码API对所述待解码视频数据进行解码,以获取对应的解码视频数据。
8.如权利要求1至4中的任一项所述的基于虚拟化的硬件解码方法,其特征在于,所述在所述第二操作系统中对所述待解码视频数据进行解码,以获取对应的解码视频数据,具体包括:
在所述第二操作系统中根据预设解码器配置创建对应的解码器;
在所述第二操作系统中通过所述解码器对所述待解码视频数据进行解码,以获取对应的解码视频数据。
9.一种解码设备,其特征在于,所述解码设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于虚拟化的硬件解码程序,所述基于虚拟化的硬件解码程序被所述处理器执行时实现如权利要求1至8中任一项所述的基于虚拟化的硬件解码方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有基于虚拟化的硬件解码程序,所述基于虚拟化的硬件解码程序被处理器执行时实现如权利要求1至8中任一项所述的基于虚拟化的硬件解码方法的步骤。

说明书全文

一种基于虚拟化的硬件解码方法、解码设备及存储介质

技术领域

[0001] 本发明涉及互联网技术领域,尤其涉及一种基于虚拟化的硬件解码方法、解码设备及存储介质。

背景技术

[0002] 当前物理机实现视频解码存在两种方式,即软件解码与硬件解码。其中,软件解码是指,视频客户端通过调用图形解码接口的方式利用中央处理器(Central Processing Unit,CPU)进行视频解码;硬件解码是指,视频客户端调用视频硬件加速(DirectX Video Acceleration,DXVA)解码接口,以利用图形处理器(Graphics Processing Unit,GPU)进行视频解码。明显地,从降低CPU的性能负担的度,硬件解码作为一种更优的解码方式。
[0003] 但是,上述为物理机进行视频解码的方式,当在虚拟化场景下去进行视频解码时,目前主流的解码方案也存在两种,即显卡直通与虚拟图形处理单元(virtual GPU,vGPU)技术,所述vGPU技术即为对于GPU的虚拟化。其中,显卡直通是指,通过VFIO技术将物理机中的GPU穿透到一台虚拟机中进行解码工作,所述VFIO为一套用户态驱动框架;vGPU技术是指,在厂商支持下将一张物理机中的显卡划分为多张虚拟显卡,并通过VFIO技术进行穿透。
[0004] 将两种虚拟化场景下视频解码的解决方案进行比较,显卡直通的优势为,可以接近物理显卡的最高性能,但是,受限于物理机中外设部件互连标准(Peripheral Component Interconnect,PCI)插槽和成本的限制,单服务器最多只会插入2张显卡,即只能支持2至8个用户;vGPU的优势为,近似于真实显卡的访问性能,并且具有较好的兼容性,但是,当前的市场环境下使用vGPU具有较大的成本代价,并且,不同厂商或者不同类型的vGPU技术可能并非都能支持硬件解码加速。所以,在虚拟化场景下进行视频解码,目前市场上应用的最为常见的处理方式,仍然为使用虚拟显卡进行软件解码,即调用CPU进行解码,具体而言,在虚拟机中播放多路高清网络监控视频时,由于需要使用虚拟显卡进行解码,导致虚拟机的CPU占用率较高,较大地影响了虚拟机性能和使用体验,所以,虚拟机在进行视频解码时存在物理设备运行负担过大的技术问题。
[0005] 上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术

发明内容

[0006] 本发明的主要目的在于提供一种基于虚拟化的硬件解码方法、解码设备及存储介质,旨在解决现有技术中虚拟机在进行视频解码时存在的物理设备运行负担过大的技术问题。
[0007] 为实现上述目的,本发明提供一种基于虚拟化的硬件解码方法,所述方法包括以下步骤:
[0008] 在第一操作系统中获取待解码视频数据,所述第一操作系统为虚拟机的操作系统;
[0009] 在所述第一操作系统中通过预设钩子程序截取所述待解码视频数据,将所述待解码视频数据发送至第二操作系统,所述第二操作系统为宿主机的操作系统,所述虚拟机运行于所述宿主机中;
[0010] 在所述第二操作系统中对所述待解码视频数据进行解码,以获取对应的解码视频数据。
[0011] 优选地,所述在第一操作系统中获取待解码视频数据之前,所述方法还包括:
[0012] 在所述第一操作系统中响应于用户输入的硬件解码指令,根据所述硬件解码指令查找到保存的显卡属性信息
[0013] 在所述第一操作系统中将所述显卡属性信息与各预设显卡属性信息进行匹配;
[0014] 在匹配成功时,执行所述在第一操作系统中获取待解码视频数据的步骤。
[0015] 优选地,所述在所述第一操作系统中响应于用户输入的硬件解码指令,根据所述硬件解码指令查找到保存的显卡属性信息之前,所述方法还包括:
[0016] 在所述第一操作系统中获取预设显卡信息指令,将所述预设显卡信息指令发送至所述第二操作系统,以获取所述宿主机的显卡属性信息;
[0017] 在所述第二操作系统中将所述显卡属性信息反馈至所述第一操作系统,并保存至所述第一操作系统。
[0018] 优选地,所述在所述第一操作系统中响应于用户输入的硬件解码指令,根据所述硬件解码指令查找到保存的显卡属性信息,具体包括:
[0019] 在所述第一操作系统中响应于用户输入的硬件解码指令,从所述硬件解码指令中提取出当前解码标识;
[0020] 在所述第一操作系统中判断所述当前解码标识是否为预设解码标识;
[0021] 在所述第一操作系统中在所述当前解码标识为所述预设解码标识,根据所述硬件解码指令查找到保存的显卡属性信息。
[0022] 优选地,所述在所述第二操作系统中对所述待解码视频数据进行解码,以获取对应的解码视频数据之后,所述方法还包括:
[0023] 将所述第二操作系统中的所述解码视频数据发送至所述第一操作系统;
[0024] 在所述第一操作系统中对所述解码视频数据进行渲染处理,以实现视频的展示。
[0025] 优选地,所述将所述待解码视频数据发送至第二操作系统,具体包括:
[0026] 将所述待解码视频数据保存于预设共享内存空间,所述预设共享内存空间为所述第一操作系统与所述第二操作系统共享。
[0027] 优选地,所述在所述第二操作系统中对所述待解码视频数据进行解码,以获取对应的解码视频数据,具体包括:
[0028] 在所述第二操作系统中调用预设硬件解码API对所述待解码视频数据进行解码,以获取对应的解码视频数据。
[0029] 优选地,所述在所述第二操作系统中对所述待解码视频数据进行解码,以获取对应的解码视频数据,具体包括:
[0030] 在所述第二操作系统中根据预设解码器配置创建对应的解码器;
[0031] 在所述第二操作系统中通过所述解码器对所述待解码视频数据进行解码,以获取对应的解码视频数据。
[0032] 此外,为实现上述目的,本发明还提供一种解码设备,所述解码设备包括:麦克存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于虚拟化的硬件解码程序,所述基于虚拟化的硬件解码程序配置为实现所述基于虚拟化的硬件解码方法的步骤。
[0033] 此外,为实现上述目的,本发明还提供一种存储介质,所述存储介质上存储有基于虚拟化的硬件解码程序,所述基于虚拟化的硬件解码程序被处理器执行时实现所述的基于虚拟化的硬件解码方法的步骤。
[0034] 本发明中通过将第一操作系统中的待解码视频数据转发至第二操作系统,以调用GPU进行解码,改善了通过CPU进行解码带来的CPU负载过大的问题,也就解决了现有技术中虚拟机在进行视频解码时存在的物理设备运行负担过大的技术问题。附图说明
[0035] 图1是本发明实施例方案涉及的硬件运行环境的解码设备结构示意图;
[0036] 图2为本发明基于虚拟化的硬件解码方法第一实施例的流程示意图;
[0037] 图3为本发明基于虚拟化的硬件解码方法第二实施例的流程示意图;
[0038] 图4为本发明基于虚拟化的硬件解码方法第三实施例的流程示意图;
[0039] 图5为本发明基于虚拟化的硬件解码方法第四实施例的流程示意图;
[0040] 图6为本发明基于虚拟化的硬件解码方法第五实施例的流程示意图。
[0041] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0042] 应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0043] 参照图1,图1为本发明实施例方案涉及的硬件运行环境的解码设备结构示意图。
[0044] 如图1所示,该解码设备可以包括:处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。
用户接口1003可以包括显示屏(Display),可选用户接口1003还可以包括标准的有线接口、无线接口,对于用户接口1003的有线接口在本发明中可为USB接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
[0045] 所述解码设备可为个人电脑或服务器等电子设备。
[0046] 本领域技术人员可以理解,图1中示出的结构并不构成对解码设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0047] 如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模、用户接口模块以及基于虚拟化的硬件解码程序。
[0048] 在图1所示的解码设备中,网络接口1004主要用于连接后台服务器,与所述后台服务器进行数据通信;用户接口1003主要用于连接外设;所述解码设备通过处理器1001调用存储器1005中存储的基于虚拟化的硬件解码程序,并执行以下操作:
[0049] 在第一操作系统中获取待解码视频数据,所述第一操作系统为虚拟机的操作系统;
[0050] 在所述第一操作系统中通过预设钩子程序截取所述待解码视频数据,将所述待解码视频数据发送至第二操作系统,所述第二操作系统为宿主机的操作系统,所述虚拟机运行于所述宿主机中;
[0051] 在所述第二操作系统中对所述待解码视频数据进行解码,以获取对应的解码视频数据。
[0052] 进一步地,处理器1001可以调用存储器1005中存储的基于虚拟化的硬件解码程序,还执行以下操作:
[0053] 在所述第一操作系统中响应于用户输入的硬件解码指令,根据所述硬件解码指令查找到保存的显卡属性信息;
[0054] 在所述第一操作系统中将所述显卡属性信息与各预设显卡属性信息进行匹配;
[0055] 在匹配成功时,执行所述在第一操作系统中获取待解码视频数据的步骤。
[0056] 进一步地,处理器1001可以调用存储器1005中存储的基于虚拟化的硬件解码程序,还执行以下操作:
[0057] 在所述第一操作系统中获取预设显卡信息指令,将所述预设显卡信息指令发送至所述第二操作系统,以获取所述宿主机的显卡属性信息;
[0058] 在所述第二操作系统中将所述显卡属性信息反馈至所述第一操作系统,并保存至所述第一操作系统。
[0059] 进一步地,处理器1001可以调用存储器1005中存储的基于虚拟化的硬件解码程序,还执行以下操作:
[0060] 在所述第一操作系统中响应于用户输入的硬件解码指令,从所述硬件解码指令中提取出当前解码标识;
[0061] 在所述第一操作系统中判断所述当前解码标识是否为预设解码标识;
[0062] 在所述第一操作系统中在所述当前解码标识为所述预设解码标识,根据所述硬件解码指令查找到保存的显卡属性信息。
[0063] 进一步地,处理器1001可以调用存储器1005中存储的基于虚拟化的硬件解码程序,还执行以下操作:
[0064] 将所述第二操作系统中的所述解码视频数据发送至所述第一操作系统;
[0065] 在所述第一操作系统中对所述解码视频数据进行渲染处理,以实现视频的展示。
[0066] 进一步地,处理器1001可以调用存储器1005中存储的基于虚拟化的硬件解码程序,还执行以下操作:
[0067] 将所述待解码视频数据保存于预设共享内存空间,所述预设共享内存空间为所述第一操作系统与所述第二操作系统共享。
[0068] 进一步地,处理器1001可以调用存储器1005中存储的基于虚拟化的硬件解码程序,还执行以下操作:
[0069] 在所述第二操作系统中调用预设硬件解码API对所述待解码视频数据进行解码,以获取对应的解码视频数据。
[0070] 进一步地,处理器1001可以调用存储器1005中存储的基于虚拟化的硬件解码程序,还执行以下操作:
[0071] 在所述第二操作系统中根据预设解码器配置创建对应的解码器;
[0072] 在所述第二操作系统中通过所述解码器对所述待解码视频数据进行解码,以获取对应的解码视频数据。
[0073] 本实施例中通过将第一操作系统中的待解码视频数据转发至第二操作系统,以调用GPU进行解码,改善了通过CPU进行解码带来的CPU负载过大的问题,也就解决了现有技术中虚拟机在进行视频解码时存在的物理设备运行负担过大的技术问题。
[0074] 基于上述硬件结构,提出本发明基于虚拟化的硬件解码方法的实施例。
[0075] 参照图2,图2为本发明基于虚拟化的硬件解码方法第一实施例的流程示意图。
[0076] 在第一实施例中,所述基于虚拟化的硬件解码方法包括以下步骤:
[0077] 步骤S10:在第一操作系统中获取待解码视频数据,所述第一操作系统为虚拟机的操作系统;
[0078] 可以理解的是,通过虚拟化技术可将一台物理机虚拟成多台逻辑计算机,其中,可将虚拟出的逻辑计算机称为虚拟机,将物理机称为宿主机。其中,虚拟机运行的操作系统可与宿主机运行的操作系统不同,比如,虚拟机可运行社区企业操作系统(Community Enterprise Operating System,CentOS)即第一操作系统,宿主机可运行Windows操作系统即第二操作系统,当然,对于虚拟机与宿主机运行的操作系统以及二者的操作系统是否相同,本实施例对此不作限制。
[0079] 步骤S20:在所述第一操作系统中通过预设钩子程序截取所述待解码视频数据,将所述待解码视频数据发送至第二操作系统,所述第二操作系统为宿主机的操作系统,所述虚拟机运行于所述宿主机中;
[0080] 在具体实现中,当在虚拟机中打开视频客户端进行视频播放时,需要对播放的视频进行解码,为了提高解码的效率以及规避掉使用CPU进行解码带来的过大的CPU运行负载,可先将待解码视频数据由第一操作系统发送至第二操作系统,由第二操作系统调用GPU进行解码,也就实现了在虚拟化场景下视频数据通过GPU进行解码的解码方式。对于具体的实现方式,可通过预设钩子程序将第一操作系统中的待解码视频数据发送至第二操作系统,所述钩子程序(Hook)用于监视指定消息,在指定消息到达时,在该消息对应的目标处理函数处理该消息之前,钩子程序优先处理指定消息,所以,钩子程序实现了在消息传递的中途对该消息进行加工处理,当然,钩子程序也可中途结束消息的传递。在本实施例中,预设钩子程序通过挂钩DXVA解码接口,在获取到指定的待解码视频数据时,将传递中的待解码视频数据转发至第二操作系统。
[0081] 步骤S30:在所述第二操作系统中对所述待解码视频数据进行解码,以获取对应的解码视频数据。
[0082] 可以理解的是,在第二操作系统获取到待解码视频数据后,由于第二操作系统为宿主机的操作系统,不同于虚拟机,宿主机可直接调用GPU进行解码,则可调用GPU对待解码视频数据进行解码,也就实现了虚拟化场景下通过GPU对待解码视频数据进行解码的技术方案。并且,因为通过硬件GPU进行解码,充分利用物理设备的特性,可以较好地降低虚拟机CPU的使用率。
[0083] 本实施例中通过将第一操作系统中的待解码视频数据转发至第二操作系统,以调用GPU进行解码,改善了通过CPU进行解码带来的CPU负载过大的问题,也就解决了现有技术中虚拟机在进行视频解码时存在的物理设备运行负担过大的技术问题。
[0084] 参照图3,图3为本发明基于虚拟化的硬件解码方法第二实施例的流程示意图,基于上述图2所示的实施例,提出本发明基于虚拟化的硬件解码方法的第二实施例。
[0085] 在第二实施例中,所述步骤S10之前,所述方法还包括:
[0086] 步骤S101:在所述第一操作系统中响应于用户输入的硬件解码指令,根据所述硬件解码指令查找到保存的显卡属性信息;
[0087] 可以理解的是,在进行视频监控时,若通过基于虚拟化的硬件解码方法第一实施例中的步骤进行视频解码,可在视频解码之前,可先确定宿主机的物理特性,判断宿主机的性能是否支持当前的视频解码操作。
[0088] 在具体实现中,当用户在虚拟机中开启视频监控客户端时,将先在虚拟机中查找已保存的显卡属性信息,所述显卡属性信息为GPU的物理属性信息,比如显卡的频率、宽带和DXVA硬解能等级等,用于描述GPU的运行能力。对于所述显卡属性信息的获取方式,可在用户开启视频监控客户端进行视频解码之前,或者,在用户开机时,请求宿主机以获取硬件GPU的属性信息并保存,以便在使用时快速确定显卡属性信息,无需每次解码时重复获取。
[0089] 步骤S102:在所述第一操作系统中将所述显卡属性信息与各预设显卡属性信息进行匹配;
[0090] 应当理解的是,由于不同GPU的物理性能与所能提供的解码能力存在差异,在进行解码之前,将先确定当前GPU的解码能力。比如,获取已保存于虚拟机中的显卡属性信息,将该显卡属性信息与预设显卡属性信息进行匹配,以判断是否进行解码操作。比如,若虚拟机中保存的GPU的显卡属性信息包括DXVA2_ModeH264_E(DXVA2_ModeH264_VLD_NoFGT)即等级E,等级E为显卡的解码加速能力的一种级别,若考虑到物理机运行的总体负载,将预设显卡属性信息设置为DXVA2_ModeH264_B(DXVA2_ModeH264_MoComp_FGT)即等级B,解码H.264的能力被分为了A至F共6个等级,其中A为最低,F为最高。当然,能力等级高于等级B的等级A,也满足解码条件,所以,预设显卡属性信息可包括等级A与等级B。所以,将查找到的物理机真实的显卡属性信息即等级E与预设显卡属性信息进行匹配,匹配不成功,表明现有物理机中的GPU性能不满足预设的解码要求,可提示用户解码失败或者提示GPU不支持当前操作。
[0091] 在匹配成功时,执行步骤S10。
[0092] 为了预先获取显卡属性信息并保存,在步骤S101之前,所述方法还包括:
[0093] 步骤S1011:在所述第一操作系统中获取预设显卡信息指令,将所述预设显卡信息指令发送至所述第二操作系统,以获取所述宿主机的显卡属性信息;
[0094] 可以理解的是,由于虚拟机没有真实的物理GPU,所以,无法直接调用GPU的DXVA接口进行硬件解码,所以,在实现第一实施例与第二实施例时,将在虚拟机(Virtual Machine,VM)中增加一个虚拟机代理层,可将该虚拟机代理层称为VM代理,虚拟机与宿主机的信息通信将以VM代理作为中转进行信息交互,包括将待解码视频数据由虚拟机打包转发至宿主机等步骤,都将先发送至VM代理,再由VM代理转发至宿主机。其中,VM代理将模拟宿主机硬件GPU的属性信息,通过挂钩的方式,以实现对于视频解码流程的操作模拟。
[0095] 在具体实现中,当虚拟机获取到待解码视频数据时,将先获取显卡属性信息,当虚拟机中未保存有显卡属性信息时,可向宿主机请求该显卡属性信息。
[0096] 步骤S1012:在所述第二操作系统中将所述显卡属性信息反馈至所述第一操作系统,并保存至所述第一操作系统。
[0097] 应当理解的是,在从宿主机获取到该显卡属性信息后,可将该显卡属性信息保存至虚拟机本地,以便于后续操作中根据显卡属性信息进行物理机的解码能力的判断。其中,可将获取到的显卡属性信息保存至虚拟机中的VM代理中。
[0098] 本实例中通过将GPU的物理属性信息与进行解码操作要求的属性信息进行匹配,以判断物理机的性能是否满足解码要求;同时,虚拟机可向宿主机请求显卡属性信息并将反馈的显卡属性信息保存至虚拟机本地,便于进行解码操作时直接从本地获取显卡属性信息以判断解码性能,提高解码效率。
[0099] 参照图4,图4为本发明基于虚拟化的硬件解码方法第三实施例的流程示意图,基于上述图3所示的实施例,提出本发明基于虚拟化的硬件解码方法的第三实施例。
[0100] 在第三实施例中,所述步骤S101,具体包括:
[0101] 步骤S1011′:在所述第一操作系统中响应于用户输入的硬件解码指令,从所述硬件解码指令中提取出当前解码标识;
[0102] 可以理解的是,为了让用户的使用更加灵活,用户可自由选择是否开启虚拟机通过GPU进行视频解码的解码方式。比如,用户在虚拟机中开启视频监控客户端时,用户可将GPU硬件解码的选项设置为开启状态,所以,从用户操作生成的硬件解码指令中提取出的当前解码标识即表示开启GPU硬件解码。
[0103] 步骤S1012′:在所述第一操作系统中判断所述当前解码标识是否为预设解码标识;
[0104] 在具体实现中,若当前解码标识为表示开启GPU硬件解码功能的解码标识时,则将查找虚拟机中保存的显卡属性信息,以进行后续操作,通过GPU实施硬件解码流程。
[0105] 步骤S1013′:在所述第一操作系统中在所述当前解码标识为所述预设解码标识,根据所述硬件解码指令查找到保存的显卡属性信息。
[0106] 本实施例中通过对于预设解码标识的判断步骤,可赋予当前用户是否开启GPU硬件解码功能的权限,便于用户灵活地进行解码操作。
[0107] 参照图5,图5为本发明基于虚拟化的硬件解码方法第四实施例的流程示意图,基于上述图2所示的实施例,提出本发明基于虚拟化的硬件解码方法的第四实施例。
[0108] 在第四实施例中,所述步骤S30之后,所述方法还包括:
[0109] 步骤S40:将所述第二操作系统中的所述解码视频数据发送至所述第一操作系统;
[0110] 可以理解的是,在第二操作系统完成视频解码后,为了使得用户可在虚拟机中直接观看解码后的视频,可将第二操作系统中完成视频解码的解码视频数据回传至虚拟机。
[0111] 步骤S50:在所述第一操作系统中对所述解码视频数据进行渲染处理,以实现视频的展示。
[0112] 应当理解的是,在虚拟机获取到解码视频数据后,将进行视频的渲染处理,以使得用户可在视频客户端中直接观看视频。
[0113] 进一步地,为了在视频解码过程中减少虚拟机与宿主机的数据传输量,可将所述待解码视频数据保存于预设共享内存空间,所述预设共享内存空间为所述第一操作系统与所述第二操作系统共享。
[0114] 可以理解的是,通过将待解码视频数据保存至共享内存空间中,使得将待解码视频数据由第一操作系统发送至第二操作系统的步骤在实际运行时,将不存在数据传输的过程,因为,该视频数据所存储的内存位置被第一操作系统与第二操作系统所共用,所以,数据发送至第二操作系统的步骤,实质转换为发送数据存储位置至第二操作系统,可以较大地降低数据传输量,提高了视频解码的效率。当然,解码后的解码视频数据也可保存于预设共享内存空间。
[0115] 进一步地,为了提高视频解码的效率,所述在所述第二操作系统中对所述待解码视频数据进行解码,以获取对应的解码视频数据,可具体包括,在所述第二操作系统中调用预设硬件解码应用程序编程接口(Application Programming Interface,API)对所述待解码视频数据进行解码,以获取对应的解码视频数据。
[0116] 可以理解的是,宿主机在通过GPU进行硬件解码时,可调用预设硬件解码API进行解码操作。其中,所述预设硬件解码API可为DXVA接口等,通过挂钩DXVA接口对视频进行解码,可以较好地提高视频解码的性能和效率。
[0117] 本实施例中通过将宿主机中的解码视频数据反馈至虚拟机,便于虚拟机进行视频播放操作。
[0118] 参照图6,图6为本发明基于虚拟化的硬件解码方法第五实施例的流程示意图,基于上述图2所示的实施例,提出本发明基于虚拟化的硬件解码方法的第五实施例。
[0119] 在第五实施例中,所述步骤S30,具体包括:
[0120] 步骤S301:在所述第二操作系统中根据预设解码器配置创建对应的解码器;
[0121] 可以理解的是,视频解码的具体流程为,为了进行视频解码,将先根据预设的解码器配置创建解码器,当然,解码器配置也可进行自定义。
[0122] 步骤S302:在所述第二操作系统中通过所述解码器对所述待解码视频数据进行解码,以获取对应的解码视频数据。
[0123] 在具体实现中,解码器将调用BeginFrame方法进行解码,在解码的过程中,可通过GetBuffer去获取DXVA解码器的缓存数据,以进行缓存的填充,并通过ReleaseBuffer去释放该缓存数据。在上述数据处理完成时,Execute进行解码,EndFrame结束解码,也就完成了对待解码视频数据的解码,生成对应的解码视频数据;在判断出上述数据处理未完成时,将再次执行GetBuffer去获取DXVA解码器的缓存数据直至判断出数据处理完成。
[0124] 当然,在结束解码时,将删除创建的解码器,下次解码时再重新创建。
[0125] 在本实施例中通过上述步骤进行视频解码,可以较好地提高视频解码的效率。
[0126] 此外,本发明实施例还提出一种存储介质,所述存储介质上存储有基于虚拟化的硬件解码程序,所述基于虚拟化的硬件解码程序被处理器执行时实现如下操作:
[0127] 在第一操作系统中获取待解码视频数据,所述第一操作系统为虚拟机的操作系统;
[0128] 在所述第一操作系统中通过预设钩子程序截取所述待解码视频数据,将所述待解码视频数据发送至第二操作系统,所述第二操作系统为宿主机的操作系统,所述虚拟机运行于所述宿主机中;
[0129] 在所述第二操作系统中对所述待解码视频数据进行解码,以获取对应的解码视频数据。
[0130] 进一步地,所述基于虚拟化的硬件解码程序被处理器执行时还实现如下操作:
[0131] 在所述第一操作系统中响应于用户输入的硬件解码指令,根据所述硬件解码指令查找到保存的显卡属性信息;
[0132] 在所述第一操作系统中将所述显卡属性信息与各预设显卡属性信息进行匹配;
[0133] 在匹配成功时,执行所述在第一操作系统中获取待解码视频数据的步骤。
[0134] 进一步地,所述基于虚拟化的硬件解码程序被处理器执行时还实现如下操作:
[0135] 在所述第一操作系统中获取预设显卡信息指令,将所述预设显卡信息指令发送至所述第二操作系统,以获取所述宿主机的显卡属性信息;
[0136] 在所述第二操作系统中将所述显卡属性信息反馈至所述第一操作系统,并保存至所述第一操作系统。
[0137] 进一步地,所述基于虚拟化的硬件解码程序被处理器执行时还实现如下操作:
[0138] 在所述第一操作系统中响应于用户输入的硬件解码指令,从所述硬件解码指令中提取出当前解码标识;
[0139] 在所述第一操作系统中判断所述当前解码标识是否为预设解码标识;
[0140] 在所述第一操作系统中在所述当前解码标识为所述预设解码标识,根据所述硬件解码指令查找到保存的显卡属性信息。
[0141] 进一步地,所述基于虚拟化的硬件解码程序被处理器执行时还实现如下操作:
[0142] 将所述第二操作系统中的所述解码视频数据发送至所述第一操作系统;
[0143] 在所述第一操作系统中对所述解码视频数据进行渲染处理,以实现视频的展示。
[0144] 进一步地,所述基于虚拟化的硬件解码程序被处理器执行时还实现如下操作:
[0145] 将所述待解码视频数据保存于预设共享内存空间,所述预设共享内存空间为所述第一操作系统与所述第二操作系统共享。
[0146] 进一步地,所述基于虚拟化的硬件解码程序被处理器执行时还实现如下操作:
[0147] 在所述第二操作系统中调用预设硬件解码API对所述待解码视频数据进行解码,以获取对应的解码视频数据。
[0148] 进一步地,所述基于虚拟化的硬件解码程序被处理器执行时还实现如下操作:
[0149] 在所述第二操作系统中根据预设解码器配置创建对应的解码器;
[0150] 在所述第二操作系统中通过所述解码器对所述待解码视频数据进行解码,以获取对应的解码视频数据。
[0151] 本实施例中通过将第一操作系统中的待解码视频数据转发至第二操作系统,以调用GPU进行解码,改善了通过CPU进行解码带来的CPU负载过大的问题,也就解决了现有技术中虚拟机在进行视频解码时存在的物理设备运行负担过大的技术问题。
[0152] 应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0153] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0154] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。词语第一、第二、以及第三等的使用不表示任何顺序,可将这些单词解释为名称。
[0155] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,解码设备,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0156] 以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈