专利名称:Vdi环境下云接入设备通用的音视频重定向方法
VDI环境下云接入设备通用的音视频重定向方法
技术领域:
本发明涉及计算机音视频技术领域,尤其涉及一种VDI环境下云接入设备通用的音视频重定向方法。
背景技术:
VDI,英文全称Virtual Desktop hfrastructure,即虚拟桌面基础架构。它不是给每个用户都配置一台运行Windows XP或Vista的桌面PC,而是通过在数据中心的服务器运行Windows XP,将你的桌面进行虚拟化;用户通过来自客户端设备(客户机或是家用PC) 的客户计算协议与虚拟桌面进行连接,用户访问他们的桌面就像是访问传统的本地安装桌面一样。目前,VDI环境下基于DirectShow(流媒体处理的开发包)框架的Windows平台多媒体重定向技术已经十分成熟,但Directalow框架跨平台能力差、缺乏通用性,使得这项技术在其他平台上进行应用受到限制。因此,需要一种通用的技术使得VDI环境下通过客户端的Linux、ARM等平台的云接入设备远程访问虚拟桌面时,都能进行视频重定向,以实现音视频的流畅播放。根据显示过滤器的时钟反馈,实时调整接收过滤器的输出视频帧时间戳,使视频达到顺畅播放的效果。目前多媒体重定向技术的实现只局限于Windows服务器及Windows客户端,且依赖微软Directaiow框架。但由于DirectSiow框架跨平台能力差,缺乏通用性,原有的实现方法在其他平台如VDI环境的平台无法成功应用,用户通过Linux或ARM平台远程访问虚拟桌面时,依然存在多媒体应用体验差的问题。现有技术中提供了一种“基于IP网络的实时视频传输方法”,其公开号为 CN101783941A,
公开日为2010. 07.21的中国专利,其实现的步骤为发送端和接收端在传输层使用TCP协议,提高数据传输的可靠性;接收端以图像帧为单位存放到接收缓冲区中, 接收缓冲区以环形方式组织,在处理较慢的情况下可用最新的帧覆盖最过时的帧,保持数据的实时性;以directshow/gstreamer等作为多媒体框架,根据显示端的时钟反馈实时调节接收端视频帧的时间戳;该发明使用TCP协议作为传输层协议,有效提高视频传输的可靠性,解决网络传输的丢包和乱序问题,避免解码器出现不能正常解码的现象;以帧为单位将图像信息存放在环形缓冲区中,有效解决了延时和抖动问题;在接收端使用多媒体框架, 根据显示过滤器的时钟反馈,实时调整接收过滤器的输出视频帧时间戳,使视频达到顺畅播放的效果。但是该发明的技术方案不能使在VDI环境下通过LinUX、ARM等平台的云接入设备远程访问虚拟桌面时,实现音视频的流畅播放。
发明内容本发明要解决的技术问题,在于提供一种VDI环境下云接入设备通用的音视频重定向方法,解决了通过在VDI环境的此类平台的云接入设备远程访问虚拟桌面时存在的多媒体应用体验差的问题。本发明是这样实现的一种VDI环境下云接入设备通用的音视频重定向方法,包括如下步骤
步骤I、在接入设备的客户端建立通信模块、虚拟播放器以及GStreamer插件模块;
所述通信模块负责与服务器进行通讯,实现多媒体流数据的交互和获取控制命令,并接收所述虚拟播放器回传的客户端的GStreamer多媒体应用框架的播放状态信息后转发给服务器;所述控制命令包括播放开始、播放快进、播放快退、播放停止的命令;所述虚拟播放器负责从所述通信模块接收控制命令及多媒体流数据,对GStreamer插件模块的控制,且通过虚拟播放器的格式转换器将Windows能识别的媒体格式转换为客户端的 GStreamer多媒体应用框架能识别的格式,实现客户端的视频播放窗口在虚拟桌面进行同步展现,并负责将GStreamer插件模块回传的客户端的GStreamer多媒体应用框架的播放状态信息转发给通信模块;所述GStreamer插件模块是GStreamer多媒体应用框架的插件,负责从所述虚拟播放器接收格式转换后的多媒体流数据及控制命令,并转发给客户端的GStreamer,由GStreamer自动构建多媒体处理模块,实现多媒体流数据的成功播放,且负责将GStreamer的播放状态信息回传给所述虚拟播放器;
步骤2、用户通过客户端远程登录VDI环境下的虚拟桌面,并进行视频播放操作时,服务器端通过TCP传输协议将控制命令及多媒体流数据传输给客户端的通信模块;
步骤3、所述通信模块将所述控制命令及多媒体流数据转发给所述虚拟播放器;
步骤4、所述虚拟播放器通过控制命令对所述GStreamer插件模块进行加载,并将多媒体流数据经虚拟播放器的格式转换器进行格式转换后并传送给所述GStreamer插件模块,并实现客户端的视频播放窗口在虚拟桌面进行同步展现;
步骤5、所述GStreamer插件模块被加载后,接收格式转换后的多媒体流数据并转发给客户端的GStreamer,并由GStreamer自动创建媒体处理模块,开始进行音视频的播放;
步骤6、将客户端的GStreamer的播放状态信息回传给所述虚拟播放器,所述虚拟播放器并将播放状态信息反馈给客户端的用户。
本发明具有如下优点本发明在接入设备的客户端建立通信模块、虚拟播放器以及GStreamer插件模块;通过这个三个模块的协作,摆脱了传统的DirectShow框架的局限性,形成了一种通用的音视频重定向方法,使得用户通过客户端的Linux或ARM等平台的云接入设备远程访问VDI环境下的虚拟桌面进行多媒体操作时,可流畅的进行音视频播放, 并提升了用户体验。并且一般Linux或ARM平台下通过GStreamer播放出来的视频窗口, 正常情况下会以一窗口进行显示,本发明能让此视频窗口能够在VDI环境下的虚拟桌面的正确位置进行显示,并能实时响应用户的操作。
图I为本发明方法中各模块进行通讯的结构框图。
图2为本发明方法流程示意图。
具体实施方式
请参阅图I和图2所示,本发明的VDI环境下云接入设备通用的音视频重定向方法,包括如下步骤步骤1、在接入设备的客户端建立通信模块、虚拟播放器以及GStreamer插件模块(如图1所示),其通信模块通过通讯协议与服务器端进行通讯,通信模块将从服务器端获得的控制命令及多媒体流数据传给虚拟播放器,再由播放器加载GStreamer插件模块, GStreamer插件模块触发GStreamer多媒体应用框架进行自动构建多媒体处理模块,实现多媒体流数据的成功播放;所述通信模块负责与服务器进行通讯,实现多媒体流数据的交互和获取控制命令,并接收所述虚拟播放器回传的客户端的GStreamer多媒体应用框架的播放状态信息后转发给服务器;所述控制命令包括播放开始、播放快进、播放快退、播放停止的命令;所述虚拟播放器负责从所述通信模块接收控制命令及多媒体流数据,对GStreamer插件模块的控制,且通过虚拟播放器的格式转换器(所述格式转换器为将Windows下的媒体格式转换为GStreamer多媒体应用框架能识别的格式的转换器)将Windows能识别的媒体格式转换为客户端的GStreamer多媒体应用框架能识别的格式,实现客户端的视频播放窗口在虚拟桌面进行同步展现,并负责将GStreamer插件模块回传的客户端的GStreamer多媒体应用框架的播放状态信息转发给通信模块;所述GStreamer插件模块是=GMreamer多媒体应用框架的插件,负责从所述虚拟播放器接收格式转换后的多媒体流数据及控制命令,并转发给客户端的GStreamer多媒体应用框架,由GMreamer多媒体应用框架自动构建多媒体处理模块,实现多媒体流数据的成功播放,且负责将GStreamer多媒体应用框架的播放状态信息(播放状态信息如开始正常播放信息、、无法播放信息、Gstreamer通知服务器整个流播放完毕的通知消息以及一帧数据播放完毕后的确认信息等)回传给所述虚拟播放器;步骤2、用户通过客户端远程登录VDI环境下的虚拟桌面,并进行视频播放操作时,服务器端通过TCP传输协议(该协议保证媒体流数据的稳定传输)将控制命令及多媒体流数据传输给客户端的通信模块;步骤3、所述通信模块将所述控制命令及多媒体流数据转发给所述虚拟播放器;步骤4、所述虚拟播放器通过控制命令对所述GStreamer插件模块进行加载,并将多媒体流数据经虚拟播放器的格式转换器进行格式转换后并传送给所述GStreamer插件模块,并实现客户端的视频播放窗口在虚拟桌面进行同步展现;步骤5、所述GStreamer插件模块被加载后,接收格式转换后的多媒体流数据并转发给客户端的GStreamer多媒体应用框架,并由GMreamer多媒体应用框架自动创建媒体处理模块,开始进行音视频的播放;步骤6、将客户端的GStreamer多媒体应用框架的播放状态信息(播放状态信息 如开始正常播放信息、、无法播放信息、Gstreamer通知服务器整个流播放完毕的通知消息以及一帧数据播放完毕后的确认信息等)回传给所述虚拟播放器,所述虚拟播放器并将播放状态信息反馈给客户端的用户。其中所述步骤5具体为先在所述GStreamer插件模块中创建I^ad,并加入Pipe 管道通信机制与所述虚拟播放器进行通信,所述Pad为将GStreamer插件模块收到的格式转换后的多媒体流数据传输给GStreamer多媒体应用框架;当所述虚拟播放器开始发送多媒体流数据到所述GStreamer插件模块时,其首先向Pipe管道中写入作为唯一标识的字符串,GMreamer插件模块读取并检测所述写入的字符串;如果所述写入的字符串未改变,则告知客户端的GStreamer多媒体应用框架的插件类型(所述插件类型为GStreamer多媒体应用框架的插件在GStreamer多媒体应用框架中注册时,会生成对应功能的插件类型)匹配成功,GStreamer插件模块被成功加载;否则,GStreamer多媒体应用框架的插件类型匹配失败,GStreamer插件模块不能被成功加载,不进行操作;当此GStreamer插件模块被加载后,将格式转换后的多媒体流数据送进Pad(Pad为GStreamer多媒体应用框架中的专业术语,中文为“衬垫”的意思,其用来进行流数据的传输)中;同时,通过所述控制命令来控制客户端的GStreamer的操作;所述GStreamer在接收到控制命令及格式转换后的多媒体流数据后,将自动创建流媒体处理模块,开始进行音视频的播放。
这里要说明的是一般Linux或ARM平台下通过GStreamer播放出来的视频窗口,正常情况下会以一窗口进行显示,本发明能让此视频窗口能够在VDI环境下的虚拟桌面的正确位置进行显示,并能实时响应用户的操作。其客户端的视频播放窗口在虚拟桌面进行同步展现的具体方式为首先,在服务器端创建一第一窗口,将第一窗口设置为服务器端的视频播放器子窗口,使第一窗口的状态受服务器端的视频播放器控制;同时,在服务器端将实时监控第一窗口的状态,所述状态包括大小及窗口可见区域;其次,在客户端创建一第二窗口,利用客户端的GStreamer多媒体应用框架的机制,使用于视频显示的元件 ximagesink 或者 xvimagesink(所述兀件 ximagesink 或者 xvimagesink 为 GStreamer 多媒体应用框架中自带的插件)将视频画面显示在第二窗口之上;最后,将第二窗口设置为 VDI环境下的虚拟桌面窗口的子窗口,当用户在虚拟桌面对第二窗口进行移动或者全屏操作时,将所述实时监控到的服务器端第一窗口的状态信息发送到客户端,客户端根据状态信息,相应调整客户端第二窗口的位置及大小,所述第二窗口即为所述客户端视频播放窗口,从而实现客户端视频播放窗口在虚拟桌面进行同步展现。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
权利要求
1.一种VDI环境下云接入设备通用的音视频重定向方法,其特征在于,包括如下步骤 步骤1、在接入设备的客户端建立通信模块、虚拟播放器以及GStreamer插件模块; 所述通信模块负责与服务器进行通讯,实现多媒体流数据的交互和获取控制命令,并接收所述虚拟播放器回传的客户端的GStreamer多媒体应用框架的播放状态信息后转发给服务器;所述控制命令包括播放开始、播放快进、播放快退、播放停止的命令;所述虚拟播放器负责从所述通信模块接收控制命令及多媒体流数据,对GStreamer插件模块的控制,且通过虚拟播放器的格式转换器将Windows能识别的媒体格式转换为客户端的 GStreamer多媒体应用框架能识别的格式,实现客户端的视频播放窗口在虚拟桌面进行同步展现,并负责将GStreamer插件模块回传的客户端的GStreamer多媒体应用框架的播放状态信息转发给通信模块;所述GStreamer插件模块是=GMreamer多媒体应用框架的插件,负责从所述虚拟播放器接收格式转换后的多媒体流数据及控制命令,并转发给客户端的GStreamer,由GMreamer自动构建多媒体处理模块,实现多媒体流数据的成功播放,且负责将GStreamer的播放状态信息回传给所述虚拟播放器;步骤2、用户通过客户端远程登录VDI环境下的虚拟桌面,并进行视频播放操作时,月艮务器端通过TCP传输协议将控制命令及多媒体流数据传输给客户端的通信模块; 步骤3、所述通信模块将所述控制命令及多媒体流数据转发给所述虚拟播放器; 步骤4、所述虚拟播放器通过控制命令对所述GStreamer插件模块进行加载,并将多媒体流数据经虚拟播放器的格式转换器进行格式转换后并传送给所述GStreamer插件模块, 并实现客户端的视频播放窗口在虚拟桌面进行同步展现;步骤5、所述GStreamer插件模块被加载后,接收格式转换后的多媒体流数据并转发给客户端的GStreamer,并由GMreamer自动创建媒体处理模块,开始进行音视频的播放。
2.根据权利要求1所述的VDI环境下云接入设备通用的音视频重定向方法,其特征在于,在步骤5之后还进一步包括步骤6、将客户端的GStreamer的播放状态信息回传给所述虚拟播放器,所述虚拟播放器并将播放状态信息反馈给客户端的用户。
3.根据权利要求1所述的VDI环境下云接入设备通用的音视频重定向方法,其特征在于所述步骤5具体为先在所述GStreamer插件模块中创建I^ad,并加入Pipe管道通信机制与所述虚拟播放器进行通信,所述Pad为将GStreamer插件模块收到的格式转换后的多媒体流数据传输给GStreamer多媒体应用框架;当所述虚拟播放器开始发送多媒体流数据到所述GStreamer插件模块时,其首先向Pipe管道中写入作为唯一标识的字符串, GMreamer插件模块读取并检测所述写入的字符串;如果所述写入的字符串未改变,则告知客户端的GStreamer多媒体应用框架的插件类型匹配成功,GStreamer插件模块被成功加载;否则,GStreamer多媒体应用框架的插件类型匹配失败,GStreamer插件模块不能被成功加载,不进行操作;当此GStreamer插件模块被加载后,将格式转换后的多媒体流数据送进Pad中;同时,通过所述控制命令来控制客户端的GStreamer的操作;所述GStreamer 在接收到控制命令及格式转换后的多媒体流数据后,将自动创建流媒体处理模块,开始进行音视频的播放。
4.根据权利要求1所述的VDI环境下云接入设备通用的音视频重定向方法,其特征在于所述步骤4中实现客户端的视频播放窗口在虚拟桌面进行同步展现具体为首先,在服务器端创建一第一窗口,将第一窗口设置为服务器端的视频播放器子窗口,使第一窗口的状态受服务器端的视频播放器控制;同时,在服务器端将实时监控第一窗口的状态,所述状态包括大小及窗口可见区域;其次,在客户端创建一第二窗口,利用客户端的GStreamer多媒体应用框架的机制,使用于视频显示的元件ximagesink或者xvimagesink将视频画面显示在第二窗口之上;最后,将第二窗口设置为VDI环境下的虚拟桌面窗口的子窗口,当用户在虚拟桌面对第二窗口进行移动或者全屏操作时,将所述实时监控到的服务器端第一窗口的状态信息发送到客户端,客户端根据状态信息,相应调整客户端第二窗口的位置及大小, 所述第二窗口即为所述客户端视频播放窗口,从而实现客户端视频播放窗口在虚拟桌面进行同步展现。
全文摘要
本发明提供一种VDI环境下云接入设备通用的音视频重定向方法,包括1、在客户端建立通信模块、虚拟播放器以及GStreamer插件模块;2、用户通过客户端远程登录VDI环境下的虚拟桌面,进行视频播放操作,服务器端通过通讯协议将控制命令及多媒体流数据传输给通信模块;3、通信模块将控制命令及多媒体流数据转发给虚拟播放器;4、虚拟播放器对GStreamer插件模块进行加载5、GStreamer插件模块被加载后,接收的数据并转发给客户端的GStreamer,并由GStreamer自动创建媒体处理模块,开始音视频的播放。本发明实现了在VDI环境下云接入设备远程访问虚拟桌面时,能实现音视频的流畅播放。
文档编号G06F9/44GK102547394SQ201110446579
公开日2012年7月4日 申请日期2011年12月27日 优先权日2011年12月27日
发明者张辉 申请人:福建升腾资讯有限公司