CN103873924B - 一种视频重定向的方法、装置、系统 - Google Patents
一种视频重定向的方法、装置、系统 Download PDFInfo
- Publication number
- CN103873924B CN103873924B CN201210535654.5A CN201210535654A CN103873924B CN 103873924 B CN103873924 B CN 103873924B CN 201210535654 A CN201210535654 A CN 201210535654A CN 103873924 B CN103873924 B CN 103873924B
- Authority
- CN
- China
- Prior art keywords
- data frame
- video data
- video
- instruction
- frame decoding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明实施例提供了一种视频重定向的方法、装置、系统及计算机可读介质,通过截获视频播放器发送的视频数据帧和视频数据帧解码指令,将截获视频数据帧和视频数据帧解码指令发送到客户端,实现视频重定向,使客户端根据视频数据帧解码指令对视频数据帧进行解码。其中视频数据帧是由视频播放器对加载的视频文件解复用获得的;在实现视频重定向时,节约了服务器计算资源和网络传输带宽,同时不依赖某一种视频播放器,并且充分利用了客户端的计算机资源。
Description
技术领域
本发明涉及信息技术领域,特别涉及一种视频重定向的方法、装置、系统。
背景技术
随着计算机技术的不断发展,远程桌面成为一种流行技术。远程桌面技术通过登陆到远程服务器,将该远程服务器屏幕显示的内容传递到本地客户端进行显示。远程桌面应用并不仅指远程的屏幕显示,还可以包含远程视频传送。
现有技术中,使用远程桌面的视频播放器播放视频文件时,为了节约远程服务器计算资源和网络传输带宽,使用基于微软公司推出的DirectShow框架的Media Player时,在远程服务器上通过该视频播放器加载视频文件后,可以从DirectShow中的Filter截获视频文件中未解码的视频数据,在客户端的DirectShow框架中也插入Filter,接收远程服务器发送的视频数据进行解码显示。
但是,随着远程桌面技术的成熟以及市场上视频播放器种类不断增加,Windows操作系统平台下基于DirectShow框架的解决方案不能适用其他视频播放器。
发明内容
针对现有技术中远程桌面环境下使用视频播放器播放视频文件时,只有使用Media Player与DirectShow框架,才能解决远程服务器计算资源和网络传输带宽的问题,本发明实施例提供了一种视频重定向的方法、装置、系统及计算机可读介质。
第一方面,本发明实施例提供了一种视频重定向的方法,包括:
截获视频播放器向虚拟显示驱动发送视频数据帧和视频数据帧解码指令;所述视频数据帧是由所述视频播放器对加载的视频文件解复用获得的;
向所述客户端发送截获的所述视频数据帧和所述视频数据帧解码指令。
结合第一方面,在第一种可能的实施方式中,所述截获所述视频数据帧和所述视频数据帧解码指令,具体包括:
当所述视频播放器向所述虚拟显示驱动发送所述视频数据帧和所述视频数据帧解码指令时,所述虚拟显示驱动截获所述视频数据帧和所述视频数据帧解码指令。
结合第一方面,在第二种可能的实施方式中,所述截获所述视频数据帧和所述视频数据帧解码指令,具体包括:
当所述视频播放器通过运行库向所述虚拟显示驱动发送所述视频数据帧和所述数据帧解码指令,所述运行库调用所述虚拟显示驱动对所述视频数据帧进行解码时,动态链接库截获所述视频数据帧和所述视频数据帧解码指令。
结合第一方面,在第三种可能的实施方式中,所述截获所述视频数据帧和所述视频数据帧解码指令,具体包括:
当所述视频播放器通过运行库向所述虚拟显示驱动发送的所述视频数据帧和所述视频数据帧解码指令时,所述运行库截获所述视频数据帧和所述视频数据帧解码指令。
结合第一方面,在第四种可能的实施方式中,所述截获所述视频数据帧和所述频数据帧解码指令,具体包括:
当所述视频播放器调用运行库向所述虚拟显示驱动发送所述视频数据帧和所述视频数据帧解码指令时,动态链接库截获所述视频数据帧和所述视频数据帧解码指令。
结合第一方面或者第一方面的第一至四种任一可能的实施方式,在第五种可能的实施方式中,所述视频播放器运行在虚拟机中。
第二方面,本发明实施例提供了服务器,包括:
截获单元,用于截获视频播放器向虚拟显示驱动发送视频数据帧和视频数据帧解码指令;所述视频数据帧是由所述视频播放器对加载的视频文件解复用获得的;
发送单元,用于向所述客户端发送截获的所述视频数据帧和所述视频数据帧解码指令。
结合第二方面,在第一种可能的实施方式中,所述截获单元,具体为所述虚拟显示驱动,用于当所述视频播放器向所述虚拟显示驱动发送所述视频数据帧和所述视频数据帧解码指令时,所述虚拟显示驱动截获所述视频数据帧和所述视频数据帧解码指令。
结合第二方面,在第二种可能的实施方式中,所述截获单元,具体为动态链接库,用于当所述视频播放器通过运行库向所述虚拟显示驱动发送所述视频数据帧和所述数据帧解码指令,所述运行库调用所述虚拟显示驱动对所述视频数据帧进行解码时,所述动态链接库截获所述视频数据帧和所述视频数据帧解码指令。
结合第二方面,在第三种可能的实施方式中,所述截获单元具体为DirectX运行库,用于当所述视频播放器通过所述运行库向所述虚拟显示驱动发送的所述视频数据帧和所述视频数据帧解码指令时,所述运行库截获所述视频数据帧和所述视频数据帧解码指令。
结合第二方面,在第四种可能的实施方式中,所述截获单元具体为动态链接库,用于当所述视频播放器调用运行库向所述虚拟显示驱动发送所述视频数据帧和所述视频数据帧解码指令时,所述动态链接库截获所述视频数据帧和所述视频数据帧解码指令。
第三方面,本发明实施例提供了一种视频重定向的系统,包括客户端和本发明实施例第二方面任一所述的服务器;其中,所述客户端用于接收所述服务器发送的视频数据帧和视频数据帧解码指令;根据所述视频数据帧解码指令对所述视频数据帧进行解码。
第四方面,本发明实施例还提供了一种服务器,包括:包括中央处理器和存储器,所述存储器存储执行指令,当所述服务器运行时,所述中央处理器与所述存储器之间通信,所述中央处理器执行所述执行指令使得所述服务器执行:
截获视频播放器向虚拟显示驱动发送视频数据帧和视频数据帧解码指令;所述视频数据帧是由所述视频播放器对加载的视频文件解复用获得的;
向所述客户端发送截获的所述视频数据帧和所述视频数据帧解码指令。
结合第四方面,在第一种可能的实施方式中,所述截获所述视频数据帧和所述视频数据帧解码指令,具体包括:
当所述视频播放器向所述虚拟显示驱动发送所述视频数据帧和所述视频数据帧解码指令时,所述虚拟显示驱动截获所述视频数据帧和所述视频数据帧解码指令。
结合第四方面,在第二种可能的实施方式中,所述截获所述视频数据帧和所述视频数据帧解码指令,具体包括:
当所述视频播放器通过运行库向所述虚拟显示驱动发送所述视频数据帧和所述数据帧解码指令,所述运行库调用所述虚拟显示驱动对所述视频数据帧进行解码时,动态链接库截获所述视频数据帧和所述视频数据帧解码指令。
结合第四方面,在第三种可能的实施方式中,所述截获所述视频数据帧和所述视频数据帧解码指令,具体包括:
当所述视频播放器通过运行库向所述虚拟显示驱动发送的所述视频数据帧和所述视频数据帧解码指令时,所述运行库截获所述视频数据帧和所述视频数据帧解码指令。
结合第四方面,在第四种可能的实施方式中,所述截获所述视频数据帧和所述频数据帧解码指令,具体包括:
当所述视频播放器调用运行库向所述虚拟显示驱动发送所述视频数据帧和所述视频数据帧解码指令时,动态链接库截获所述视频数据帧和所述视频数据帧解码指令。
结合第四方面或者第四方面的第一至四种任一可能的实施方式,在第五种可能的实施方式中,所述视频播放器运行在虚拟机中;其中,所述虚拟机运行在所述服务器上。
第五方面,本发明实施例提供了一种视频重定向系统,包括客户端和本发明第四方面任一所述的服务器;其中,所述客户端用于接收所述服务器发送的视频数据帧和视频数据帧解码指令;根据所述视频数据帧解码指令对所述视频数据帧进行解码。
第六方面,本发明实施例还提供了一种计算机可读存储介质,包含计算机执行指令,当服务器的中央处理器执行所述计算机执行指令时,使所述服务器执行:
截获视频播放器向虚拟显示驱动发送视频数据帧和视频数据帧解码指令;所述视频数据帧是由所述视频播放器对加载的视频文件解复用获得的;
向所述客户端发送截获的所述视频数据帧和所述视频数据帧解码指令。
结合第六方面,在第一种可能的实施方式中,所述截获所述视频数据帧和所述视频数据帧解码指令,具体包括:
所述视频播放器调用运行库向所述虚拟显示驱动发送所述视频数据帧和所述视频数据帧解码指令,所述虚拟显示驱动截获所述视频数据帧和所述视频数据帧解码指令。
结合第六方面,在第二种可能的实施方式中,所述截获所述视频数据帧和所述视频数据帧解码指令,具体包括:
当所述视频播放器通过运行库向所述虚拟显示驱动发送所述视频数据帧和所述数据帧解码指令,所述运行库调用所述虚拟显示驱动对所述视频数据帧进行解码时,动态链接库截获所述视频数据帧和所述视频数据帧解码指令。
结合第六方面,在第三种可能的实施方式中,所述截获所述视频数据帧和所述视频数据帧解码指令,具体包括:
当所述视频播放器通过运行库向所述虚拟显示驱动发送的所述视频数据帧和所述视频数据帧解码指令时,所述运行库截获所述视频数据帧和所述视频数据帧解码指令。
结合第六方面,在第四种可能的实施方式中,所述截获所述视频数据帧和所述频数据帧解码指令,具体包括:
当所述视频播放器调用运行库向所述虚拟显示驱动发送所述视频数据帧和所述视频数据帧解码指令时,动态链接库截获所述视频数据帧和所述视频数据帧解码指令。
结合第六方面或者第六方面的第一至四种任一可能的实施方式,在第五种可能的实施方式中,所述视频播放器运行在虚拟机中;其中,所述虚拟机运行在所述服务器上。
根据本发明实施例提供的视频重定向的方法、装置、系统及计算机可读介质,截获视频播放器向虚拟显示驱动发送的视频数据帧和视频数据帧解码指令,将截获的视频数据帧和视频数据帧解码指令发送到客户端,实现视频重定向,使客户端根据视频数据帧解码指令对视频数据帧进行解码,在实现视频重定向时,节约了服务器计算资源和网络传输带宽,同时不依赖某一种视频播放器,并且充分利用了客户端的计算机资源。
附图说明
图1为本发明实施例应用场景系统结构图;
图2为本发明实施例远程桌面服务器结构示意图;
图3为本发明实施例实施方案示意图;
图4为本发明实施例实施方案示意图;
图5为本发明实施例实施方案示意图;
图6为本发明实施例实施方案示意图;
图7为本发明实施例实施方案流程图;
图8为本发明实施例客户端结构示意图;
图9为本发明实施例实施场景系统架构图;
图10为本发明实施例服务器结构图;
图11为本发明实施例系统结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
远程桌面环境中,客户端发起视频播放请求,服务器根据客户端的视频播放请求,通过视频播放器加载视频文件,将该视频文件的视频数据流传输到客户端进行处理,这一过程称为视频重定向。本发明实施例中的服务器可以包括普通个人计算机或其他终端,也可以为商业服务器等,在这里并不具体限定。本发明实施例以向客户端提供基于操作系统平台的远程桌面服务为例。但是本发明方案并不仅限于操作系统,根据本发明方案,同样可以扩展到其他常见的系统平台,如操作系统等。
本发明实施例提供了视频重定向的方法,应用于远程桌面场景。远程桌面场景通常由本地计算机和远程计算机组成。本地计算机通过访问远程计算机,将远程计算机桌面传送到本地计算机。本地计算机,即本发明实施例中的客户端;远程计算机,即本发明实施例中的服务器。本发明实施例中的视频重定向是指将服务器上视频文件的视频数据流传送到客户端处理的过程。其中一种远程桌面场景为虚拟桌面基础架构场景。虚拟桌面基础架构场景如图1所示,本实施场景仅是一种示例性说明,只是给出了与本发明实施例相关的组成部分,但是图1并不是对本发明应用的具体限定。图1中左侧是虚拟桌面的客户端,通常称为瘦客户端,客户端的设备形式可以是普通计算机101a、平板电脑101b、智能手机101c等。它们通过网络102使用远程桌面协议103访问远程桌面服务。服务器204a....104n提供了远程桌面的载体,用户的虚拟桌面(Virtual Desktop)以虚拟机205a、205b…·205n的形式存在于服务器上。用户通过客户端访问服务器上分配给该用户的虚拟桌面(即虚拟机),该虚拟桌面将用户访问的内容传输到用户的客户端进行显示。
以服务器204a为例,硬件结构和软件结构是虚拟桌面基础架构中最重要的组件,它的典型结构如图2所示。服务器204a中的典型结构包括3个部分,分别为硬件平台300、虚拟化平台Hypervisor301和虚拟机执行空间302。硬件平台中包括服务器物理结构中的硬盘310、中央处理器311、网络接口卡(即网卡)312和存储器313。Hypervisor301和虚拟机执行空间302分别提供了虚拟机的硬件平台和软件平台。Hypervisor它包含了虚拟机监视器320a、320b…·320n。Hypervisor是物理硬件和虚拟机之间的中间层,负责协调各个虚拟机对服务器硬件的访问。虚拟机监视器包括实现虚拟机的虚拟硬件平台。图3中,虚拟机监视器320a中包含虚拟硬件平台321a,虚拟硬件平台中包含了虚拟出来的存储器322,中央处理器323,硬盘324,显卡325和网络接口卡326等。虚拟机执行空间302中运行了多个虚拟机205a、205b…·205n。虚拟机205a的软件系统运行在虚拟机监视器320a的虚拟硬件平台321a上,其他虚拟机的软件系统也运行在对应的虚拟机监视器的虚拟硬件平台上。客户操作系统330运行在虚拟机205a中,客户操作系统330包含了一个设备驱动层331,设备驱动层331安装了虚拟显示驱动334、网络接口卡驱动336等驱动程序。虚拟机205a中包括视频播放器332。其中,客户操作系统330可以为微软公司提供的操作系统平台。根据本发明方案,同样可以扩展到其他常见的系统平台,如操作系统等。
用户使用客户端101a登陆到虚拟机205a时,用户观看视频时,比如观看优酷网络视频,或者虚拟机本地视频文件时,通过视频播放器332,加载视频文件。本发明实施例以观看本地视频为例,通过显示协议代理335接收到来自客户端101a的视频播放请求,视频播放器332根据该视频播放请求,加载视频文件。视频播放器332对加载的视频文件解复用获得视频数据帧。
视频播放器332加载视频文件后,启动视频硬件加速功能,通过运行库333向虚拟显示驱动334发送视频数据帧和视频数据帧处理指令。视频硬件加速(Video Acceleration,简称为DXVA),是微软公司专门定制的视频加速规范,它共有两个版本,分别是DXVA1.0和DXVA 2.0。运行库是由微软公司创建的多媒体编程接口。由C++编程语言实现,被广泛使用于 和Xbox电子游戏开发,本发明实施例及后面发明实施例描述的运行库与此相同。视频硬件加速是指利用计算机硬件代替视频播放器的软件算法对视频数据帧进行处理。
通常,视频数据帧发送到虚拟显示驱动334,根据视频数据帧解码指令,对该视频数据帧进行解码。其中,在本发明实施例一种实施方案中,视频数据帧及视频数据帧处理指令发送至虚拟显示驱动334时,虚拟显示驱动334截获该视频数据帧和视频数据帧解码指令,并将截获的该视频数据帧和视频数据帧解码指令发送到显示协议代理335,显示协议代理335通过虚拟网络接口卡326再经物理网络接口卡312,将截获的该视频数据帧和视频数据帧解码指令发送到客户端101a。虚拟显卡驱动334实际上并没有根据视频数据帧解码指令对视频数据帧进行处理,而是将视频数据帧和视频数据帧解码指令截获,并通过显示协议代理335发送至客户端101a进行处理。在实现视频重定向时,节约了服务器计算资源和网络传输带宽,同时不依赖某一种视频播放器,并且充分利用了客户端的计算机资源。本发明实施例中截获具体是将视频播放器332向虚拟显示驱动334发送的视频数据帧和视频数据帧解码指令拦截,发送到客户端101a,从而使视频数据帧和视频数据帧处理指令在服务器204a侧并未进行处理。
具体地,虚拟机205a中的视频播放器332根据对应的客户端101a发送的视频播放请求,加载视频文件之后,开启视频硬件加速,向虚拟显示驱动334发送视频数据帧和视频数据帧解码指令。视频播放器332加载视频文件后,对加载后的视频文件,即对视频数据流解复用,获得其中的视频数据帧。具体地,就视频播放而言,在运行库333中定义了视频硬件加速接口,通过视频播放器332调用运行库333启动视频硬件加速,通知虚拟显示驱动334根据视频数据帧解码指令对视频播放器332发送的视频数据帧进行解码。当视频数据帧和视频数据帧解码指令发送至虚拟显示驱动334时,虚拟显示驱动334截获视频数据帧和视频数据帧解码指令。如图3所示,在操作系统平台,虚拟显示驱动334为Display Driver Model(简称WDDM显示驱动模型)或者为XP Display Driver Model(简称XPDM显示驱动模型)。具体地,WDDM或XPDM显示驱动模型均包括DisplayDriver和Miniport Driver两部分模块。本发明实施例中,一种实施方案为虚拟显示驱动Display Driver模块截获视频数据帧和视频数据帧解码指令。本发明实施例中虚拟显示驱动Display Driver模块将截获的视频数据帧和视频数据帧解码指令,发送到显示协议代理335,显示协议代理335将截获的视频数据帧和视频数据帧解码指令发送到客户端101a进行处理。具体地以WDDM显示驱动模型为例,,一种实现方案为WDDM显示驱动模型在Display Driver模块中定义视频硬件加速接口,当视频数据帧和视频数据帧解码指令通过该接口时,截获该视频数据帧和视频数据帧解码指令。另一种实施方案是Display Driver模块截获该视频数据帧和视频数据帧解码指令,经Miniport Driver模块,将截获的视频数据帧和视频数据帧解码指令发送到显示协议代理335,显示协议代理335向客户端101a发送截获的视频数据帧和视频数据帧解码指令。
如图4所示,本发明实施例另一种实施方案中,虚拟机205a中的视频播放器332根据对应的客户端101a发送的视频播放请求,加载视频文件之后,开启视频硬件加速,向虚拟显示驱动334发送视频数据帧和视频数据帧解码指令。视频播放器332加载视频文件后,对加载后的视频文件,即对视频数据流解复用,获得其中的视频数据帧。具体地,就视频播放而言,在运行库333中定义了视频硬件加速接口,通过视频播放器332调用运行库333启动视频硬件加速,通知虚拟显示驱动334根据视频数据帧解码指令对视频播放器332发送的视频数据帧进行解码。当所述视频播放器332调用运行库333向虚拟显示驱动334发送视频数据帧和视频数据帧解码指令时,动态链接库截获所述视频数据帧和所述视频数据帧解码指令。即在视频数据帧和视频数据帧解码指令经过运行库333之前,动态链接库截获该视频数据帧和视频数据帧解码指令。具体的,其中一种动态链接库实现方式为,采用Hook技术截获视频播放器332对运行库333产生的调用,建立对DirectX运行库333的动态链接库文件(dll文件),在注册表中将该动态链接库文件设置为最先加载,以此截获视频播放器332对运行库333的调用,从而截获视频数据帧和视频数据帧解码指令。将截获的视频数据帧和视频数据帧解码指令发送到显示协议代理335,显示协议代理335将截获的视频数据帧和视频数据帧解码指令发送到客户端101a。
如图5所示,本发明实施例另一种实施方案中,虚拟机205a中的视频播放器332根据对应的客户端101a发送的视频播放请求,加载视频文件之后,开启视频硬件加速,向虚拟显示驱动334发送视频数据帧和视频数据帧解码指令。视频播放器332加载视频文件后,对加载后的视频文件,即对视频数据流解复用,获得其中的视频数据帧。具体地,就视频播放而言,在运行库333中定义了视频硬件加速接口,通过视频播放器332调用运行库333启动视频硬件加速,通知虚拟显示驱动334根据视频数据帧解码指令对视频播放器332发送的视频数据帧进行解码。在视频数据帧和视频数据帧解码指令经过运行库333时,运行库333截获该视频数据帧和视频数据帧解码指令,将截获的视频数据帧和视频数据帧解码指令发送到显示协议代理335,显示协议代理335将截获的视频数据帧和视频数据帧解码指令发送到客户端101a。具体地,一种运行库实现方案为在运行库333中定义视频硬件加速接口,当视频数据帧和视频数据帧解码指令通过该接口时,通过视频硬件加速接口函数截获该视频数据帧和视频数据帧解码指令。
如图6所示,本发明实施例另一种实现方案中,虚拟机205a中的视频播放器332根据对应的客户端101a发送的视频播放请求,加载视频文件之后,开启视频硬件加速,向虚拟显示驱动334发送视频数据帧和视频数据帧解码指令。视频播放器332加载视频文件后,对加载后的视频文件,即对视频数据流解复用,获得其中的视频数据帧。具体地,就视频播放而言,在运行库333中定义了视频硬件加速接口,通过视频播放器332调用运行库333启动视频硬件加速,通知虚拟显示驱动334根据视频数据帧解码指令对视频播放器332发送的视频数据帧进行解码。当所述视频播放器332向所述虚拟显示驱动334发送所述视频数据帧和所述数据帧解码指令,运行库333调用所述虚拟显示驱动334对所述视频数据帧进行解码时,动态链接库截获所述视频数据帧和所述视频数据帧解码指令。即在视频数据帧和视频数据帧解码指令通过运行库333之后,到达虚拟显示驱动334之前,动态链接库截获该视频数据帧和视频数据帧解码指令。具体地,其中一种动态链接库实现方式为采用Hook技术截获运行库333对虚拟显示驱动334的调用,建立对虚拟显示驱动334的动态连接库文件(dll文件)。将截获的视频数据帧和视频数据帧解码指令发送到显示协议代理335,显示协议代理335将截获的视频数据帧和视频数据帧解码指令发送到客户端101a。
本发明实施例上述各实施方案,在实现视频重定向时,节约了服务器计算资源和网络传输带宽,同时不依赖某一种视频播放器,并且充分利用了客户端的计算机资源。
如图7所示,本发明实施例中,以虚拟显示驱动334截获视频数据帧和视频数据帧处理指令为例,介绍本发明实施例流程。服务器204a上的虚拟机205a通过显示协议代理335接收来自客户端101a发送的视频播放请求。步骤701:视频播放器332根据视频播放请求加载视频文件;步骤702:视频播放器向虚拟显示驱动334发送视频数据帧和视频数据帧解码指令;步骤703:虚拟显示驱动334截获视频播放器332向虚拟显示驱动334发送的视频数据帧和视频数据帧解码指令;步骤704:显示协议代理335向客户端101a发送截获的视频数据帧和视频数据帧解码指令;步骤705:客户端101a接收视频数据帧和视频数据帧解码指令;步骤706:客户端101a根据视频数据帧解码指令对视频数据帧进行解码。
如图8所示,客户端101a,通过远程协议接收模块801接收虚拟机205a通过显示协议代理335发送的视频数据帧和视频数据帧解码指令。具体地,图8,作为客户端的一种示例性说明,并不是对本发明中使用的客户端的具体限定,同时附图中只是给出了一些组件的说明,对于实现客户端正常功能的一些其他组件此处并没有说明,但是本领域技术人员根据具体实现,可以从附图中获得这些组件。客户端101a包括存储器800、中央处理器810、网络接口卡820、显卡830、硬盘840和串行接口850,串行接口850可以连接鼠标和键盘等外设。其中,显卡830连接显示器860,在另一种客户端101a中,显示器860可以与客户端101a连接在一起,而不必是两个独立的装置。客户端101a运行时,存储器800中加载计算机程序,图8中,存储器800中包括远程桌面协议接收模块801、视频播放器802和操作系统803,远程桌面协议接收模块801用于接收网络接口卡820接收到的虚拟机205a通过显示协议代理335发送的视频数据帧和视频数据帧解码指令。视频播放器802对远程桌面协议接收模块801接收到的视频数据帧和视频数据帧解码指令进行处理。操作系统803为客户端提供系统运行环境,可以为操作系统、操作系统及其他操作系统,本发明对此不作具体限定。视频播放器802根据接收到的视频数据帧解码指令对视频数据帧进行解码。
当客户端101a支持视频硬件加速时,视频播放器802调用视频硬件加速应用程序接口(API),启动视频硬件加速,将视频数据帧和视频数据帧处理指令通过视频硬件加速API发送至相应的硬件(如 或等公司的显卡芯片,或者AtomCPU芯片中的核芯显卡),进行视频硬件加速,从而根据视频数据帧解码指令对视频数据帧进行解码,本实施例中,当操作系统803为操作系统时,视频硬件加速API可以为运行库。如果支持视频硬件加速,则远程协议接收模块501接收虚拟机205a通过显示协议代理335发送的视频数据帧和视频数据帧处理指令,视频播放器502通过调用视频硬件加速API,启动视频硬件加速。客户端101启动视频硬件加速功能,可以节约客户端101a中央处理器的计算资源。本发明实施例中如果客户端101a为非操作系统,则可以使用其他视频硬件加速功能根据视频数据帧处理对视频数据帧进行处理。
本发明实施例另一种应用场景为远程桌面连接服务。当某台计算机开启了远程桌面连接功能后,就可以通过网络在另一端控制这台计算机,通过远程桌面功能我们可以实时的操作这台开启了远程桌面连接功能的计算机。这里,我们称开启了远程桌面连接功能的计算机为服务器,另一端控制这台服务器的计算机为客户端。如图9所示,服务器902开启了远程桌面连接功能,客户端901远程连接到服务器902。本应用场景中的服务器902可以为普通的个人计算机或其他终端,也可以为商业服务器等;客户端可以为普通的个人计算机,也可以为平板电脑、智能手机等,在本发明实施例中不作具体限定,本发明实施例以向客户端提供基于操作系统平台的远程桌面服务为例。
服务器902接收通过网络接口卡接收来自客户端901发送的视频播放请求,比如观看优酷网络视频,或者服务器902本地视频文件时,通过视频播放器,加载视频文件。本发明实施例以观看本地视频为例,视频播放器加载本地视频文件,并对加载的视频文件进行解难复用获得视频数据帧。启动视频硬件加速,向虚拟显示驱动334发送视频数据帧和视频数据帧解码指令。截获视频播放器发送的视频数据帧和视频数据帧解码指令,显示协议代理335将截获的视频数据帧和视频数据帧解码指令最终通过物理网络接口卡312发送到客户端901,使客户端902根据视频数据帧解码指令对视频数据帧进行解码。具体截获视频数据帧和视频数据帧的实现方案请参见本发明实施例对图2、图3、图4、图5和图6的描述。关于客户端901根据接收到的视频数据帧解码指令对视频数据帧进行解码的过程请参见图8的描述,在此不再赘述。本发明实施例在图9所示场景下的实施方案,在实现视频重定向时,节约了服务器计算资源和网络传输带宽,同时不依赖某一种视频播放器,并且充分利用了客户端的计算机资源。
基于上述对本发明实施例的描述,本发明实施例提供了一种服务器10,如图10所示,包括截获单元1001和发送单元1002。其中截获单元1001,用于截获视频播放器向虚拟显示驱动发送视频数据帧和视频数据帧解码指令;所述视频数据帧是由所述视频播放器对加载的视频文件解复用获得的;发送单元1002,用于向所述客户端发送截获的所述视频数据帧和所述视频数据帧解码指令。其中,所述截获单元1001,为所述虚拟显示驱动。在另一种实施方案中,所述截获单元1001,为运行库。在第三种实施方案中,所述截获单元1001,为动态链接库。所述截获单元1001,为动态链接库时,截获视频数据帧和视频数据帧解码指令有两种方式:其中一种方式为当所述视频播放器332调用运行库333向所述虚拟显示驱动334发送所述视频数据帧和所述视频数据帧解码指令时,动态链接库截获所述视频数据帧和所述视频数据帧解码指令。即当所述视频播放器332调用运行库333向所述虚拟显示驱动334发送所述视频数据帧和所述视频数据帧解码指令时,所述视频数据帧和所述视频数据帧解码指令到达所述运行库333之前,动态链接库截获所述视频数据帧和所述视频数据帧解码指令;另一种方式为当所述视频播放器332通过运行库333向所述虚拟显示驱动334发送所述视频数据帧和所述数据帧解码指令,运行库333调用所述虚拟显示驱动334根据所述视频数据帧解码指令对所述视频数据帧进行解码时,动态链接库截获所述视频数据帧和所述视频数据帧解码指令。即当所述视频播放器调用运行库333向所述虚拟显示驱动334发送所述视频数据帧和所述视频数据帧解码指令时,所述视频数据帧和所述视频数据帧解码指令通过所述运行库333之后到达所述虚拟显示驱动334之前,动态链接库截获所述视频数据帧和所述视频数据帧解码指令。关于本发明实施例服务器10功能的具体实现可以参见发明实施例对图2、图3、图4、图5和图6的描述。
本发明实施例提供的服务器在实现视频重定向时,节约了服务器计算资源和网络传输带宽,同时不依赖某一种视频播放器,并且充分利用了客户端的计算机资源。
如图11所示,为一种视频重定向系统,包括图10所述的服务器10和客户端11。客户端11接收如图10所述的服务器发送的截获的视频数据帧和视频数据帧解码指令,客户端根据视频数据帧解码指令对视频数据帧进行解码。具体描述可以参见本发明实施例关于服务器和客户端部分的描述,在此不再赘述。本发明实施例中提供的服务器10和客户端11具体可以为普通的计算机、移动终端、工作站或专用服务器等,本发明不作具体限定,具有存储器和至少一个中央处理器,所述存储器与所述至少一个中央处理器通过总线相连,存储器存储计算机指令,所述至少一个中央处理器用于执行存储器中的计算机指令,同时也包含通用的外部接口等实现服务器功能的一些必要组件。其中,存储器中存储的计算机指令的算法可以参照发明实施例中对应的方法描述。
本发明实施例提供的视频重定向的系统,在实现视频重定向时,节约了服务器计算资源和网络传输带宽,同时不依赖某一种视频播放器,并且充分利用了客户端的计算机资源。
本发明实施例提供的基于虚拟桌面的远程桌面架构,本领域技术人员可以意识到,本发明并不限于本实施例的所描述的虚拟桌面架构,对于基于其他类型的虚拟桌面的远程桌面本发明同样适用。另外,本发明并不仅仅适用于基于虚拟桌面的远程桌面架构,同样也适用于其他向远程客户端提供视频数据的应用场景。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所公开的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:NAS(Network AttachedStorage)、U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种视频重定向的方法,其特征在于,包括:
截获视频播放器向虚拟显示驱动发送视频数据帧和视频数据帧解码指令,所述视频数据帧是由所述视频播放器对加载的视频文件解复用获得的;
向客户端发送截获的所述视频数据帧和所述视频数据帧解码指令;
所述截获所述视频数据帧和所述视频数据帧解码指令,具体包括:
当所述视频播放器通过DirectX运行库向所述虚拟显示驱动发送所述视频数据帧和所述数据帧解码指令,所述DirectX运行库调用所述虚拟显示驱动对所述视频数据帧进行解码时,动态链接库截获所述视频数据帧和所述视频数据帧解码指令。
2.如权利要求1所述的方法,其特征在于,所述视频播放器运行在虚拟机中。
3.一种视频重定向的方法,其特征在于,包括:
截获视频播放器向虚拟显示驱动发送视频数据帧和视频数据帧解码指令,所述视频数据帧是由所述视频播放器对加载的视频文件解复用获得的;
向客户端发送截获的所述视频数据帧和所述视频数据帧解码指令;
所述截获所述视频数据帧和所述视频数据帧解码指令,具体包括:
当所述视频播放器通过DirectX运行库向所述虚拟显示驱动发送的所述视频数据帧和所述视频数据帧解码指令时,所述DirectX运行库截获所述视频数据帧和所述视频数据帧解码指令。
4.一种视频重定向的方法,其特征在于,包括:
截获视频播放器向虚拟显示驱动发送视频数据帧和视频数据帧解码指令,所述视频数据帧是由所述视频播放器对加载的视频文件解复用获得的;
向客户端发送截获的所述视频数据帧和所述视频数据帧解码指令;
所述截获所述视频数据帧和所述视频数据帧解码指令,具体包括:
当所述视频播放器调用DirectX运行库向所述虚拟显示驱动发送所述视频数据帧和所述视频数据帧解码指令时,动态链接库截获所述视频数据帧和所述视频数据帧解码指令。
5.一种服务器,其特征在于,包括:
截获单元,用于当视频播放器向虚拟显示驱动发送视频数据帧和视频数据帧解码指令时,截获所述视频数据帧和所述视频数据帧解码指令,所述视频数据帧是由所述视频播放器对加载的视频文件解复用获得的;
发送单元,用于向客户端发送截获的所述视频数据帧和所述视频数据帧解码指令;
所述截获单元,具体为动态链接库,用于当所述视频播放器通过DirectX运行库向所述虚拟显示驱动发送所述视频数据帧和所述数据帧解码指令,所述DirectX运行库调用所述虚拟显示驱动对所述视频数据帧进行解码时,所述动态链接库截获所述视频数据帧和所述视频数据帧解码指令。
6.一种服务器,其特征在于,包括:
截获单元,用于当视频播放器向虚拟显示驱动发送视频数据帧和视频数据帧解码指令时,截获所述视频数据帧和所述视频数据帧解码指令,所述视频数据帧是由所述视频播放器对加载的视频文件解复用获得的;
发送单元,用于向客户端发送截获的所述视频数据帧和所述视频数据帧解码指令;
所述截获单元具体为DirectX运行库,用于当所述视频播放器通过所述DirectX运行库向所述虚拟显示驱动发送的所述视频数据帧和所述视频数据帧解码指令时,所述DirectX运行库截获所述视频数据帧和所述视频数据帧解码指令。
7.一种服务器,其特征在于,包括:
截获单元,用于当视频播放器向虚拟显示驱动发送视频数据帧和视频数据帧解码指令时,截获所述视频数据帧和所述视频数据帧解码指令,所述视频数据帧是由所述视频播放器对加载的视频文件解复用获得的;
发送单元,用于向客户端发送截获的所述视频数据帧和所述视频数据帧解码指令;
所述截获单元具体为动态链接库,用于当所述视频播放器调用DirectX运行库向所述虚拟显示驱动发送所述视频数据帧和所述视频数据帧解码指令时,所述动态链接库截获所述视频数据帧和所述视频数据帧解码指令。
8.一种视频重定向的系统,其特征在于,包括客户端和权利要求5所述的服务器;其中,所述客户端用于接收所述服务器发送的视频数据帧和视频数据帧解码指令,根据所述视频数据帧解码指令对所述视频数据帧进行解码。
9.一种视频重定向的系统,其特征在于,包括客户端和权利要求6所述的服务器;其中,所述客户端用于接收所述服务器发送的视频数据帧和视频数据帧解码指令,根据所述视频数据帧解码指令对所述视频数据帧进行解码。
10.一种视频重定向的系统,其特征在于,包括客户端和权利要求7所述的服务器;其中,所述客户端用于接收所述服务器发送的视频数据帧和视频数据帧解码指令,根据所述视频数据帧解码指令对所述视频数据帧进行解码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210535654.5A CN103873924B (zh) | 2012-12-12 | 2012-12-12 | 一种视频重定向的方法、装置、系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210535654.5A CN103873924B (zh) | 2012-12-12 | 2012-12-12 | 一种视频重定向的方法、装置、系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103873924A CN103873924A (zh) | 2014-06-18 |
CN103873924B true CN103873924B (zh) | 2017-09-05 |
Family
ID=50911990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210535654.5A Active CN103873924B (zh) | 2012-12-12 | 2012-12-12 | 一种视频重定向的方法、装置、系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103873924B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105227527A (zh) * | 2014-06-26 | 2016-01-06 | 中兴通讯股份有限公司 | 播放多媒体的方法及系统、服务器 |
CN105812922A (zh) * | 2014-12-30 | 2016-07-27 | 中兴通讯股份有限公司 | 多媒体文件数据的处理方法及系统、播放器和客户端 |
CN106034241B (zh) * | 2015-03-19 | 2019-04-26 | 华为技术有限公司 | 一种多媒体重定向的方法、客户端、服务器和系统 |
CN106657206A (zh) * | 2016-06-27 | 2017-05-10 | 南京理工大学 | 虚拟桌面web视频重定向的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033726A (zh) * | 2009-09-30 | 2011-04-27 | 联想(北京)有限公司 | 一种显示方法和服务器 |
CN102158553A (zh) * | 2011-03-31 | 2011-08-17 | 华为技术有限公司 | 用于远程桌面的播放多媒体文件的方法和装置 |
CN102547394A (zh) * | 2011-12-27 | 2012-07-04 | 福建升腾资讯有限公司 | Vdi环境下云接入设备通用的音视频重定向方法 |
CN102695094A (zh) * | 2012-05-15 | 2012-09-26 | 福建升腾资讯有限公司 | Vdi环境下软硬件一体化音视频重定向的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011072142A2 (en) * | 2009-12-09 | 2011-06-16 | Citrix Systems, Inc. | Methods and systems for displaying, on a first machine, data associated with a drive of a second machine, without mapping the drive |
US8463980B2 (en) * | 2010-09-30 | 2013-06-11 | Microsoft Corporation | Shared memory between child and parent partitions |
-
2012
- 2012-12-12 CN CN201210535654.5A patent/CN103873924B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033726A (zh) * | 2009-09-30 | 2011-04-27 | 联想(北京)有限公司 | 一种显示方法和服务器 |
CN102158553A (zh) * | 2011-03-31 | 2011-08-17 | 华为技术有限公司 | 用于远程桌面的播放多媒体文件的方法和装置 |
CN102547394A (zh) * | 2011-12-27 | 2012-07-04 | 福建升腾资讯有限公司 | Vdi环境下云接入设备通用的音视频重定向方法 |
CN102695094A (zh) * | 2012-05-15 | 2012-09-26 | 福建升腾资讯有限公司 | Vdi环境下软硬件一体化音视频重定向的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103873924A (zh) | 2014-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103023872B (zh) | 一种云游戏服务平台 | |
CN103593246B (zh) | 虚拟机和宿主机之间的通信方法、宿主机和虚拟机系统 | |
CN104011700B (zh) | 基于云的游戏系统中的负载平衡 | |
CN106390449A (zh) | 一种基于图形虚拟化技术的云游戏框架 | |
US20040121835A1 (en) | System and method for a gaming console offering multiple services | |
CN106354559A (zh) | 云桌面资源的处理方法及装置 | |
CN103873924B (zh) | 一种视频重定向的方法、装置、系统 | |
US20210081187A1 (en) | Modification of software behavior in run time | |
CN110025957A (zh) | 一种云游戏服务器端架构、客户端和系统 | |
CN104349177B (zh) | 一种在桌面云下转向播放多媒体文件的方法、虚拟机及系统 | |
CN107566346B (zh) | 3d游戏数据的传输方法、装置以及存储介质、电子装置 | |
CN106797398B (zh) | 用于向客户端提供虚拟桌面服务的方法和系统 | |
CN105898506A (zh) | 媒体文件的多屏播放方法和系统 | |
CN103533087A (zh) | 一种云服务平台中间件及云上传方法 | |
CN115065684B (zh) | 数据处理方法、装置、设备以及介质 | |
KR20120034570A (ko) | 온라인 게임 시스템 및 온라인 게임을 위한 데이터 자원 핸들링 방법 | |
CN104040995B (zh) | 多媒体重定向方法以及多媒体服务器以及计算机系统 | |
CN114902686A (zh) | Web浏览器多媒体重定向 | |
CN104067627A (zh) | 一种视频重定向的方法、装置、系统及计算机可读介质 | |
CN107040798A (zh) | 互动展示控制方法、系统、服务器、控制终端及播放终端 | |
CN102855209A (zh) | 凭借客户端计算装置二维或三维表示的虚拟空间单实例 | |
CN114598931A (zh) | 一种多开云游戏的串流方法、系统、装置及介质 | |
US20220233954A1 (en) | System and methods for generating a platform-agnostic game shortcut to launch a game for cloud gaming | |
CN101937362B (zh) | 一种支持多嵌入式设备计算迁移的系统和方法 | |
CN105611394B (zh) | Vdi环境下的视频重定向方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220221 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |