CN114902686A - Web浏览器多媒体重定向 - Google Patents
Web浏览器多媒体重定向 Download PDFInfo
- Publication number
- CN114902686A CN114902686A CN202080091683.XA CN202080091683A CN114902686A CN 114902686 A CN114902686 A CN 114902686A CN 202080091683 A CN202080091683 A CN 202080091683A CN 114902686 A CN114902686 A CN 114902686A
- Authority
- CN
- China
- Prior art keywords
- media content
- encoded
- encoded media
- client computer
- computer device
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 74
- 238000012545 processing Methods 0.000 claims abstract description 23
- 230000000694 effects Effects 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 6
- 230000003139 buffering effect Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 40
- 238000004891 communication Methods 0.000 description 17
- 238000009877 rendering Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 239000000872 buffer Substances 0.000 description 5
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 101000822695 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C1 Proteins 0.000 description 1
- 101000655262 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C2 Proteins 0.000 description 1
- 101000655256 Paraclostridium bifermentans Small, acid-soluble spore protein alpha Proteins 0.000 description 1
- 101000655264 Paraclostridium bifermentans Small, acid-soluble spore protein beta Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007177 brain activity Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011982 device technology Methods 0.000 description 1
- 230000005684 electric field Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/431—Generation of visual interfaces for content selection or interaction; Content or additional data rendering
- H04N21/4312—Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations
- H04N21/4316—Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations for displaying supplemental content in a region of the screen, e.g. an advertisement in a separate window
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/08—Protocols specially adapted for terminal emulation, e.g. Telnet
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45529—Embedded in an application, e.g. JavaScript in a Web browser
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/70—Media network packetisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/563—Data redirection of data network streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
- H04N21/4437—Implementing a Virtual Machine [VM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/478—Supplemental services, e.g. displaying phone caller identification, shopping application
- H04N21/4782—Web browsing, e.g. WebTV
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8543—Content authoring using a description language, e.g. Multimedia and Hypermedia information coding Expert Group [MHEG], eXtensible Markup Language [XML]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Business, Economics & Management (AREA)
- Marketing (AREA)
- Information Transfer Between Computers (AREA)
- User Interface Of Digital Computer (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
一种包括至少一个处理器的计算机系统被提供,至少一个处理器被配置为执行托管虚拟机,托管虚拟机被配置为托管与至少一个客户端计算机设备的会话。至少一个处理器还被配置为:执行被配置为访问来自远程媒体源的媒体内容的Web浏览器应用,从远程媒体源以媒体容器格式接收经编码媒体内容,以及执行多媒体重定向模块,多媒体重定向模块被配置为拦截经编码媒体内容由Web浏览器应用的解码模块处理。多媒体重定向模块被配置为将经编码媒体内容重定向到至少一个客户端计算机设备。
Description
背景技术
在虚拟环境中,终端用户可以使用客户端设备连接到在服务器硬件上运行的虚拟机,这可以向终端用户提供如下益处:附加的计算功率、应用兼容性、安全性和合规性,并且降低终端用户的总成本。通常,这些终端用户可能消耗诸如视频流的媒体,这可能增加服务器硬件上的工作负载并且增加相关成本。
发明内容
一种计算机系统被提供,其可以包括至少一个处理器,该处理器被配置为:执行托管虚拟机,该托管虚拟机被配置为托管与至少一个客户端计算机设备的会话。至少一个处理器还可被配置为执行Web浏览器应用,Web浏览器应用被配置为访问来自远程媒体源的媒体内容,从远程媒体源以媒体容器格式接收经编码媒体内容,以及执行多媒体重定向模块,多媒体重定向模块被配置为拦截经编码媒体内容由Web浏览器应用的解码模块处理。多媒体重定向模块可以被配置为将经编码媒体内容重定向到至少一个客户端计算机设备。
提供本发明内容是为了以简化形式介绍将在以下详细描述中进一步描述的一些概念选取。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本发明任何部分中提到的任何或所有缺点的实现。
附图说明
图1是用于执行本说明书的多媒体重定向的一个示例计算机系统的示意图。
图2是图1的计算机系统的一个示例服务器系统的示意图。
图3是实现多媒体重定向模块以为图1的计算机系统分隔(shim)Web浏览器应用的渲染流水线的Web浏览器应用的示意图。
图4是由图1的计算机系统实现的用于执行多媒体重定向的方法的流程图。
图5是实现针对图1的计算机系统的多媒体重定向的Web浏览器应用的软件架构的示意图。
图6是与由图1的计算机系统实现的多媒体重定向模块通信的远程桌面客户端的软件架构的示意图。
图7是图1的计算机系统可以在其中被实现的示例计算环境的示意图。
具体实施方式
云平台服务可以为终端用户提供虚拟化桌面环境,终端用户可以利用客户端计算机设备连接到在云平台的服务器设备上运行的虚拟机。通常,云平台的计算机硬件和网络能力比终端用户的客户端计算机设备更强大。因此,通过在虚拟化桌面环境上托管这些终端用户,云平台可以向这些用户提供附加的计算功率,以及其他潜在的益处,诸如改进的应用兼容性、安全性/合规性,以及相关联的计算成本的总体降低。
在一些示例中,这些云平台服务可以为具有多个终端用户和客户端设备的企业提供虚拟桌面基础设施。这些企业的用户可以消耗媒体,诸如,例如被本地存储在针对该企业的云平台上或者由远程媒体源存储并且流传输到在云平台上运行的虚拟化桌面环境的视频和/或音频媒体。通常,由媒体源提供的媒体内容在托管终端用户的虚拟机上被解码,然后显示针对虚拟化桌面的帧,虚拟化桌面呈现媒体内容被重新编码并且通过远程桌面协议被流传输到用户的客户端计算机设备。然后,客户端计算机设备可以解码这些显示帧,并经由客户端计算机设备的显示器将它们呈现给用户。
在虚拟机上执行的解码和随后的编码进程可能消耗服务器硬件的大量计算资源。在一个特定的示例中,用于视频流传输的视频渲染进程可能潜在地消耗运行虚拟机的服务器设备的中央处理单元(CPU)资源的20%-40%。在多个用户在虚拟机上共享操作系统(OS)实例的多会话虚拟化桌面环境部署中,这些问题可能进一步加剧。例如,如果多于一个用户试图通过共享的托管虚拟机来流式传输视频内容时,则针对该虚拟机的所有CPU资源可以潜在地被相关联的解码/编码/渲染进程消耗,从而潜在地降低由该虚拟机托管的所有用户的用户体验。
为了解决上述问题,图1示出了用于如下虚拟化桌面环境的示例计算机系统10:执行多媒体重定向以减少运行虚拟化桌面环境的服务器硬件上的计算负载的虚拟化桌面环境,这将在下面更详细地讨论。如图1所示,计算机系统10包括一个或多个客户端计算机设备12、服务器系统14、以及一个或多个媒体源16。一个或多个客户端计算机设备12的终端用户可以连接到在服务器系统14上运行的虚拟机。使用在虚拟机的托管操作系统内执行的应用(例如Web浏览器应用),终端用户可以与媒体源16所存储的媒体交互。
在一个示例中,媒体源16可以是服务器系统14的本地源,并且可以被包括在服务器系统14中。在另一示例中,媒体源16可以远离客户端计算机设备12和服务器系统14。例如,服务器系统14可以被配置为通过诸如广域网(WAN)的通信网络与远程媒体源通信。作为一个具体示例,终端用户可录入输入到托管虚拟机内执行的Web浏览器应用,以导航到与媒体源16相关联的Web站点,例如视频流Web站点。使用相关联的Web站点,终端用户可以启动包括流视频和/或音频的体验。通常,流视频和/或音频作为经编码媒体18被发送到服务器系统14,并由执行请求了流视频和/或音频的Web浏览器应用的托管虚拟机处理。
如上所述,典型的虚拟化环境实现将对经编码媒体18进行解码,经由虚拟化桌面环境呈现媒体内容,对针对虚拟化桌面环境的显示/音频帧进行编码,然后将经编码的显示/音频帧发送到客户端计算机设备12用于呈现给终端用户。为了减少由解码/编码进程引起的对服务器系统14上的硬件施加的计算负担,服务器系统14可以实现多媒体重定向,以将从媒体源16接收的经编码媒体18传递到客户端计算机设备12,而不在服务器系统14上执行编码或解码进程。
图2示出了服务器系统14的一个示例。服务器系统14可以包括硬件平面20、虚拟机平面22、虚拟机监控器(hypervisor)平面24和网络基础设施26,它们被共同配置为操作云平台。硬件平面20包括节点28的集合(每个节点由图2中的符号“N”表示),节点28可以包括处理器、图形处理单元(GPU)、易失性存储器和被配置为运行主机服务器(host server)实例的其它计算机组件。由硬件平面20的节点28执行的主机服务器实例被配置为与虚拟机监控器平面24的一个或多个虚拟机监控器通信。虚拟机监控器平面24的一个或多个虚拟机监控器可以创建、处置和监测虚拟机平面22的多个虚拟机30(每个在图2中用符号“VM”表示)。通过虚拟机监控器平面24,虚拟机平面22的每个虚拟机30可以由硬件平面20的一个或多个节点28的硬件组件来托管和运行。以此方式,虚拟机平面22的多个虚拟机30可以共享由虚拟机监控器平面24管理的虚拟化硬件资源。每个虚拟机30提供虚拟化桌面环境,诸如Web浏览器应用、媒体播放器应用和其它类型的软件的软件可以在其中被执行。
在一个示例中,计算机系统14对应于经由标准网络基础设施通信地耦合多个节点28的数据中心环境。例如,网络基础设施20可以包括典型的网络基础设施,诸如包括架顶式(TOR)网络交换机的服务器机架。计算机系统14可以包括多个节点集群,每个节点集群具有相关联的TOR网络交换机。网络基础设施20还可以包括将TOR网络交换机连接在一起的更高级交换基础设施32(L1)和(L2)。更高级交换基础设施32可以采取任何合适的联网架构的形式,并且可以由任何合适的(多个)路由协议驱动。在所示示例中,更高级基础设施32包括聚合交换机L1和核交换机L2的集合。然而,应当理解,较高级的交换基础设施可以包括任何适当数目的级别的交换机。
虚拟机平面22的虚拟机30提供虚拟计算环境,服务器系统14的用户可以在该虚拟计算环境内访问并且运行诸如例如Web浏览器、媒体播放器等应用。如下面将更详细地讨论的,虚拟机平面22的这些虚拟机30可以被配置为实施多媒体重定向,以减少由通常针对流媒体执行解码进程和编码进程引起的对硬件平面20的节点施加的计算工作负载。
另外,应当理解,服务器系统14不限于图2所示的数据中心/云平台示例。在其他一些示例中,服务器系统14可以采取被配置为运行虚拟化桌面环境的一个或多个计算机设备的形式。使用客户端计算机设备12,相关联的用户可连接到由一个或多个计算机设备运行的虚拟化桌面环境,以访问在虚拟化桌面环境内运行的软件,该软件可被配置为实施本文的多媒体重定向功能和进程。
图3示出了被配置为执行多媒体重定向技术以解决上述问题的示例托管虚拟机34。托管虚拟机34可以采取参照图2描述的云平台的虚拟机平面22的虚拟机30中的一个虚拟机的形式。然而,应当理解,托管虚拟机34也可以以服务器系统14的非云平台形式实现。
托管虚拟机34可以由服务器系统14的至少一个处理器执行。托管虚拟机34可以被配置为托管与至少一个客户端计算机设备12的会话,并且可以托管在托管虚拟机34的操作系统内运行的应用。在一个示例中,托管虚拟机34可以包括由服务器系统14的至少一个处理器执行的Web浏览器应用36。如图所示,Web浏览器应用36可被配置为访问来自媒体源16的媒体内容。使用Web浏览器应用36的图形用户界面(GUI),用户可以导航到目标媒体源16,例如Web页面和服务于媒体内容的相关服务器。在一个示例中,媒体源16可以是运行托管虚拟机34的服务器系统14的本地源。在另一示例中,媒体源16可以远离服务器系统14,并且可以被配置为通过WAN将经编码媒体内容18发送到服务器系统14。
托管虚拟机34可以被配置为从媒体源16接收经编码媒体内容18,在所示示例中,媒体源16可以采取远程媒体源的形式。经编码媒体内容18可以使用任何合适的算法被编码。在一个示例中,以包括视频流40、音频流42和文本流44中的一项或多项的媒体容器格式38来接收经编码媒体内容18。作为一个具体示例,媒体容器格式38可以是MP4格式、WAV格式、AVI格式或另一类型的媒体容器格式38。
由托管VM 34接收的经编码媒体内容18可以由运行在托管VM34上的Web浏览器应用36的媒体源扩展(MSE)模块46处理。MSE模块46可以被配置为提供针对基于Web的媒体流的功能性。MSE模块46还可被配置为将媒体容器格式38的经编码媒体内容18解复用为独立视频流、音频流和文本流。通常,如图3所示,独立的经编码音频流42和经编码视频流40将由Web浏览器应用36的音频和视频渲染流水线来处理。例如,经编码音频流42和经编码视频流40可以分别由对音频流和视频流进行解压缩的解码器48来处理。然后可以将解压缩的音频流和视频流分别传递到音频渲染器50和视频渲染器52,以准备用于呈现的视频内容和音频内容。如上所述,在托管VM34上执行的这些解码进程和渲染进程将消耗运行托管VM 34的服务器设备的硬件资源,这可能潜在地降低托管虚拟机34的多会话操作系统中托管的其他用户的用户体验。
为了解决这些问题,托管虚拟机34可以被配置为实施多媒体重定向模块54,多媒体重定向模块被配置为将包括经编码音频流42和经编码视频流40的经编码媒体内容18重定向到客户端计算机设备12。图4是由运行托管虚拟机34以执行多媒体重定向的服务器系统14实施的方法400的流程图。方法400可以使用上述系统或利用其它合适的硬件和软件元素来执行。
在402中,方法400可以包括执行被配置为托管与至少一个客户端计算机设备的会话的托管虚拟机。托管虚拟机34可以由服务器系统14的至少一个处理器执行,服务器系统14可以采取例如图2所示的云平台数据中心的形式。在一个示例中,托管虚拟机34可以实施多会话操作系统,多会话操作系统被配置为并发地托管针对多个客户端计算机设备12的多个会话。多个会话可以在相同的多会话操作系统实例中被托管。每个会话可以实施这里描述的用于多媒体重定向的技术和进程。
在404中,方法400可以包括执行被配置为访问来自远程媒体源的媒体内容的Web浏览器应用。Web浏览器应用36可以在托管虚拟机34内运行。在一个多会话操作系统示例中,多个会话中的每个会话都可以具有在多会话操作系统中运行的相关联的Web浏览器应用36实例。远程媒体源16可以采取流传输诸如视频和/或音频的媒体内容的第三方媒体服务的形式。Web浏览器应用36可以被配置为基于用户Web导航输入(诸如,例如针对远程媒体源16的URL地址)来访问远程媒体源16。
在406中,方法400可以包括从远程媒体源以媒体容器格式接收经编码媒体内容。经编码媒体内容18可以由托管虚拟机34通过WAN接收。如图3所示,经编码媒体内容18可以包括经编码视频流40、经编码音频流52和经编码文本流44中的一项或多项。媒体内容的经编码流可以以媒体容器格式38被捆绑,例如MP4格式,WAV格式等。
在408中,方法400可以包括将媒体容器格式的经编码媒体内容解复用为经编码媒体内容的独立流。例如,Web浏览器应用36可被配置为实施MSE模块46,MSE模块46包括用于将媒体容器格式38拆解并将经编码媒体内容18解复用成独立流(诸如,例如经编码视频流40、经编码音频流42和/或经编码文本流44)的进程。
在410中,方法400可以包括执行多媒体重定向模块,多媒体重定向模块被配置为拦截经编码媒体内容由Web浏览器应用的解码模块处理。多媒体重定向模块54可以采取分隔的形式,其拦截应用编程接口(API)调用并改变所传递的自变数以及应用于这些自变数的系统行为。例如,多媒体重定向模块54可以拦截将把经编码音频/视频/文本流传递给相应的解码器和渲染器的API调用,并将该经编码内容重定向到用于该会话的相关联的客户端计算机设备12。以此方式,经编码媒体内容18不被托管虚拟机34上的解码器48解码。
被重定向到客户端计算机设备12的经编码媒体内容18可以被缓冲并通过WAN流传输到客户端计算机设备12。在412中,方法400可以包括缓冲经编码媒体内容的独立流。经编码媒体内容的独立流(诸如经编码音频流42和经编码视频流40)可以临时存储在托管虚拟机34上的缓冲器中。
在414中,方法400可以包括响应于从至少一个客户端计算机设备接收到对媒体样本的请求,向至少一个客户端计算机设备发送经编码媒体内容的所缓冲的独立流的媒体样本。客户端计算机设备12可以独立地请求针对经编码媒体内容18中的每个流的新的媒体样本。例如,客户端计算机设备12可以从请求针对经编码音频流40的媒体样本独立地请求针对经编码视频流40的媒体样本。以此方式,客户端计算机设备12可以以独立速率针对经编码媒体内容的每个独立流(例如,经编码音频流、经编码视频流等)请求媒体样本,并且托管虚拟机34可以以所请求的速率针对经编码媒体内容的每个独立流发送媒体样本。通常,视频内容的大小大于音频内容,并且因此可能需要将更高速率将视频样本发送到客户端计算机设备12。
图5示出了用于实施多媒体重定向模块54和方法400中描述的步骤的示例服务器侧软件架构。在示出的示例中,服务器系统14中包括的服务器设备的至少一个处理器56可以被配置为执行托管虚拟机34,该托管虚拟机34被配置为托管与至少一个客户端计算机设备12的会话58。在所示出的示例中,托管虚拟机34实施多会话操作系统60,该多会话操作系统60被配置为并发地托管针对多个客户端计算机设备12的多个会话58。每个会话58可以与不同的客户端计算机设备12相关联,并且可以在托管虚拟机34上运行应用程序的单独实例。例如,每个会话58可以执行被配置为访问来自远程媒体源16的媒体内容的Web浏览器应用36的单独实例。
在多会话操作系统60内运行的每个会话58还可以被配置为从远程媒体源16以媒体容器格式38接收经编码媒体内容18,如参考前面图3和图4所描述的内容。在一个示例中,经编码媒体内容18可以采取动态流媒体内容的形式。在另一个示例中,经编码媒体内容18可以采取HTTP渐进流内容的形式。然而,应当理解,经编码媒体内容18可以采用其他合适的形式。另外,经编码媒体内容18可以以包括视频流、音频流和文本流中的一项或多项的媒体容器格式被接收。视频流、音频流和文本流可以以媒体容器格式被多路复用。应当理解,媒体容器格式可以采取MP4格式、WAV格式或任何其它合适类型的媒体容器格式的形式。
Web浏览器应用36的执行可以启动在多会话操作系统60内运行的多个相关联的进程。作为一个具体示例,针对与客户端计算机设备58的会话58的Web浏览器应用进程62可以运行。附加地,单独的渲染器进程64可以针对在Web浏览器应用36中打开的每个选项卡运行。与Web浏览器应用进程62相比,这些单独的渲染器进程64可以被沙箱化并以较低的完整性等级运行。
每个渲染器进程64可以包括解复用模块66、渲染器客户端68和信使渲染器70。解复用模块66可以被配置为将媒体容器格式38的经编码媒体内容18解复用为经编码媒体内容72的独立流。经编码媒体内容的解复用的独立流72例如可以包括经编码视频流、经编码音频流和/或经编码文本流。
信使渲染器70形成MMR模块54的一部分,并且可以被配置为请求并且接收来自经编码媒体内容的解复用的独立流72的经压缩媒体样本。在一个示例中,信使渲染器70还可以被配置为向渲染器客户端68通知经编码媒体内容18的回放状态74的改变和回放时间。
在一个示例中,如果启用了多媒体重定向(MMR),则信使渲染器70在渲染器进程64内运行。如果当前未针对所接收的经编码媒体内容18并发地启用MMR,那么渲染器过程64可以被配置为运行媒体渲染器来代替信使渲染器70,该信使渲染器70可以被配置为经由解码器48、音频渲染器50和视频渲染器52来处置经编码媒体内容的解码和渲染。当启用MMR时,信使渲染器70代替典型的媒体渲染器被加载,并被配置为拦截媒体内容的解复用流并执行本文描述的功能和进程。以此方式,媒体内容的解复用的流不在托管虚拟机34上被解码和渲染。
MMR模块54还可以包括远程桌面连接(RDC)连接器模块76。信使渲染器70还可以被配置为与RDC远程连接器模块76进行跨进程通信。在一个示例中,RDC远程连接器模块76可以在Web浏览器应用进程62的进程内运行。在另一示例中,RDC远程连接器模块76可在与Web浏览器应用进程62分开的另一进程内执行。如图5所示,信使渲染器70可以包括渲染器控制器78,该渲染器控制器被配置为经由发送和接收序列化消息80来处置与RDC远程连接器模块76的通信。作为一个具体示例,序列化消息80可以包括使用诸如例如扩展协议缓冲器的协议来序列化的命令,扩展协议缓冲器是用于对结构化数据进行序列化和解序列化的语言和平台中立机制。然而,应当理解,也可以实施其它序列化协议。
信使渲染器70可以被配置为向RDC远程连接器模块76发送针对经编码媒体内容的解复用独立流72的解复用媒体样本。信使渲染器70还可以被配置为将渲染器命令转换成序列化消息80,该序列化消息80也被发送到RDC远程连接器模块76。此外,信使渲染器70可以被配置为将从RDC远程连接器模块76接收的序列化消息80转换为渲染器客户端68上的回调。
如上所述,在Web浏览器应用的实例中打开的每个选项卡可以具有相关联的渲染器进程64。针对渲染器进程64的这些实例中的每个实例的信使渲染器70的实例可以针对正与客户端计算机设备12的会话58一起执行的Web浏览器应用的实例,与单个RDC远程连接器模块76通信。RDC远程连接器模块76可以包括针对每个信使渲染器70的远程桥82,该远程桥被配置为与相关联的信使渲染器70交换序列化消息。在一个示例中,RDC远程连接器模块76可以被配置为充当多路转接器,该多路转接器允许多个信使渲染器并发地远程于客户端计算机设备12。
如图5所示,RDC远程连接器模块76还可以包括RDC媒体远程核84,该RDC媒体远程核84包括用于执行RDC远程连接器模块76的功能和进程的逻辑。RDC媒体远程核84还可以被配置为处置将远程桥82处接收到的经编码媒体数据的解复用单独流72传输到在客户端计算机设备12上实施的动态虚拟信道(DVC)插件。RDC远程连接器模块76还可以处置序列化消息80与客户端计算机设备12上的DVC插件的通信。
如上所述,MMR模块54可以包括RDC远程连接器模块76和信使渲染器70。使用上述进程,MMR模块54可以被配置为拦截经编码媒体内容18由Web浏览器应用38的解码模块48处理。例如,当启用MMR时,信使渲染器70可以代替渲染器进程64内的典型媒体渲染器执行。即,MMR模块54可以使得来自经编码媒体内容的解复用独立流(例如,视频流/音频流/文本流)的媒体样本被发送到信使渲染器70,该信使渲染器70被配置为将这些媒体样本发送到RDC远程连接器模块76的相关联的远程桥82。使用针对RDC远程连接器模块76描述的功能,MMR模块54可以通过WAN将那些媒体样本发送到客户端计算机设备12。以此方式,经编码媒体内容由MMR模块54重定向到至少一个客户端计算机设备12,使得经编码媒体内容不在托管虚拟机34上解码或渲染。
附加地,MMR模块54可以被配置为缓冲经编码媒体内容的独立流72,并且响应于从至少一个客户端计算机设备12接收到对媒体样本的请求,将经编码媒体内容的缓冲的独立流72的媒体样本发送到至少一个客户端计算机设备12。例如,客户端计算机设备12可以向RDC远程连接器模块76发送序列化消息80,该序列化消息80包括对针对经编码媒体内容的流中的至少一个流的媒体样本的请求88。RDC远程连接器模块76可以请求信使渲染器70将所请求的媒体样本发送到相关联的远程桥82。然后,RDC远程连接器模块76可以通过动态虚拟信道将所请求的经编码媒体样本86发送到客户端计算机设备12。在一个示例中,客户端计算机设备12可以针对经编码媒体内容的每个独立流72发送单独的请求88。例如,客户端计算机设备12可以以比经编码音频内容的媒体样本更高的速率请求经编码视频内容流的媒体样本。因此,MMR模块54可以被配置为:基于从至少一个客户端计算机设备12接收到的对媒体样本的请求88,以独立速率针对经编码媒体内容的独立流72中的每个独立流发送媒体样本86。
如上所述,当针对经编码媒体内容18启用MMR时,加载并执行可以包括RDC远程连接器模块76和信使渲染器70的MMR模块54。在一个示例中,至少一个处理器56可以被配置为基于一个或多个受监测参数90来确定是否启用MMR,以及是否执行MMR模块54以拦截或允许经编码媒体内容18由Web浏览器应用36的解码模块48处理。在一个示例中,托管虚拟机34可以被配置为监测服务器系统14与至少一个客户端计算机设备12之间的网络参数,并且基于所监测的网络参数来确定是否启用MMR。
作为另一示例,托管虚拟机34可以被配置为监测运行托管虚拟机34的至少一个处理器56的当前处理负载,并基于当前处理负载来确定是否启用MMR。作为一个具体示例,如果至少一个处理器56上的当前处理负载超过阈值水平,则托管虚拟机34可被配置为启用MMR并加载MMR模块54及其相关联的媒体栈,以拦截经编码媒体内容18由执行解码和渲染的标准渲染进程处理。另一方面,如果当前处理负载低于阈值水平并且所监测的网络参数指示网络带宽低,则托管虚拟机可被配置为禁用MMR并解码/渲染经编码媒体内容。所渲染的帧然后可以利用适合于服务器系统与客户端计算机设备之间的网络带宽的压缩级别来被编码。
作为另一示例,托管虚拟机34可被配置为基于至少一个客户端计算机设备12的用户设置来确定是否启用MMR并加载MMR模块54。例如,管理员可以控制用户设置以启用或禁用针对客户端计算机设备的MMR。用户设置可被发送到托管虚拟机34并针对该客户端计算机设备进行存储。在一个具体示例中,可以经由不同媒体源16的用户设置来独立地启用或禁用MMR。
如上所述,托管虚拟机34可以实施托管与多个客户端计算机设备12的会话58的多会话操作系统60。每个客户端计算机设备12的活动可以增加被施加到运行托管虚拟机34的至少一个处理器56的处理工作负载。因此,在一个示例中,托管虚拟机34可以被配置为确定由多会话操作系统60托管的多个会话58的聚合活动,并且基于聚合活动来确定是否执行MMR模块54。作为一个具体示例,如果由于当前只有一个会话正在访问经编码媒体内容以进行流传输而多个会话58的聚合活动低,则托管虚拟机34可被配置为不启用MMR,并允许在托管虚拟机34上执行解码和渲染进程。另一方面,如果由于多个会话试图访问经编码媒体内容而导致多个会话58的聚合活动高,则托管虚拟机34可被配置为启用MMR并加载MMR模块54。
托管虚拟机34可以被配置为基于对受监测参数90的改变来动态地启用或禁用MMR。附加地,应当理解,以上讨论的示例性受监测参数仅仅是示例性的,并且托管虚拟机34可以基于其他参数(诸如经编码媒体内容的大小,经编码媒体内容的源等)来动态地确定是否启用MMR。
图6示出了由每个客户端计算机设备12的处理器可执行以与托管虚拟机34通信的示例远程桌面客户端92。远程桌面客户端92包括被配置为与由托管虚拟机34执行的MMR模块54交互的MMR DVC插件94。当MMR被托管虚拟机34启用时,MMR DVC插件94可被加载到远程桌面客户端92上。另一方面,如果MMR未被启用,则远程桌面客户端92可被配置为使用典型的远程技术和进程。
MMR DVC插件94包括通信层96和媒体层98。通信层96被配置为处置MMR DVC插件94与托管虚拟机34的RDC远程连接器模块76之间的通信。通信层96可以包括被配置为打开与托管虚拟机34的RDC远程连接器模块76的信道的MMR虚拟信道100。MMR虚拟频道100的实例可以针对为会话打开的Web浏览器应用36的每个实例而被创建。当来自托管虚拟机34的新连接被接受时,诸如例如当托管虚拟机34上的Web浏览器应用36的实例被打开并且媒体内容被访问时,远程收发器102被创建。
远程收发器102可以被配置为向/从托管虚拟机34的RDC远程连接器模块76发送和接收消息104。如图所示,消息104被构造为包括主消息处置器106、源消息处置器108、渲染器消息处置器110和解复用器流消息处置器112。主消息处置器106可以被配置为包括用于在客户端与主机之间协商版本信息的数据。
消息104可以包括用于RDC远程连接器模块76的每个远程桥82的源消息处置器108。每个源消息处置器108还包括用于利用渲染器进程64处置消息的相应的渲染器消息处置器110。渲染器消息处置器110可以包括关于由相关联的渲染器进程64处理的经编码媒体内容的回放状态的数据。例如,渲染器消息处置器110可以传送媒体内容是否应被暂停、被寻求到目标位置等。渲染器消息处置器110还可用于向托管虚拟机34报告回放的状态,诸如回放位置、回放是否已结束或回放中的错误。
每个渲染器消息处置器110还包括解复用器流消息处置器112,解复用器流消息处置器112被配置为包括用于处置基于操作的解复用,诸如,例如针对经编码媒体的每个解复用独立流72请求媒体样本。即,客户端计算机设备12可以经由解复用器流消息处置器112针对用于经编码媒体内容的特定流请求新媒体样本。如上所述,客户端计算机设备12可以针对媒体内容的每个解复用的流以独立速率请求媒体内容。例如,客户端计算机设备12可以以比针对音频媒体内容的媒体样本更高的速率请求针对视频媒体内容的媒体样本。
媒体层98包括媒体渲染器114,媒体渲染器114可以经由通信层96的远程收发器102发送和接收消息104。使用消息104,媒体渲染器114可以请求针对经编码媒体内容的流72的媒体样本,例如针对经编码视频内容的媒体样本、针对经编码音频内容的媒体样本和针对经编码文本内容的媒体样本。媒体渲染器114然后可对接收到的媒体样本进行解码,并渲染经解码的媒体样本以经由客户端计算机设备12的输出设备(诸如显示器、扬声器等)呈现给用户。应当理解,媒体渲染器114可以使用针对客户端计算机设备12的平台的任何合适的渲染技术。
在上述讨论的方式中,经编码媒体内容可以被重定向到客户端计算机设备12,使得媒体内容不在托管虚拟机34上被解码或渲染。相反,经编码媒体内容被流式传输到客户端计算机设备12,客户端计算机设备12被配置为解码和渲染媒体内容以用于显示。因此,通过在托管虚拟机上执行MMR并避免解码/渲染进程,可以减少运行托管虚拟机的硬件上的处理工作负载。
在一些实施例中,在此描述的方法和进程可以绑定到一个或多个计算设备的计算系统。特别地,这样的方法和进程可以实现为计算机应用程序或服务、应用编程接口(API)、库和/或其它计算机程序产品。
图7示意性地示出了可以执行上述方法和进程中的一个或多个的计算系统700的非限制性实施例。以简化形式示出了计算系统700。计算系统700可以在以上描述以及图1和图2中示出的客户端计算机设备12和服务器系统14的服务器设备上实施。计算系统700可以采取以下形式:一个或多个个人计算机、服务器计算机、平板计算机、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备、移动通信设备(例如,智能电话)和/或其他计算设备,以及诸如智能手表和头戴式增强现实设备的可穿戴计算设备。
计算系统700包括逻辑处理器702、易失性存储器704和非易失性存储设备706。计算系统700可以选择性地包括显示子系统708、输入子系统710、通信子系统712和/或图7中未示出的其它组件。
逻辑处理器702包括被配置为执行指令的一个或多个物理设备。例如,逻辑处理器可被配置为执行一个或多个应用、程序、例程、库、对象、组件、数据结构或其它逻辑构造的一部分的指令。这样的指令可被实施为执行任务、实施数据类型、变换一个或多个组件的状态、实现技术效果或以其他方式达到期望的结果。
逻辑处理器可以包括被配置为执行软件指令的一个或多个物理处理器(硬件)。另外地或可选地,逻辑处理器可以包括被配置为执行硬件实现的逻辑或固件指令的一个或多个硬件逻辑电路或固件设备。逻辑处理器702的处理器可以是单核或多核的,并且在其上执行的指令可以被配置用于顺序、并行和/或分布式处理。逻辑处理器的各个组件可选择性地分布在两个或更多个分离的设备中,这些设备可以远程定位和/或配置用于协调处理。逻辑处理器的各方面可以由在云计算配置中配置的可远程访问的联网计算设备来虚拟化和执行。在这种情况下,应理解,这些虚拟化方面在各种不同机器的不同物理逻辑处理器上运行。
非易失性存储设备706包含一个或一个以上物理装置,其经配置以保存可由逻辑处理器执行以实施本文的方法和过程的指令。当实施此类方法和过程时,非易失性存储设备706的状态可经变换,例如,以保存不同数据。
非易失性存储设备706可以包括可移除的和/或内置的物理设备。非易失性存储设备706可包含光学存储器(例如,CD、DVD、HD-DVD、蓝光光盘等),半导体存储器(例如,ROM、EPROM、EEPROM、闪存存储器等)和/或磁性存储器(例如,硬盘驱动器、软盘驱动器、磁带驱动器、MRAM等)或其它大容量存储装置技术。非易失性存储设备706可以包括非易失性、动态、静态、读/写、只读、顺序访问、位置可寻址、文件可寻址和/或内容可寻址设备。应该认识到,非易失性存储设备706经配置后可以即使在切断非易失性存储设备706的电源时仍保持指令。
易失性存储器704可以包括具有随机存取存储器的物理设备。易失性存储器704通常被逻辑处理器702用来在软件指令的处理期间临时存储信息。应当理解,当切断对易失性存储器704的供电时,易失性存储器704通常不继续存储指令。
逻辑处理器702、易失性存储器704和非易失性存储设备706的各方面可以一起集成到一个或多个硬件-逻辑组件中。此类硬件-逻辑组件可以包括例如现场可编程门阵列(FPGA)、程序及专用集成电路(PASIC/ASIC)、程序及专用标准产品(PSSP/ASSP)、片上系统(SOC)及复杂可编程逻辑装置(CPLD)。
术语“模块”、“程序”和“引擎”可用于描述计算系统700的一方面,计算系统700通常由处理器以软件实现,以使用易失性存储器的部分来执行特定功能,该功能涉及专门配置处理器以执行该功能的变换处理。因此,可以使用易失性存储器704的部分,经由执行非易失性存储设备706所保存的指令的逻辑处理器702来实例化模块、程序或引擎。应当理解,可以从相同的应用、服务、代码块、对象、库、例程、API、函数等来实例化不同的模块、程序和/或引擎。同样地,可以通过不同的应用、服务、代码块、对象、例程、API、函数等来实例化相同的模块、程序和/或引擎。术语“模块”、“程序”和“引擎”可以包括可执行文件、数据文件、库、驱动程序、脚本、数据库记录等的个体或组。
当包括时,显示子系统708可用于呈现非易失性存储设备706所保存的数据的可视表示。可视表示可以采用图形用户界面(GUI)的形式。如本文所描述的方法和过程改变非易失性存储装置所保持的数据,且因此变换非易失性存储装置的状态,可同样变换显示子系统708的状态以在视觉上表示基础数据中的改变。显示子系统708可以包括实际上利用任何类型技术的一个或多个显示设备。此类显示装置可与逻辑处理器702、易失性存储器704和/或非易失性存储设备706组合在共享机柜中,或此类显示装置可为外围显示装置。
当包括输入子系统710时,输入子系统710可以包括或与之接口的一个或多个用户输入设备诸如键盘、鼠标,触摸屏或游戏控制器。在一些实施例中,输入子系统可以包括所选择的自然用户输入(NUI)组件部分或与之接口。这样的组件部分可以是集成的或外围的,并且输入动作的转换和/或处理可以在板上或板外处理。示例NUI组件部分可以包括用于语音和/或话音识别的麦克风;用于机器视觉和/或姿势识别的红外、彩色、立体和/或深度相机;用于运动检测和/或意图识别的头部跟踪器、眼睛跟踪器、加速度计和/或陀螺仪;以及用于评估大脑活动的电场感测部件;和/或任何其他合适的传感器。
当被包括时,通信子系统712可被配置为将本文的各种计算设备彼此通信地耦合,以及与其它设备通信地耦合。通信子系统712可以包括与一个或多个不同通信协议兼容的有线和/或无线通信设备。作为非限制性示例,通信子系统可以被配置用于经由无线电话网络,或有线或无线局域网或广域网(诸如Wi-Fi连接上的HDMI)进行通信。在一些实施例中,通信子系统可允许计算系统700经由诸如因特网等网络向其它设备发送消息和/或从其它设备接收消息。
以下段落提供了对本申请的权利要求的附加支持。一个方面提供了一种包括至少一个处理器的计算机系统,至少一个处理器被配置为执行托管虚拟机,托管虚拟机被配置为托管与至少一个客户端计算机设备的会话。至少一个处理器还被配置为:执行被配置为访问来自远程媒体源的媒体内容Web浏览器应用,从远程媒体源以媒体容器格式接收经编码媒体内容,以及执行多媒体重定向模块,多媒体重定向模块被配置为拦截经编码媒体内容由Web浏览器应用的解码模块处理。多媒体重定向模块被配置为将经编码媒体内容重定向到至少一个客户端计算机设备。在该方面,附加地或备选地,经编码媒体内容可以是动态流式媒体内容。在此方面中,附加地或备选地,经编码媒体内容可以以如下媒体容器格式被接收:包括视频流、音频流和文本流中的一项或多项,且至少一个处理器可以被配置为将媒体容器格式的经编码媒体内容解复用为经编码媒体内容的独立流。在该方面,附加地或备选地,经编码媒体内容的独立流可以包括视频流、音频流和文本流中的一项或多项。在该方面,附加地或备选地,多媒体重定向模块可以被配置为缓冲经编码媒体内容的独立流,并响应于从至少一个客户端计算机设备接收到对媒体样本的请求,向至少一个客户端计算机设备发送经编码媒体内容的所缓冲的独立流的媒体样本。在该方面,附加地或备选地,多媒体重定向模块可以被配置为:基于从至少一个客户端计算机设备接收到的对媒体样本的请求,以独立速率针对经编码媒体内容的独立流中的每个独立流发送媒体样本。在该方面中,附加地或备选地,至少一个处理器可以被配置为:基于一个或多个受监测参数来确定是执行多媒体重定向模块以拦截经编码媒体内容还是允许经编码媒体内容由Web浏览器应用的解码模块来处理。在该方面,附加地或备选地,一个或多个受监测参数可以选自包括以下的组:计算机系统与至少一个客户端计算机设备之间的网络参数、计算机系统的至少一个处理器的当前处理负载、经编码媒体内容的大小、以及至少一个客户端计算机设备的用户设置。在该方面中,附加地或替换地,由至少一个处理器执行的托管虚拟机可以包括多会话操作系统,其被配置为并发地托管针对多个客户端计算机设备的多个会话。在该方面中,附加地或替换地,至少一个处理器可以被配置为:基于由多会话操作系统托管的多个会话的聚合活动来确定是否执行多媒体重定向模块。
另一方面提供了一种方法,包括:在服务器设备的处理器处,执行托管虚拟机,托管虚拟机被配置为托管与至少一个客户端计算机设备的会话;执行被配置为访问来自远程媒体源的媒体内容的Web浏览器应用;从远程媒体源以媒体容器格式接收经编码媒体内容;以及执行多媒体重定向模块,多媒体重定向模块被配置为拦截经编码媒体内容由Web浏览器应用的解码模块处理。多媒体重定向模块被配置为将经编码媒体内容重定向到至少一个客户端计算机设备。在该方面,附加地或备选地,经编码媒体内容可以是动态流式媒体内容。在该方面中,附加地或备选地,经编码媒体内容可以以如下媒体容器格式被接收:包括视频流、音频流和文本流中的一项或多项,且该方法还可以包括将媒体容器格式的经编码媒体内容解复用为经编码媒体内容的独立流。在该方面,附加地或备选地,经编码媒体内容的独立流可以包括视频流、音频流和文本流中的一项或多项。在该方面,附加地或备选地,该方法还可以包括缓冲经编码媒体内容的独立流,并响应于从至少一个客户端计算机设备接收到对媒体样本的请求,向至少一个客户端计算机设备发送经编码媒体内容的所缓冲的独立流的媒体样本。在该方面,附加地或备选地,该方法还可以包括:基于从至少一个客户端计算机设备接收到的对媒体样本的请求,以独立速率针对经编码媒体内容的独立流中的每个独立流发送媒体样本。在该方面中,附加地或备选地,该方法还可以包括:基于一个或多个受监测参数来确定是执行多媒体重定向模块以拦截经编码媒体内容还是允许经编码媒体内容由Web浏览器应用的解码模块来处理。在该方面,附加地或备选地,一个或多个受监测参数可以选自包括以下的组:服务器设备与至少一个客户端计算机设备之间的网络参数、服务器设备的至少一个处理器的当前处理负载、经编码媒体内容的大小、以及至少一个客户端计算机设备的用户设置。在该方面中,附加地或替换地,托管虚拟机可以包括多会话操作系统,其被配置为并发地托管针对多个客户端计算机设备的多个会话。
另一个方面提供了一种服务器系统,该服务器系统包括至少一个处理器,其被配置为执行实现多会话操作系统的托管虚拟机,托管虚拟机被配置为并发地托管针对多个客户端计算机设备的多个会话。至少一个处理器还被配置为:执行针对多个会话中的一个或多个会话的Web浏览器应用的实例。Web浏览器应用被配置为从远程媒体源接收经编码媒体内容。处理器还被配置为确定针对托管虚拟机的多个会话的聚合活动高于阈值水平,基于所确定的聚合活动来启用针对多个会话中的一个或多个会话的多媒体重定向,以及执行多媒体重定向模块,多媒体重定向模块被配置为拦截经编码媒体内容由Web浏览器应用的解码模块处理。多媒体重定向模块被配置为将经编码媒体内容重定向到多个会话中的一个或多个会话的相应的客户端计算机设备。
应当理解,这里描述的配置和/或方法本质上是示例性的,并且这些特定实施例或示例不应被认为是限制性的,因为许多变化是可能的。这里描述的特定例程或方法可以表示任何数量的处理策略中的一个或多个。因此,所示和/或的各种动作可以以所示和/或的顺序、以其它顺序、并行地或省略地执行。同样,可以改变上述过程的顺序。
本公开的主题包括本文公开的各种过程、系统和配置以及其他特征,功能、动作和/或属性的所有新颖和非显而易见的组合和子组合,以及其任何和所有等同物。
Claims (15)
1.一种计算机系统,包括:
至少一个处理器,被配置为执行托管虚拟机,所述托管虚拟机被配置为托管与至少一个客户端计算机设备的会话,其中所述至少一个处理器还被配置为:
执行被配置为访问来自远程媒体源的媒体内容的Web浏览器应用;
从所述远程媒体源以媒体容器格式接收经编码媒体内容;以及
执行多媒体重定向模块,所述多媒体重定向模块被配置为拦截所述经编码媒体内容由所述Web浏览器应用的解码模块处理,其中所述多媒体重定向模块被配置为将所述经编码媒体内容重定向到所述至少一个客户端计算机设备。
2.根据权利要求1所述的计算机系统,其中所述经编码媒体内容是动态流式媒体内容。
3.根据权利要求1所述的计算机系统,其中所述经编码媒体内容以如下所述媒体容器格式被接收:包括视频流、音频流和文本流中的一项或多项,并且
其中所述至少一个处理器被配置为:将所述媒体容器格式的所述经编码媒体内容解复用为经编码媒体内容的独立流。
4.根据权利要求3所述的计算机系统,其中经编码媒体内容的所述独立流包括所述视频流、音频流和所述文本流中的一项或多项。
5.根据权利要求3的计算机系统,其中所述多媒体重定向模块被配置为:
缓冲经编码媒体内容的所述独立流;以及
响应于从所述至少一个客户端计算机设备接收到对所述媒体采样的请求,向所述至少一个客户端计算机设备发送经编码媒体内容的所缓冲的所述独立流的媒体样本。
6.根据权利要求5所述的计算机系统,其中所述多媒体重定向模块被配置为:基于从所述至少一个客户端计算机设备接收到的对所述媒体样本的请求,以独立速率针对经编码媒体内容的所述独立流中的每个独立流发送媒体样本。
7.根据权利要求1所述的计算机系统,其中所述至少一个处理器被配置为:基于一个或多个受监测参数来确定是执行所述多媒体重定向模块以拦截所述经编码媒体内容还是允许所述经编码媒体内容由所述Web浏览器应用的所述解码模块来处理。
8.根据权利要求7所述的计算机系统,其中所述一个或多个受监测参数选自包括以下的组:所述计算机系统与所述至少一个客户端计算机设备之间的网络参数、所述计算机系统的所述至少一个处理器的当前处理负载、所述经编码媒体内容的大小、以及所述至少一个客户端计算机设备的用户设置。
9.根据权利要求7所述的计算机系统,其中由所述至少一个处理器执行的所述托管虚拟机包括多会话操作系统,所述多会话操作系统被配置为并发地托管针对多个客户端计算机设备的多个会话。
10.根据权利要求9所述的计算机系统,其中所述至少一个处理器被配置为:基于由所述多会话操作系统托管的所述多个会话的聚合活动来确定是否执行所述多媒体重定向模块。
11.一种方法,包括:
在服务器设备的处理器处:
执行托管虚拟机,所述托管虚拟机被配置为托管与至少一个客户端计算机设备的会话;
执行被配置为访问来自远程媒体源的媒体内容的Web浏览器应用;
从所述远程媒体源以媒体容器格式接收经编码媒体内容;以及
执行多媒体重定向模块,所述多媒体重定向模块被配置为拦截所述经编码媒体内容由所述Web浏览器应用的解码模块处理,其中所述多媒体重定向模块被配置为将所述经编码媒体内容重定向到所述至少一个客户端计算机设备。
12.根据权利要求11所述的方法,其中所述经编码媒体内容以如下所述媒体容器格式被接收:包括视频流、音频流和文本流中的一项或多项,并且
其中所述方法还包括:将所述媒体容器格式的所述经编码媒体内容解复用为经编码媒体内容的独立流。
13.根据权利要求12所述的方法,还包括:
缓冲经编码媒体内容的所述独立流;以及
响应于从所述至少一个客户端计算机设备接收到对所述媒体采样的请求,向所述至少一个客户端计算机设备发送经编码媒体内容的所缓冲的所述独立流的媒体样本。
14.根据权利要求13所述的方法,还包括:基于从所述至少一个客户端计算机设备接收到的对所述媒体样本的请求,以独立速率针对经编码媒体内容的所述独立流中的每个独立流发送媒体样本。
15.根据权利要求11所述的方法,还包括:基于一个或多个受监测参数来确定是执行所述多媒体重定向模块以拦截所述经编码媒体内容还是允许所述经编码媒体内容由所述Web浏览器应用的所述解码模块来处理。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/733,183 US11012498B1 (en) | 2020-01-02 | 2020-01-02 | Web browser multi-media redirection |
US16/733,183 | 2020-01-02 | ||
PCT/US2020/062449 WO2021137983A1 (en) | 2020-01-02 | 2020-11-26 | Web browser multi-media redirection |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114902686A true CN114902686A (zh) | 2022-08-12 |
Family
ID=74003876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080091683.XA Pending CN114902686A (zh) | 2020-01-02 | 2020-11-26 | Web浏览器多媒体重定向 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11012498B1 (zh) |
EP (1) | EP4085641A1 (zh) |
JP (1) | JP2023509621A (zh) |
CN (1) | CN114902686A (zh) |
WO (1) | WO2021137983A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11012498B1 (en) * | 2020-01-02 | 2021-05-18 | Microsoft Technology Licensing, Llc | Web browser multi-media redirection |
US11012485B1 (en) * | 2020-01-02 | 2021-05-18 | Microsoft Technology Licensing, Llc | Multi-media redirection for media applications |
US11516519B1 (en) * | 2021-07-14 | 2022-11-29 | Couple.com, Inc. | Interactive video-based speed-dating platform and system for providing an immersive online-streaming production |
CN114390313B (zh) * | 2021-12-01 | 2024-02-13 | 湖南麒麟信安科技股份有限公司 | 一种浏览器HTML5 Video标签音视频重定向的方法及系统 |
CN115278366B (zh) * | 2022-09-28 | 2023-03-24 | 天津卓朗昆仑云软件技术有限公司 | 虚拟机视频流的数据处理方法、装置以及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106034241A (zh) * | 2015-03-19 | 2016-10-19 | 华为技术有限公司 | 一种多媒体重定向的方法、设备和系统 |
CN107924318A (zh) * | 2015-08-14 | 2018-04-17 | 微软技术许可有限责任公司 | 基于web浏览器的桌面和应用远程处理解决方案 |
US20180349283A1 (en) * | 2017-06-03 | 2018-12-06 | Vmware, Inc. | Video redirection in virtual desktop environments |
CN109074274A (zh) * | 2016-05-23 | 2018-12-21 | 思杰系统有限公司 | 虚拟浏览器集成 |
CN109088887A (zh) * | 2018-09-29 | 2018-12-25 | 北京金山云网络技术有限公司 | 一种流媒体解码的方法及装置 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020116708A1 (en) * | 2000-12-11 | 2002-08-22 | Morris Richard M. | User interface for a streaming media client |
US8170123B1 (en) * | 2008-04-15 | 2012-05-01 | Desktone, Inc. | Media acceleration for virtual computing services |
US8793331B2 (en) * | 2008-05-16 | 2014-07-29 | Wyse Technology L.L.C. | Multimedia redirection |
US20130088569A1 (en) * | 2011-10-10 | 2013-04-11 | Global Development Holding Ltd. | Apparatuses, methods and systems for provision of 3d content over a communication network |
US10147115B1 (en) * | 2012-03-28 | 2018-12-04 | Vmware, Inc. | Displaying supplemental messages including advertisements or security notifications in a virtual desktop environment |
US9292060B1 (en) | 2012-06-28 | 2016-03-22 | Amazon Technologies, Inc. | Allowing clients to limited control on power consumed by the cloud while executing the client's tasks |
CN104040995B (zh) * | 2012-12-07 | 2017-04-12 | 华为技术有限公司 | 多媒体重定向方法以及多媒体服务器以及计算机系统 |
US9124668B2 (en) * | 2013-05-20 | 2015-09-01 | Citrix Systems, Inc. | Multimedia redirection in a virtualized environment using a proxy server |
US9510024B2 (en) * | 2014-09-12 | 2016-11-29 | Spotify Ab | System and method for early media buffering using prediction of user behavior |
US10924781B2 (en) * | 2014-06-27 | 2021-02-16 | Satellite Investors, Llc | Method and system for real-time transcoding of MPEG-DASH on-demand media segments while in transit from content host to dash client |
US10623454B2 (en) * | 2015-10-13 | 2020-04-14 | Dell Products L.P. | System and method for multimedia redirection for cloud desktop conferencing |
US10044788B2 (en) * | 2015-11-17 | 2018-08-07 | Wyse Technology L.L.C. | Native client multimedia redirection |
US10587842B1 (en) * | 2016-11-18 | 2020-03-10 | Ale International | Videoconference server, client device, videoconference system and method |
US11089349B2 (en) * | 2017-01-20 | 2021-08-10 | Hanwha Techwin Co., Ltd. | Apparatus and method for playing back and seeking media in web browser |
US10979785B2 (en) * | 2017-01-20 | 2021-04-13 | Hanwha Techwin Co., Ltd. | Media playback apparatus and method for synchronously reproducing video and audio on a web browser |
US10742706B1 (en) * | 2017-03-20 | 2020-08-11 | Amazon Technologies, Inc. | Server-side rate control for adaptive bitrate streaming protocols |
GB2562307A (en) * | 2017-05-12 | 2018-11-14 | Sky Cp Ltd | Media content delivery |
US10523727B2 (en) * | 2017-12-28 | 2019-12-31 | Sling Media Pvt Ltd | Adaptive bitrate optimization upon video streaming initialization |
US10742725B2 (en) | 2018-05-04 | 2020-08-11 | Citrix Systems, Inc. | Detection and repainting of semi-transparent overlays |
US10819817B2 (en) * | 2019-02-04 | 2020-10-27 | Dell Products L.P. | HTML5 multimedia redirection |
US11012498B1 (en) * | 2020-01-02 | 2021-05-18 | Microsoft Technology Licensing, Llc | Web browser multi-media redirection |
US11012485B1 (en) * | 2020-01-02 | 2021-05-18 | Microsoft Technology Licensing, Llc | Multi-media redirection for media applications |
-
2020
- 2020-01-02 US US16/733,183 patent/US11012498B1/en active Active
- 2020-11-26 CN CN202080091683.XA patent/CN114902686A/zh active Pending
- 2020-11-26 JP JP2022539663A patent/JP2023509621A/ja active Pending
- 2020-11-26 WO PCT/US2020/062449 patent/WO2021137983A1/en unknown
- 2020-11-26 EP EP20829065.0A patent/EP4085641A1/en active Pending
-
2021
- 2021-05-06 US US17/302,571 patent/US11588881B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106034241A (zh) * | 2015-03-19 | 2016-10-19 | 华为技术有限公司 | 一种多媒体重定向的方法、设备和系统 |
CN107924318A (zh) * | 2015-08-14 | 2018-04-17 | 微软技术许可有限责任公司 | 基于web浏览器的桌面和应用远程处理解决方案 |
CN109074274A (zh) * | 2016-05-23 | 2018-12-21 | 思杰系统有限公司 | 虚拟浏览器集成 |
US20180349283A1 (en) * | 2017-06-03 | 2018-12-06 | Vmware, Inc. | Video redirection in virtual desktop environments |
CN109088887A (zh) * | 2018-09-29 | 2018-12-25 | 北京金山云网络技术有限公司 | 一种流媒体解码的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US11012498B1 (en) | 2021-05-18 |
US11588881B2 (en) | 2023-02-21 |
US20210258369A1 (en) | 2021-08-19 |
JP2023509621A (ja) | 2023-03-09 |
WO2021137983A1 (en) | 2021-07-08 |
EP4085641A1 (en) | 2022-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11588881B2 (en) | Web browser multi-media redirection | |
US11588875B2 (en) | Multi-media redirection for media applications | |
CA2814420C (en) | Load balancing between general purpose processors and graphics processors | |
US9485305B2 (en) | API platform that includes server-executed client-based code | |
US9930308B2 (en) | Platform-agnostic video player for mobile computing devices and desktop computers | |
US8621069B1 (en) | Provisioning a computing application executing on a cloud to a client device | |
US9203883B2 (en) | Systems and methods for a client-side remote presentation of a multimedia stream | |
WO2021159770A1 (zh) | 视频播放方法、装置、设备和存储介质 | |
JP2018504193A (ja) | クラウドゲーミングに関するゲームステートセーブ、転送および再開 | |
WO2018119711A1 (zh) | 多操作系统多媒体编解码方法、装置及电子设备 | |
US9948691B2 (en) | Reducing input processing latency for remotely executed applications | |
TW201443662A (zh) | 動態修改到用戶端裝置與執行於代表用戶端裝置的資料伺服器上的應用程式相關聯的資料傳輸之訊框率 | |
US9497238B1 (en) | Application control translation | |
US11838589B2 (en) | Port-connected television upgrader device | |
US20180227347A1 (en) | Virtualizing audio and video devices using synchronous a/v streaming | |
US20200107073A1 (en) | Usb-based media device upgrading system | |
KR20140102838A (ko) | 클라우드 스트리밍 서비스를 제공하기 위한 장치, 이를 위한 방법 및 이를 위한 시스템 | |
KR20170105317A (ko) | 하드웨어 기반의 gpu를 이용한 가상머신의 화면 전송 방법 및 이를 이용한 장치 | |
US10306021B1 (en) | Streaming content to multiple clients | |
US20140282535A1 (en) | Unknown | |
WO2023098163A1 (zh) | 应用处理方法、系统、电子设备和计算机可读存储介质 | |
KR20240098763A (ko) | DaaS를 위한 서버 장치 및 이의 동작 방법 | |
Rodríguez‐Silva et al. | Improving the virtualization of rich applications by combining VNC and streaming protocols at the hypervisor layer | |
KR20110006979A (ko) | 터미널 서비스의 가속화를 위한 멀티미디어 재생 분산처리 시스템 및 그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |