一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于媒体应用的多媒体重定向的制作方法

2022-08-13 15:51:31 来源:中国专利 TAG:

用于媒体应用的多媒体重定向


背景技术:

1.在虚拟环境中,最终用户可以使用客户端设备连接到在服务器硬件上运行的虚拟机,这可以为最终用户提供更多的计算能力、应用兼容性、安全性和法规遵从性、以及减少最终用户的总成本。通常,这些最终用户可能会通过媒体播放器应用来消费媒体,这可能会增加服务器硬件上的工作量并且增加相关成本。


技术实现要素:

2.提供了一种计算机系统,该计算机系统可以包括被配置为执行主机虚拟机的至少一个处理器,该主机虚拟机被配置为托管与至少一个客户端计算机设备的会话。主机虚拟机可以包括具有用于绘制媒体内容的多媒体框架的操作系统。至少一个处理器还可以被配置为执行被配置为从媒体源访问媒体内容的媒体应用,使用多媒体框架处理来自媒体应用的经编码的媒体内容,并且执行多媒体重定向模块,该多媒体重定向模块被配置为拦截经编码的媒体内容以不被多媒体框架的解码模块处理。多媒体重定向模块可以被配置为将经编码的媒体内容重定向到至少一个客户端计算机设备。
3.提供本发明内容是为了以简化形式介绍概念的选择,这些概念将在下面的具体实施方式中进一步描述。本发明内容并非旨在标识所要求保护的主题的关键特征或基本特征,也不旨在用于限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任何部分中指出的任何或所有缺点的实现。
附图说明
4.图1是用于执行本描述的多媒体重定向的示例计算机系统的示意图。
5.图2是图1的计算机系统的示例服务器系统的示意图。
6.图3是实现针对图1的计算机系统的多媒体重定向模块的操作系统的媒体应用和多媒体框架的示意图。
7.图4是由图1的计算机系统实现的用于执行多媒体重定向的方法的流程图。
8.图5是用于实现针对图1的计算机系统的多媒体重定向的媒体应用和多媒体框架的软件架构的示意图。
9.图6是用于与由图1的计算机系统实现的多媒体重定向模块进行通信的远程桌面客户端的软件架构的示意图。
10.图7是图1的计算机系统可以在其中实现的示例计算环境的示意图。
具体实施方式
11.云平台服务可以为最终用户提供虚拟化桌面环境,虚拟化桌面环境可以利用客户端计算机设备连接到在云平台的服务器设备上运行的虚拟机。通常,云平台的计算机硬件和网络能力比最终用户的客户端计算机设备更强大。因此,通过在虚拟化桌面环境中托管这些最终用户,云平台可以为这些用户提供更多的计算能力、以及其他潜在好处,诸如改进
的应用兼容性、安全/法规遵从性、以及相关计算成本的总体降低。
12.在一些示例中,这些云平台服务可以为具有多个最终用户和客户端设备的企业提供虚拟桌面基础设施。这些企业的用户可以消费媒体(例如视频和/或音频媒体),该媒体被本地存储在针对该企业的云平台上或由远程媒体源存储并且被流式传输到在云平台上运行的虚拟化桌面环境。通常,由媒体源提供的媒体内容在托管最终用户的虚拟机上被解码,然后用于呈现该媒体内容的虚拟化桌面的显示帧被重新编码,并且通过远程桌面协议流式传输到用户的客户端计算机设备。客户端计算机设备然后可以解码这些显示帧,并且经由客户端计算机设备的显示器将它们呈现给用户。
13.在虚拟机上执行的解码和后续编码过程可能会消耗服务器硬件的大量计算资源。在一个特定示例中,用于视频流的视频绘制过程可能潜在地消耗运行虚拟机的服务器设备的中央处理单元(cpu)资源的20%-40%。在其中多个用户在vm上共享操作系统(os)实例的多会话虚拟化桌面环境部署中,这些问题可能会进一步恶化。例如,如果一个以上的用户尝试通过共享主机vm来流式传输视频内容,则该vm的所有cpu资源可能会被相关解码/编码/绘制过程消耗,从而可能会降低由该vm托管的所有用户的用户体验。
14.为了解决上面讨论的问题,图1示出了用于虚拟化桌面环境的示例计算机系统10,计算机系统10执行多媒体重定向以减少运行虚拟化桌面环境的服务器硬件上的计算工作量,如下面将更详细地讨论的。如图1所示,计算机系统10包括一个或多个客户端计算机设备12、服务器系统14和一个或多个媒体源16。一个或多个客户端计算机设备12的最终用户可以连接到在服务器系统14上运行的虚拟机。使用在vm的主机操作系统内执行的应用,例如播放媒体内容的媒体应用、或网络浏览器应用,最终用户可以与由媒体源16存储的媒体进行交互。
15.在一个示例中,媒体源16对于服务器系统14可以是本地的,并且可以被包括在服务器系统14中。在另一示例中,媒体源16对于客户端计算机设备12和服务器系统14都可以是远程的。例如,服务器系统14可以被配置为通过诸如广域网(wan)等通信网络与远程媒体源通信。作为具体示例,最终用户可以与在主机vm内执行的媒体应用进行交互,以触发用于查看存储在媒体源16上的媒体的媒体体验。媒体应用可以例如采用媒体流应用的形式,这促进从媒体源16中检索的媒体内容的流式传输和显示。通常,流视频和/或音频作为经编码的媒体18被发送给服务器系统14,并且由执行正在播放流视频和/或音频的媒体应用的主机vm处理。
16.如上所述,典型的虚拟化环境实现将执行媒体绘制过程,包括解码经编码的媒体18,以及经由虚拟化桌面环境呈现媒体内容,为虚拟化桌面环境编码显示/音频帧,然后向客户端计算机设备12发送经编码的显示/音频帧以呈现给最终用户。为了减少由解码/编码过程引起的服务器系统14的硬件上的计算负担,服务器系统14可以实现多媒体重定向以将从媒体源16接收的经编码的媒体18传递到客户端计算机设备12,而无需在服务器系统14上执行编码或解码过程。
17.图2示出了服务器系统14的示例。服务器系统14可以包括硬件平面20、虚拟机平面22、管理程序平面24和网络基础设施26,它们共同被配置为对云平台进行操作。硬件平面20包括节点28集合(每个节点28在图2中由符号“n”表示),节点28可以包括处理器、图形处理单元(gpu)、易失性存储器、和被配置为运行主机服务器实例的其他计算机组件。由硬件平
面20的节点28执行的主机服务器实例被配置为与管理程序平面24的一个或多个管理程序通信。管理程序平面24的一个或多个管理程序可以创建、处理和监测虚拟机平面22的多个虚拟机30(每个虚拟机30在图2中由符号“vm”表示)。通过管理程序平面24,虚拟机平面22的每个虚拟机30可以由硬件平面20的一个或多个节点28的硬件组件托管和运行。以这种方式,虚拟机平面22的多个虚拟机30可以共享由管理程序平面24管理的虚拟化硬件资源。每个虚拟机30提供诸如网络浏览器应用、媒体播放器应用和其他类型的软件等软件可以在其中执行的虚拟化桌面环境。
18.在一个示例中,计算机系统14对应于经由标准网络基础设施通信地耦合多个节点28的数据中心环境。例如,网络基础设施20可以包括典型的网络基础设施,诸如包括架顶式(tor)网络交换机的服务器机架。计算机系统14可以包括多个节点集群,每个节点集群具有相关联的tor网络交换机。网络基础设施20还可以包括将tor网络交换机连接在一起的更高级别的交换基础设施32(l1)和(l2)。更高级别的交换基础设施32可以采用任何合适的网络架构的形式,并且可以由(多个)任何合适的路由协议驱动。在所示示例中,更高级别的基础设施32包括聚合交换机l1和核心交换机l2的集合。然而,应当理解,更高级别的交换基础设施可以包括任何合适数目的级别的交换机。
19.虚拟机平面22的虚拟机30提供虚拟计算环境,在该虚拟计算环境中,服务器系统14的用户可以访问和运行应用,例如网络浏览器、媒体应用等。如下面将更详细地讨论的,虚拟机平面22的这些虚拟机30可以被配置为实现多媒体重定向,以减少由通常为流媒体而执行的解码和编码过程引起的强加在硬件平面20的节点上的计算工作量。
20.另外,应当理解,服务器系统14不限于图2所示的数据中心/云平台示例。在其他示例中,服务器系统14可以采取被配置为运行虚拟桌面环境的一个或多个计算机设备的形式。使用客户端计算机设备12,相关用户可以连接到由一个或多个计算机设备运行的虚拟化桌面环境,以访问在虚拟化桌面环境内运行的软件,计算机设备可以被配置为实现本文中描述的多媒体重定向功能和过程。
21.图3示出了被配置为执行多媒体重定向技术以解决上述问题的示例主机虚拟机34。主机虚拟机34可以采用参考图2描述的云平台的虚拟机平面22的虚拟机30中的一个虚拟机的形式。然而,应当理解,主机虚拟机34也可以以服务器系统14的非云平台的形式实现。
22.主机虚拟机34可以由服务器系统14的至少一个处理器执行。主机虚拟机34可以被配置为托管与至少一个客户端计算机设备12的会话,并且可以托管在主机虚拟机34的操作系统内运行的应用。主机虚拟机34可以包括具有用于绘制媒体内容的多媒体框架62的操作系统60。多媒体框架62可以为操作系统60内的媒体处理提供运行时环境,并且包括可以由在主机虚拟机34的操作系统60内执行的媒体应用36使用的应用程序编程接口(api)。
23.如图所示,媒体应用36可以被配置为从媒体源16访问媒体内容。使用媒体应用36的图形用户界面(gui),最终用户可以触发对由媒体源16存储的媒体内容的媒体体验。在一个示例中,媒体源16对于运行主机虚拟机34的服务器系统14可以是本地的。在另一示例中,媒体源16对于服务器系统14可以是远程的,并且可以被配置为通过wan向服务器系统14发送经编码的媒体内容18。
24.在媒体体验在媒体应用36中被触发之后,主机虚拟机34可以被配置为针对所触发
的体验从媒体源16接收经编码的媒体内容18。经编码的媒体内容18可以使用任何合适的算法进行编码。在一个示例中,经编码的媒体内容18以包括以下一项或多项的媒体容器格式38而被接收:视频流40、音频流42和文本流44。作为特定示例,媒体容器格式38可以是mp4格式、wav格式、avi格式或其他类型的媒体容器格式38。
25.由主机vm 34接收的经编码的媒体内容18可以在媒体应用36处被接收。媒体应用36可以包括对多媒体框架62进行api调用以对经编码的媒体内容18执行媒体处理的程序逻辑。经编码的媒体内容18然后被传递到多媒体框架62,并且由主机虚拟机34的操作系统60的多媒体框架62处理。多媒体框架62可以被配置为经编码的媒体内容18的媒体绘制来提供绘制管线和基础设施。多媒体框架62可以基于经编码的媒体内容18的媒体容器格式38的类型来加载多媒体框架源46。多媒体框架源46可以被配置为将媒体容器格式38的经编码的媒体内容18解复用(demux)成独立的视频、音频和文本流。通常,如图3所示,独立的经编码的音频流42和经编码的视频流40将由多媒体框架62的音频和视频绘制管线来处理。例如,经编码的音频流42和经编码的视频流40可以分别由多媒体框架62的媒体变换模块处理,诸如解压缩音频和视频流的解码器48。然后经解压缩后的音频和视频流可以被分别传递到流音频绘制器50和流视频绘制器52以准备视频和音频内容以供呈现。如上所述,在主机vm 34上执行的这些解码和绘制过程将消耗运行主机vm 34的服务器设备的硬件资源,这可能潜在地降低被托管在主机虚拟机34的多会话操作系统中的其他用户的用户体验。
26.为了解决这些问题,主机虚拟机34可以被配置为实现多媒体重定向模块54,该多媒体重定向模块54被配置为将包括经编码的音频流42和经编码的视频流40的经编码的媒体内容18重定向到客户端计算机设备12。例如,不是用媒体变换模块和绘制器构建完整的多媒体框架拓扑,主机虚拟机34可以被配置为加载多媒体重定向模块54,该多媒体重定向模块54充当媒体接收器(sink),并且从多媒体框架源46直接向多媒体重定向模块54进行绘制。图4是由运行主机虚拟机34的服务器系统14实现的用于执行多媒体重定向的方法400的流程图。方法400可以使用上述系统或者使用其他合适的硬件和软件元件来执行。
27.在402,方法400可以包括执行被配置为托管与至少一个客户端计算机设备的会话的主机虚拟机。主机虚拟机34可以由服务器系统14的至少一个处理器执行,服务器系统14可以例如采用图2所示的云平台数据中心的形式。主机虚拟机34可以包括具有用于绘制媒体内容的多媒体框架的操作系统。在一个示例中,操作系统可以是被配置为并发地为多个客户端计算机设备12托管多个会话的多会话操作系统。多个会话可以托管在同一多会话操作系统实例中。每个会话可以实现本文中描述的用于多媒体重定向的技术和过程。
28.在404,方法400可以包括执行被配置为从媒体源访问媒体内容的媒体应用。媒体应用36可以在主机虚拟机34内运行。在多会话操作系统示例中,多个会话中的每个会话可以具有在多会话操作系统中运行的关联媒体应用36实例。在一个示例中,媒体源16可以采取第三方媒体服务的形式,第三方媒体服务流式传输诸如视频和/或音频等媒体。媒体应用36可以被配置为基于触发媒体体验的用户输入来访问媒体源16。在另一示例中,媒体源16可以采用服务器系统14的存储设备的形式,该存储设备存储与媒体应用36相关联的媒体内容。
29.在406,方法400可以包括使用多媒体框架处理来自媒体应用的经编码的媒体内容。在远程媒体源示例中,经编码的媒体内容18可以由主机虚拟机34通过wan接收。如图3所
示,经编码的媒体内容18可以包括以下一项或多项:经编码的视频流40、经编码的音频流52和经编码的文本流44。经编码的媒体内容流可以以媒体容器格式38而被捆绑,例如,例如mp4格式、wav格式等。
30.在408,方法400可以包括将媒体容器格式的经编码的媒体内容解复用成独立的经编码的媒体内容流。例如,操作系统60的多媒体框架62可以包括媒体变换模块,该媒体变换模块包括用于解包媒体容器格式38和将经编码的媒体内容18解复用成独立流(例如,经编码的视频流40、和经编码的音频流42、和/或经编码的文本流44)的过程。
31.在410,方法400可以包括执行多媒体重定向模块,该多媒体重定向模块被配置为拦截经编码的媒体内容以不被多媒体框架的解码模块处理。多媒体重定向模块54可以包括媒体接收器,并且操作系统60的多媒体框架62可以被配置为从源46直接绘制到多媒体重定向模块54的媒体接收器,而不是构建完整的绘制拓扑。多媒体重定向模块54可以从多媒体框架62接收经编码的内容,并且将该经编码的内容重定向到该会话的相关客户端计算机设备12。以这种方式,经编码的媒体内容18不被解码器48解码或者不被主机虚拟机34上的绘制器50和绘制器52处理。
32.被重定向到客户端计算机设备12的经编码的媒体内容18可以被缓冲并且通过wan流式传输到客户端计算机设备12。在412,方法400可以包括缓冲独立的经编码的媒体内容流。诸如经编码的音频流42和经编码的视频流40等独立的经编码的媒体内容流可以临时存储在主机虚拟机34上的缓冲器中。
33.在414,方法400可以包括响应于从至少一个客户端计算机设备接收到对缓冲的独立的编码的媒体内容流的媒体样本的请求,向至少一个客户端计算机设备发送媒体样本。客户端计算机设备12可以为每个经编码的媒体内容18的流独立地请求新媒体样本。例如,客户端计算机设备12可以独立于为经编码的音频流40请求媒体样本请求而为经编码的视频流40请求媒体样本。以这种方式,客户端计算机设备12可以以独立速率为每个独立的经编码的媒体内容流(例如,经编码的音频流、经编码的视频流等)请求媒体样本,并且主机虚拟机34可以以所请求的速率为每个独立的经编码的媒体内容流发送这些媒体样本。通常,视频内容的大小将大于音频内容,并且因此可能需要更高速率的视频样本被发送到客户端计算机设备12。
34.图5示出了用于实现多媒体重定向模块54和方法400中描述的步骤的示例服务器端软件架构。在所示示例中,服务器系统14中包括的服务器设备的至少一个处理器56可以被配置为执行主机虚拟机34,该主机虚拟机34被配置为托管与至少一个客户端计算机设备12的会话58。在所示示例中,主机虚拟机34实现多会话操作系统60,该多会话操作系统60被配置为并发地为多个客户端计算机设备12托管多个会话58。每个会话58可以与不同客户端计算机设备12相关联,并且可以在主机虚拟机34上运行应用程序的单独实例。例如,每个会话58可以执行被配置为从媒体源16访问媒体内容的媒体应用36的单独实例。
35.在多会话操作系统60内运行的每个会话58可以进一步被配置为以媒体容器格式38从媒体源16接收经编码的媒体内容18,如上面参考图3和图4所述。在一个示例中,经编码的媒体内容18可以采取存储在与主机虚拟机34相关联的存储设备上的媒体文件的形式。在这个示例中,媒体源16可以是在服务器系统14本地的相关联的存储设备。然而,应当理解,经编码的媒体内容18可以采用其他合适的形式,例如动态流媒体内容、http渐进式流媒体
内容、或从远程媒体源接收的其他形式的流媒体内容。另外,经编码的媒体内容18可以以包括以下一项或多项的媒体容器格式而被接收:视频流、音频流和文本流。视频流、音频流和文本流可以以媒体容器格式而被混合。应当理解,媒体容器格式可以采用mp4格式、wav格式、或任何其他合适类型的媒体容器格式的形式。
36.媒体应用36的执行可以加速在多会话操作系统60内运行的多个关联过程。作为特定示例,可以运行用于与客户端计算机设备58的会话58的媒体应用过程64、和多媒体框架过程66。在一个示例中,本文中描述的多媒体框架过程66的功能可以被包括在多会话操作系统60的过程中。在另一示例中,多媒体框架过程66可以在单独的处理线程中运行。
37.媒体应用36的应用逻辑68可以在媒体应用过程64内运行。应用逻辑68可以包括用于基于媒体应用36的用户触发媒体观看经验来检索经编码的媒体内容18的程序逻辑。应用逻辑68还可以包括用于对多媒体框架过程66进行api调用70以绘制经编码的媒体内容18的程序逻辑。由媒体应用过程64检索的经编码的媒体内容18和/或用于经编码的媒体内容18的唯一资源标识符也可以被传递给多媒体框架过程66。
38.由处理器56执行的多媒体框架过程66可以被配置为处理从媒体应用过程64接收的经编码的媒体内容18。在一个示例中,多媒体过程66可以被配置为标识经编码的媒体内容18的格式类型,诸如媒体容器格式38的类型,然后选择对应的多媒体框架源72。除了其他功能之外,多媒体框架源72可以被配置为解包经编码的媒体内容18并且将经编码的媒体内容18解复用成独立的经编码的媒体内容流74。解复用后的独立的经编码的媒体内容流74可以例如包括经编码的视频流和经编码的音频流和/或经编码的文本流。
39.如果当前没有针对所接收的经编码的媒体内容18启用多媒体重定向(mmr),则多媒体框架过程66可以被配置为加载用于解复用后的视频、音频和/或文本流的绘制管线。例如,多媒体框架过程66可以被配置为加载用于处理经编码的媒体内容的多个媒体变换模块。例如,这些媒体变换模块可以包括图3所示的解码器48、以及执行其他类型数据变换的其他模块。多媒体框架过程66还可以加载流音频绘制器50、流视频绘制器52等。多媒体框架过程66然后可以使用所加载的绘制管线来处理解复用后的独立的经编码的媒体内容流74。在一些示例中,绘制过程可以包括多会话操作系统60的其他较低级别的过程。然后,针对绘制的视频内容的显示帧和针对绘制的音频内容的音频帧可以被编码并且通过wan流式传输给客户端计算机设备12。
40.另一方面,当mmr被启用时,多媒体框架过程66可以被配置为加载多媒体重定向模块54,该加载多媒体重定向模块54被配置为拦截解复用后的媒体内容流74并且执行本文中描述的功能和过程。以这种方式,解复用后的媒体内容流74不被解码并且不在主机虚拟机34上绘制,以提供减少强加在运行主机虚拟机34的硬件上的计算工作量的潜在好处。
41.在一个示例中,多媒体重定向模块54可以采取媒体接收器的形式,并且多媒体框架源72可以被配置为在mmr被启用时直接绘制给多媒体重定向模块54。不是如上所述使用媒体变换模块处理解复用后的经编码的媒体内容流74,而是多媒体重定向模块54可以被配置为将解复用后的经编码的媒体内容流74重定向到针对该会话58的对应客户端计算机设备12。为了重定向媒体内容,多媒体重定向模块54可以被配置为处理解复用后的独立的经编码的媒体数据流到在客户端计算机设备12上实现的动态虚拟通道(dvc)插件的传输。重定向模块54还可以处理序列化消息与客户端计算机设备12上的dvc插件的的通信。在一个
示例中,与经编码的媒体内容18的播放和绘制相关联的命令可以使用协议来序列化,诸如扩展的protocol buffers,它是一种用于序列化和反序列化结构化数据的语言和平台中立机制。然而,应当理解,也可以实现其他序列化协议。多媒体重定向模块54可以被配置为经由序列化消息与客户端计算机设备12发送和接收这些命令。
42.另外,当将经编码的媒体内容18重定向到客户端计算机设备12时,mmr模块54可以被配置为缓冲独立的经编码的媒体内容流74,并且响应于从至少一个客户端计算机设备12接收到对缓冲的独立的经编码的媒体内容流74的媒体样本的请求,而向至少一个客户端计算机设备12发送媒体样本。例如,客户端计算机设备12可以向mmr模块54发送序列化消息,该序列化消息包括对经编码的媒体内容流中的至少一个的媒体样本的请求76。mmr模块54然后可以通过动态虚拟通道向客户端计算机设备12发送存储在缓冲器中的、所请求的经编码的媒体样本78。在一个示例中,客户端计算机设备12可以针对每个独立的经编码的媒体内容流74发送单独的请求76。例如,客户端计算机设备12可以以比针对经编码的音频内容的媒体样本更高的速率来为经编码的视频内容流请求媒体样本。因此,mmr模块54可以被配置为基于对从至少一个客户端计算机设备12接收的媒体样本的请求76,来以独立速率为独立的经编码的媒体内容流74中的每个发送媒体样本78。
43.如上所述,当mmr针对经编码的媒体内容18被启用时,可以采取多媒体框架62的媒体接收器形式的mmr模块54被加载和执行。在一个示例中,至少一个处理器56可以被配置为基于一个或多个监测参数80来确定是否要启用mmr、以及是否要执行mmr模块54以拦截经编码的媒体内容18或允许经编码的媒体内容18由解码模块48和多媒体框架62的其他媒体变换模块处理。在一个示例中,主机虚拟机34可以被配置为监测服务器系统14与至少一个客户端计算机设备12之间的网络参数,并且基于被监测的网络参数来确定是否要启用mmr。
44.作为另一示例,主机虚拟机34可以被配置为监测运行主机虚拟机34的至少一个处理器56的当前处理负载,并且基于当前处理负载确定是否要启用mmr。作为具体示例,如果至少一个处理器56上的当前处理负载超过阈值水平,则主机虚拟机34可以被配置为启用mmr,并且加载mmr模块54及其相关联的媒体堆栈以拦截经编码的媒体内容18以不被绘制管线处理,该绘制管线例如可以典型地包括多个媒体变换模块和绘制器。另一方面,如果当前处理负载低于阈值水平并且被监测的网络参数指示网络带宽较低,则主机虚拟机可以被配置为禁用mmr并且解码/绘制经编码的媒体内容。然后,绘制的帧可以使用适合服务器系统与客户端计算机设备之间的网络带宽的压缩级别而被编码。
45.作为另一示例,主机虚拟机34可以被配置为基于至少一个客户端计算机设备12的用户设置来确定是否要启用mmr和加载mmr模块54。例如,管理员可以控制用于为客户端计算机设备启用或禁用mmr的用户设置。用户设置可以被发送到主机虚拟机34并且为该客户端计算机设备而存储。在一个具体示例中,mmr可以针对不同媒体源16经由用户设置被独立地启用或禁用。
46.如上所述,主机虚拟机34可以实现多会话操作系统60,多会话操作系统60托管与多个客户端计算机设备12的会话58。每个客户端计算机设备12的活动可以增加强加在运行主机虚拟机34的至少一个处理器56上的处理工作量。因此,在一个示例中,主机虚拟机34可以被配置为确定由多会话操作系统60托管的多个会话58的聚合活动,并且基于聚合活动来确定是否要执行mmr模块54。作为具体示例,如果因为只有一个会话当前正在访问经编码的
媒体内容以进行流式传输而导致多个会话58的聚合活动较低,则主机虚拟机34可以被配置为不启用mmr并且允许解码和绘制过程在主机虚拟机34上被执行。另一方面,如果多个会话58的聚合活动由于多个会话试图访问结束的媒体内容而较高,则主机虚拟机34可以被配置为启用mmr和加载mmr模块54。
47.主机虚拟机34可以被配置为基于对监测参数80的改变来动态地启用或禁用mmr。另外,应当理解,上面讨论的示例性监测参数仅仅是示例性的,并且主机虚拟机34可以基于其他参数来动态地确定是否要启用mmr,诸如经编码的媒体内容的大小、经编码的媒体内容的来源等。
48.图6示出了可以由每个客户端计算机设备12的处理器执行以与主机虚拟机34进行通信的示例远程桌面客户端82。远程桌面客户端82包括被配置为与由主机虚拟机34执行的mmr模块54交互的mmr dvc插件84。当mmr被主机虚拟机34启用时,mmr dvc插件84可以被加载在远程桌面客户端82上。另一方面,如果mmr未被启用,则远程桌面客户端82可以被配置为使用典型的远程技术和过程。
49.mmr dvc插件84包括通信层86和媒体层88。通信层86被配置为处理mmr dvc插件84与主机虚拟机34的mmr模块54之间的通信。通信层86可以包括被配置为与打开主机虚拟机34的mmr模块54的通道的mmr虚拟通道90。可以为针对会话而打开的媒体应用36的每个实例创建mmr虚拟通道90的实例。当来自主机虚拟机34的新连接被接受时,例如当主机虚拟机34上的媒体应用36的实例被打开并且媒体内容被访问时,可以创建远程收发器92。
50.远程收发器92可以被配置为向/从主机虚拟机34的mmr模块54发送和接收消息94。如图所示,消息94被构造为包括主消息处理程序96、源消息处理程序98、绘制器消息处理程序100和解复用器流消息处理程序102。主消息处理程序96可以被配置为包括用于在客户端与主机之间协商版本控制信息的数据。
51.消息94可以包括用于每个多媒体框架源72的源消息处理程序98。每个源消息处理程序98还包括相应绘制器消息处理程序100,绘制器消息处理程序100用于处理可以包括关于针对经编码的媒体内容18的播放状态的数据的消息。例如,绘制器消息处理程序100可以传送媒体内容是否应当被暂停、寻找到目标位置等。绘制器消息处理程序100也可以用于向主机虚拟机34报告播放的状态,诸如播放位置、播放是否结束、或播放错误。
52.每个绘制器消息处理程序100还包括解复用器流消息处理程序102,解复用器流消息处理程序102被配置为包括用于处理基于解复用的操作的数据,例如,为每个解复用后的独立的经编码的媒体流74请求媒体样本。即,客户端计算机设备12可以经由解复用器流消息处理程序102为特定的经编码的媒体内容流请求新的媒体样本。如上所述,客户端计算机设备12可以针对每个解复用的媒体内容流以独立速率请求媒体内容。例如,客户端计算机设备12可以以比针对音频媒体内容的媒体样本更高的速率为视频媒体内容请求媒体样本。
53.媒体层88包括媒体绘制器104,媒体绘制器104可以经由通信层86的远程收发器92发送和接收消息104。使用消息94,媒体绘制器104可以请求针对经编码的媒体内容流74的媒体样本,例如,针对经编码的视频内容的媒体样本、针对经编码的音频内容的媒体样本和针对经编码的文本内容的媒体样本。媒体绘制器104然后可以解码所接收的媒体样本,并且绘制解码后的媒体样本以经由客户端计算机设备12的输出设备(诸如显示器、扬声器等)呈现给用户。应当理解,媒体绘制器104可以针对客户端计算机设备12的平台使用任何合适的
绘制技术。
54.以上面讨论的方式,经编码的媒体内容可以被重定向到客户端计算机设备12,使得媒体内容不在主机虚拟机34上被解码或绘制。相反,经编码的媒体内容被重定向并且流式传输到客户端计算机设备12,客户端计算机设备12被配置为解码和绘制媒体内容以供显示。因此,通过在主机虚拟机上执行mmr并且避免解码/绘制过程,可以减少运行主机虚拟机的硬件上的处理工作量。
55.在一些实施例中,本文中描述的方法和过程可以绑定到一个或多个计算设备的计算系统。特别地,这样的方法和过程可以实现为计算机应用或服务、应用程序编程接口(api)、库和/或其他计算机程序产品。
56.图7示意性地示出了计算系统700的非限制性实施例,计算系统700可以实现上述方法和过程中的一个或多个。计算系统700以简化形式示出。计算系统700可以体现上面描述的和在图1和图2中示出的客户端计算机设备12和服务器系统14的服务器设备。计算系统700可以采取以下形式:一个或多个个人计算机、服务器计算机、平板计算机、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备、移动通信设备(例如,智能电话)、和/或其他计算设备、以及可穿戴计算设备,诸如智能手表和头戴式增强现实设备。
57.计算系统700包括逻辑处理器702、易失性存储器704和非易失性存储设备706。计算系统700可以可选地包括显示子系统708、输入子系统710、通信子系统712和/或图7未示出的其他组件。
58.逻辑处理器702包括被配置为执行指令的一个或多个物理设备。例如,逻辑处理器可以被配置为执行作为一个或多个应用、程序、例程、库、对象、组件、数据结构或其他逻辑构造的一部分的指令。这样的指令可以被实现以执行任务、实现数据类型、变换一个或多个组件的状态、实现技术效果、或以其他方式达到期望结果。
59.逻辑处理器可以包括被配置为执行软件指令的一个或多个物理处理器(硬件)。另外地或替代地,逻辑处理器可以包括被配置为执行硬件实现的逻辑或固件指令的一个或多个硬件逻辑电路或固件设备。逻辑处理器702的处理器可以是单核或多核的,并且在其上执行的指令可以被配置用于顺序、并行和/或分布式处理。逻辑处理器的个体组件可选地可以分布在两个或更多个单独的设备之间,这些设备可以远程定位和/或被配置用于协调处理。逻辑处理器的各方面可以由以云计算配置进行配置的远程可访问的联网计算设备来虚拟化和执行。在这种情况下,这些虚拟化方面在各种不同机器的不同物理逻辑处理器上运行,这是可以理解的。
60.非易失性存储设备706包括一个或多个物理设备,该物理设备被配置为保存由逻辑处理器可执行以实现本文中描述的方法和过程的指令。当这样的方法和过程被实现时,非易失性存储设备706的状态可以被变换——例如,以保存不同数据。
61.非易失性存储设备706可以包括可移除的和/或内置的物理设备。非易失性存储设备706可以包括光学存储器(例如,cd、dvd、hd-dvd、蓝光光盘等)、半导体存储器(例如,rom、eprom、eeprom、闪存等)和/或磁存储器(例如,硬盘驱动器、软盘驱动器、磁带驱动器、mram等)或其他大容量存储设备技术。非易失性存储设备706可以包括非易失性、动态、静态、读/写、只读、顺序访问、位置可寻址、文件可寻址和/或内容可寻址设备。应当理解,非易失性存储设备706被配置为即使在非易失性存储设备706的电源被切断时也保存指令。
62.易失性存储器704可以包括物理设备,该物理设备包括随机存取存储器。易失性存储器704通常被逻辑处理器702用于在软件指令的处理期间来临时存储信息。应当理解,当易失性存储器704的电源被切断时,易失性存储器704通常不继续存储指令。
63.逻辑处理器702、易失性存储器704和非易失性存储设备706的各方面可以一起集成到一个或多个硬件逻辑组件中。例如,这样的硬件逻辑组件可以包括现场可编程门阵列(fpga)、程序和应用专用集成电路(pasic/asic)、程序和应用专用标准产品(pssp/assp)、片上系统(soc)和复杂可编程逻辑器件(cpld)。
64.术语“模块”、“程序”和“引擎”可以用于描述计算系统700的一方面,该计算系统700通常由处理器以软件实现以使用易失性存储器的部分执行特定功能,该功能涉及将处理器专门配置为执行该功能的变换处理。因此,模块、程序或引擎可以经由逻辑处理器702使用易失性存储器704的部分执行由非易失性存储设备706保存的指令来实例化。应当理解,不同的模块、程序和/或引擎可以是从相同的应用、服务、代码块、对象、库、例程、api、函数等实例化。同样,相同的模块、程序和/或引擎可以由不同的应用、服务、代码块、对象、例程实例化、api、函数等实例化。术语“模块”、“程序”和“引擎”可以包含单个或一组可执行文件、数据文件、库、驱动程序、脚本、数据库记录等。
65.当被包括时,显示子系统708可以用于呈现由非易失性存储设备706保存的数据的视觉表示。视觉表示可以采用图形用户界面(gui)的形式。由于本文中描述的方法和过程改变了由非易失性存储设备保存的数据并且因此变换了非易失性存储设备的状态,所以显示子系统708的状态同样可以被变换以在视觉上表示底层数据的变化。显示子系统708可以包括使用几乎任何类型的技术的一个或多个显示设备。这样的显示设备可以与共享外壳中的逻辑处理器702、易失性存储器704和/或非易失性存储设备706进行组合,或者这样的显示设备可以是外围显示设备。
66.当被包括时,输入子系统710可以包括一个或多个用户输入设备或与其接口,诸如键盘、鼠标、触摸屏或游戏控制器。在一些实施例中,输入子系统可以包括所选择的自然用户输入(nui)组件或与其接口。这样的组件可以是集成的或外围的,并且输入动作的转换和/或处理可以在板上或板外处理。示例nui组件可以包括用于语音和/或声音识别的麦克风;用于机器视觉和/或手势识别的红外相机、彩色相机、立体相机和/或深度相机;用于运动检测和/或意图识别的头部跟踪器、眼球跟踪器、加速度计和/或陀螺仪;以及用于评估大脑活动的电场感应组件;和/或任何其他合适的传感器。
67.当被包括时,通信子系统712可以被配置为将本文中描述的各种计算设备彼此通信耦合并且与其他设备通信耦合。通信子系统712可以包括与一种或多种不同通信协议兼容的有线和/或无线通信设备。作为非限制性示例,通信子系统可以被配置用于经由无线电话网络、或有线或无线局域网或广域网进行通信(诸如通过wi-fi连接的hdmi)。在一些实施例中,通信子系统可以允许计算系统700通过诸如互联网等网络向其他设备发送消息和/或从其他设备接收消息。
68.以下段落为本主题申请的权利要求提供了附加的支持。一个方面提供了一种计算机系统,该计算机系统包括被配置为执行主机虚拟机的至少一个处理器,该主机虚拟机被配置为托管与至少一个客户端计算机设备的会话。主机虚拟机包括具有用于绘制媒体内容的多媒体框架的操作系统。至少一个处理器还被配置为执行被配置为从媒体源访问媒体内
容的媒体应用,使用多媒体框架处理来自媒体应用的经编码的媒体内容,并且执行多媒体重定向模块,该多媒体重定向模块被配置为拦截经编码的媒体内容以不被多媒体框架的解码模块处理。多媒体重定向模块被配置为将经编码的媒体内容重定向到至少一个客户端计算机设备。在该方面,另外地或替代地,经编码的媒体内容可以是动态流媒体内容。在该方面,另外地或替代地,经编码的媒体内容可以以包括以下一项或多项的媒体容器格式而被接收:视频流、音频流和文本流,并且至少一个处理器可以被配置为将媒体容器格式的经编码的媒体内容解复用成独立的经编码的媒体内容流。在该方面,另外地或替代地,独立的经编码的媒体内容流可以包括以下一项或多项:视频流、音频流和文本流。在该方面,另外地或替代地,多媒体重定向模块可以被配置为缓冲独立的经编码的媒体内容流,并且响应于从至少一个客户端计算机设备接收到对缓冲的独立的编码的媒体内容流的媒体样本的请求,向至少一个客户端计算机设备发送媒体样本。在该方面,另外地或替代地,多媒体重定向模块可以被配置为:基于从至少一个客户端计算机设备接收的对针对独立的经编码的媒体内容流中的每个独立的经编码的媒体内容流的媒体样本的请求,以独立速率发送媒体样本。在该方面,另外地或替代地,至少一个处理器可以被配置为:基于一个或多个监测参数来确定是执行多媒体重定向模块以拦截经编码的媒体内容,还是允许经编码的媒体内容由多媒体框架的解码模块处理。在该方面,另外地或替代地,一个或多个监测参数可以选自包含以下各项的组:计算机系统与至少一个客户端计算机设备之间的网络参数、计算机系统的至少一个处理器的当前处理负载、经编码的媒体内容的大小、以及至少一个客户端计算机设备的用户设置。在该方面,另外地或替代地,操作系统可以是被配置为并发地为多个客户端计算机设备托管多个会话的多会话操作系统。在这个方面,另外地或替代地,至少一个处理器可以被配置为基于由多会话操作系统托管的多个会话的聚合活动来确定是否要执行多媒体重定向模块。
69.另一方面提供了一种方法,该方法包括在服务器设备的处理器处执行主机虚拟机,该主机虚拟机被配置为托管与至少一个客户端计算机设备的会话。主机虚拟机包括具有用于绘制媒体内容的多媒体框架的操作系统。该方法还包括执行被配置为从媒体源访问媒体内容的媒体应用,使用多媒体框架处理来自媒体应用的经编码的媒体内容,以及执行多媒体重定向模块,该多媒体重定向模块被配置为拦截经编码的媒体内容以不被多媒体框架的解码模块处理。多媒体重定向模块被配置为将经编码的媒体内容重定向到至少一个客户端计算机设备。在这个方面,另外地或替代地,经编码的媒体内容可以是动态流媒体内容。在这个方面,另外地或替代地,经编码的媒体内容可以以包括以下一项或多项的媒体容器格式而被接收:视频流、音频流和文本流,并且该方法还可以包括将媒体容器格式的经编码的媒体内容解复用成独立的经编码的媒体内容流。在该方面,另外地或替代地,独立的经编码的媒体内容流可以包括以下一项或多项:视频流、音频流和文本流。在该方面,另外地或替代地,该方法还可以包括缓冲独立的经编码的媒体内容流,以及响应于从至少一个客户端计算机设备接收到对缓冲的独立的编码的媒体内容流的媒体样本的请求,向至少一个客户端计算机设备发送媒体样本。在该方面,另外地或替代地,该方法还可以包括基于从至少一个客户端计算机设备接收的对针对独立的经编码的媒体内容流中的每个独立的经编码的媒体内容流的媒体样本的请求,以独立速率发送媒体样本。在这个方面,另外地或替代地,该方法还可以包括基于一个或多个监测参数来确定是执行多媒体重定向模块以拦截经
编码的媒体内容还是允许经编码的媒体内容由多媒体框架的解码模块处理。在该方面,另外地或替代地,一个或多个监测参数可以选自包含以下各项的组:服务器设备与至少一个客户端计算机设备之间的网络参数、服务器设备的至少一个处理器的当前处理负载、经编码的媒体内容的大小、以及至少一个客户端计算机设备的用户设置。在该方面,另外地或替代地,操作系统可以是被配置为并发地为多个客户端计算机设备托管多个会话的多会话操作系统。
70.另一方面提供了一种服务器系统,该服务器系统包括被配置为执行主机虚拟机的至少一个处理器,该主机虚拟机实现多会话操作系统,该多会话操作系统被配置为并发地为多个客户端计算机设备托管多个会话,多会话操作系统具有用于绘制媒体内容的多媒体框架。至少一个处理器还被配置为针对多个会话中的一个或多个会话执行媒体应用的实例,媒体应用被配置为从媒体源访问媒体内容。处理器还被配置为确定主机虚拟机的多个会话的聚合活动高于阈值水平,基于所确定的聚合活动启用多个会话中的一个或多个会话的多媒体重定向,使用多媒体框架处理来自媒体应用的实例的经编码的媒体内容,并且执行多媒体重定向模块,该多媒体重定向模块被配置为拦截经编码的媒体内容以不被多媒体框架的解码模块处理。多媒体重定向模块被配置为将经编码的媒体内容重定向到一个或多个会话的相应客户端计算机设备。
71.应当理解,本文中描述的配置和/或方法本质上是示例性的,并且这些特定实施例或示例不应当被认为具有限制意义,因为很多变型是可能的。本文中描述的特定例程或方法可以表示任何数目的处理策略中的一个或多个。这样,所示出和/或描述的各种动作可以以所示出和/或描述的顺序执行、以其他顺序执行、并行执行或者省略。同样,可以改变上述处理的顺序。
72.本公开的主题包括各种过程、系统和配置、以及本文中公开的其他特征、功能、动作和/或特性的所有新颖和非明显的组合和子组合、以及其任何和所有等价物。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献