CN102741830A - 用于多媒体流的客户机侧远程呈现的系统和方法 - Google Patents

用于多媒体流的客户机侧远程呈现的系统和方法 Download PDF

Info

Publication number
CN102741830A
CN102741830A CN2010800633061A CN201080063306A CN102741830A CN 102741830 A CN102741830 A CN 102741830A CN 2010800633061 A CN2010800633061 A CN 2010800633061A CN 201080063306 A CN201080063306 A CN 201080063306A CN 102741830 A CN102741830 A CN 102741830A
Authority
CN
China
Prior art keywords
medium data
calculation element
application
carrying
multimedia
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.)
Granted
Application number
CN2010800633061A
Other languages
English (en)
Other versions
CN102741830B (zh
Inventor
G·莫姆驰劳威
T·吉埃伯乐
M·塔巴雷斯
J·萨莫斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN102741830A publication Critical patent/CN102741830A/zh
Application granted granted Critical
Publication of CN102741830B publication Critical patent/CN102741830B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/765Media network packet handling intermediate

Abstract

代理流模块在第一计算机器上执行以流式传输来自虚通道的多媒体数据,所述虚通道建立在第一计算机器和第二计算机器之间。在某些情况下,多媒体数据是由与第二计算机器通信的多媒体装置产生的。代理流模块将多媒体数据转发到在第一计算机器上执行的展示应用。然后,在第一计算机器上执行的远程处理应用在展示应用呈现该多媒体数据的同时捕获由该展示应用产生的应用输出。接着,远程处理应用将该应用输出传输到第二计算机器,第二计算机器在应用输出窗口中显示该应用输出。

Description

用于多媒体流的客户机侧远程呈现的系统和方法
相关申请
本申请要求2009年12月8日提交的、标题为“Systems and Methods forRemotely Presenting a Multimedia System”的美国临时专利申请No.61/267,686的优先权,通过引用将其整体包含于此。
技术领域
本申请总的涉及远程地提供数据。更具体地,本申请涉及远程地提供由多媒体装置产生的多媒体数据。
背景技术
在过去的几年里,对视频会议应用的需求一直在稳定增长。通常,视频会议要求大量的带宽并受制于质量差、延迟和其他类似问题。许多新的技术已经被引入来减少在过去视频会议应用中固有的一些用户体验问题,这些新的技术包括视频编解码器和抗抖动算法和协议。这些新的技术已允许公司依赖视频会议作为与雇员、销售商和客户远程地通信的工具而同时减少了差旅成本。
在许多情况下,雇员不能本地访问视频会议或其他多媒体应用。而且,许多公司可能要求雇员使用仅在公司的内部网络上可用的特定视频会议或多媒体应用。在这些情景中,远程地工作的雇员不能访问所要求的应用。因此,需要一种解决方案,用户通过该解决方案能访问远程显示应用以显示由位于远离该显示应用的位置的多媒体装置本地产生的多媒体数据。类似地,需要一种解决方案,用户通过该解决方案能在本地显示应用上接收和显示多媒体数据,其中该多媒体数据是由位于远离该显示应用的位置的多媒体装置远程地产生的。
尽管存在许多不同的方法来允许多媒体输出的远程显示,但这些解决方案都没有利用减少在远程多媒体显示应用中通常存在的不理想的质量的多媒体处理的技术进步。因此,需要一种利用如上所述的那些多媒体处理技术的解决方案。
发明内容
此处所述的方法和系统是用于远程地提供多媒体数据的方法和系统的实施例。连接到多媒体装置的客户计算机的用户通常可能希望使用在远程服务器上远程地执行的应用来显示或以其他方式修改由该多媒体装置产生的输出。在许多情况下,可以经由瘦客户端协议来提供对该应用的访问。该应用经由虚通道接收来自客户计算机的多媒体输出,客户计算机可以通过该虚通道使用瘦客户端协议传输多媒体输出。将多媒体数据从一个计算机传输到另一个计算机对于这两个系统可能是繁重的,因为多媒体数据可能要求大量的存储资源、计算(例如,CPU)资源、内存资源和带宽资源。
在一个方面,此处描述的是用于远程地呈现由连接到第二计算机器的多媒体装置产生的多媒体数据的方法。该方法包括流式传输来自在第一计算机器和第二计算机器之间所建立的虚通道的多媒体数据,其中所述该多媒体数据是由与第二计算机器通信的多媒体装置所产生的。由在第一计算机器上执行的代理流模块流式传输该多媒体数据,并且将该多媒体数据转发到在第一计算机器上执行的展示应用。在第一计算机器上执行的第一远程处理应用可以捕获在多媒体数据展示期间由该展示应用产生的应用输出。第一远程处理应用也可以将该应用输出传输到第二计算机器,然后第二计算机器可以在应用输出窗口中显示该应用输出。
在一些实施例中,代理流模块响应于接收来自第二计算机器的用户的、执行该展示应用的请求来流式传输该多媒体数据。
在其他实施例中,在第二计算机器上执行的第二远程处理应用可以通过虚通道将来自第二计算机器的多媒体数据传输到第一计算机器。
在一个实施例中,在第二计算机器上执行的流模块流式传输来自多媒体装置接口的多媒体数据,并且将该多媒体数据流式传输到在第二计算机器上执行的远程处理应用。
其他实施例包括在第二计算机器上执行的编码器,以便在将多媒体数据传输到第一计算机器之前对该多媒体数据进行编码。其他实施例还包括在第二计算机器上执行的加密代理,以便在将多媒体数据传输到第一计算机器之前对该多媒体数据进行加密。
在一些实施例中,远程处理应用在将多媒体数据传输到第一计算机器之前,将多媒体数据封装在协议包装器中。
在一些实施例中,在第一计算机器上执行的解码器可以在将多媒体数据转发到展示应用之前对多媒体数据进行解码。在一些实施例中,解码器可以包括解密代理。
在其他实施例中,远程处理应用在将多媒体数据转发到展示应用之前,可以不对多媒体数据进行封装。
在一些实施例中,所述展示应用可将多媒体数据存储在存储库中。
在又一个方面,此处描述的是用于远程地呈现由连接到第二计算机器的多媒体装置产生的多媒体数据的系统。在一些实施例中,该系统可以包括第一计算机器和第二计算机器,所述第二计算机器通过在第一计算机器和第二计算机器之间建立的虚通道与第一计算机器进行通信。该系统还可包括与第二计算机器通信的多媒体装置,和在第一计算机器上执行以流式传输来自虚通道的多媒体数据的代理流模块。在一些实施例中,多媒体数据是由多媒体装置产生的,并且由代理流模块转发到在第一计算机器上执行的展示应用。在第一计算机器上执行的远程处理应用可以捕获在多媒体数据展示期间由该展示应用所产生的应用输出,并且将该应用输出传输到第二计算机器。
在一些实施例中,第二计算机器可以在应用输出窗口中显示该应用输出。
在又一个实施例中,第二计算机器可以在应用输出窗口中直接或本地显示由本地多媒体装置捕获的多媒体数据。
在一个方面,本申请涉及用于由在远程计算装置上执行的应用在本地计算装置上显示由连接到本地计算装置的多媒体装置产生的多媒体数据的方法。远程计算装置可以经由虚通道与本地计算装置通信。在远程计算装置上执行的代理流模块可以流式传输经由虚通道从本地计算装置接收的多媒体数据。该多媒体数据可以是由与本地计算装置关联的多媒体装置产生的。代理流模块可以将多媒体数据转发到在远程计算装置上执行的展示应用,所述展示应用产生多媒体应用输出。在远程计算机器上执行的远程处理应用可以捕获所产生的多媒体应用输出。在远程计算装置上执行的远程处理应用可以将该所产生的多媒体应用输出传输到本地计算装置,用于在本地计算装置的应用输出窗口中进行显示。
在一些实施例中,响应于接收来自本地计算装置的用户的、执行展示应用的请求来流式传输多媒体数据。在其他实施例中,在本地计算装置上执行的本地流模块经由虚通道将多媒体数据传输到远程计算装置。在另外的实施例中,在本地计算装置上执行的本地流模块流式传输来自多媒体装置接口的多媒体数据。在本地计算装置上执行的本地流模块可以将多媒体数据流式传输到在本地计算装置上执行的本地远程处理应用。
在一些实施例中,在本地计算装置上执行的编码器在将多媒体数据传输到远程计算装置之前对多媒体数据进行编码。在另外的实施例中,在远程计算装置上执行的解码器在将多媒体数据转发到展示应用之前对多媒体数据进行解码。在一些实施例中,在本地计算装置上的本地远程处理应用构造分组以将多媒体数据包含在协议包装器中,之后将包含该多媒体数据的分组传输到远程计算装置。在另外的实施例中,在远程计算装置上执行的远程处理应用在将多媒体数据转发到展示应用之前,解构该分组以从该分组提取多媒体数据。在另外的实施例中,在本地计算装置上执行的编码器在将多媒体数据传输到远程计算装置之前对多媒体数据进行加密。在另外的实施例中,在远程计算装置上执行的解码器在将多媒体数据转发到展示应用之前对多媒体数据进行解密。在一些实施例中,所述展示应用将多媒体数据存储在存储库中。
在一些方面,本公开涉及用于由在远程计算装置上执行的应用在本地计算装置上进行显示的系统。多媒体数据可以是由连接到本地计算装置的多媒体装置产生的。远程计算装置可以经由虚通道与本地计算装置进行通信。该系统可包括本地计算装置。该系统还可包括与本地计算装置通信的多媒体装置,该多媒体装置产生多媒体数据。该系统还可包括远程计算装置,其寄载代理流模块的执行以经由虚通道流式传输从本地计算装置接收的多媒体数据。远程计算装置可以将多媒体数据转发到在远程计算装置上执行的展示应用。该展示应用可以产生多媒体应用输出。远程处理应用可以捕获所产生的多媒体应用输出,并且将该多媒体应用输出传输到本地计算装置,用于在本地计算装置的应用输出窗口中进行显示。
在一些实施例中,代理流模块响应于接收来自本地计算装置的用户的、执行展示应用的请求来流式传输该多媒体数据。在其他实施例中,在本地计算装置上执行的本地远程处理应用通过虚通道将多媒体数据传输到远程计算装置。在另外的实施例中,在本地计算装置上执行的流模块将来自多媒体接口的多媒体数据流式传输到在本地计算装置上执行的远程应用。
在一些实施例中,在本地计算装置上执行的编码器在将多媒体数据传输到远程计算装置之前对多媒体数据进行编码。在另外的实施例中,在远程计算装置上执行的解码器在将多媒体数据转发到展示应用之前对多媒体数据进行解码。在其他实施例中,在本地计算装置上执行的本地远程处理应用构造分组以将多媒体数据包含在协议包装器中,之后将包含该多媒体数据的分组传输到远程计算装置。在另外的实施例中,在远程计算装置上执行的远程处理应用在将多媒体数据转发到展示应用之前,通过从该分组提取多媒体数据来解构该分组。在另外的实施例中,展示应用将多媒体数据存储在存储库中。
在一些方面,本公开涉及用于由在远程服务器上执行的应用在客户机装置上显示由连接到客户机装置的多媒体装置产生的多媒体数据的方法。客户机装置的一个或多个过滤器可以将多媒体数据转换为符合在客户机装置和远程服务器之间所建立的虚通道的协议。在客户机装置上执行的流模块可以经由所述虚通道将压缩的多媒体数据转发到远程服务器。在远程服务器上执行的代理流模块可以经由虚通道流式传输从客户机装置接收的多媒体数据。代理流模块可以将多媒体数据转发到在远程服务器上执行的展示应用。在远程服务器上执行的远程处理应用可以捕获在多媒体数据展示期间由该展示应用产生的应用输出。在远程计算装置上执行的远程应用可以将应用输出传输到本地计算装置。客户机装置可以在应用输出窗口中显示该应用输出。
在一些方面,本公开涉及用于由在一个或多个远程服务器上执行的一或多个应用在多个客户机装置上显示由连接到所述远程客户机装置的每一个的多媒体装置产生的多媒体数据的方法和系统。例如,两个或多个客户机可能希望经由通过在一个或多个远程服务器上执行的一个或多个远程应用上处理来自这些摄像头的数据来使用它们本地连接的网络摄像头的音频/视频会议互相通信。
在这样的实施例中,第一多媒体数据是由连接到第一客户机计算装置的多媒体装置产生的。第二多媒体数据可以是由连接到第二客户机计算装置的第二多媒体装置产生的。第一和第二客户机计算装置可以是各自经由一个或多个虚通道与远程服务器进行通信。在远程服务器上执行的第一代理流模块可以流式传输经由第一虚通道从第一客户机计算装置接收的多媒体数据。在远程服务器上执行的第二代理流模块可以流式传输经由第二虚通道从第二客户机计算装置接收的多媒体数据。在一些实施例中,单个代理流模块流式传输来自第一和第二客户机计算装置的多媒体数据。该一个或多个代理流模块可以将经由一个或多个虚通道从第一和第二客户机接收的多媒体数据转发到在远程计算装置上执行的展示应用。该展示应用可以产生第一多媒体数据的第一多媒体应用输出和第二多媒体数据的第二多媒体数据应用输出。在一些实施例中,多个展示应用产生第一和第二多媒体应用输出。
在远程计算装置上执行的第一远程处理应用可以捕获对于第一客户机所产生的第一多媒体应用输出。在远程计算装置上执行的第二远程处理应用可以捕获对于第二客户机所产生的第二多媒体应用输出。在远程计算装置上执行的第一远程处理应用可以将所产生的第一多媒体应用输出传输到第一客户机。在远程计算装置上执行的第二远程处理应用可以将所产生的第二多媒体应用输出传输到第二客户机。第一客户机可以在第一客户机上的应用输出窗口中显示所产生的第一多媒体应用输出。第二客户机可以在第二客户机上的应用输出窗口中显示所产生的第二多媒体应用输出。
然而,在一些实施例中,第一和第二客户机可以各自接收和显示所产生的第一和第二多媒体应用输出。例如,第一客户机可以从第一和第二远程处理应用接收第一和第二所产生的多媒体应用输出。类似地,第二客户机可以接收所产生的第一和第二多媒体应用输出。在这样的实施例中,第一客户机在一个或多个本地应用输出窗口中显示所产生的第一多媒体应用输出和第二多媒体应用输出。第二客户机也可以在一个或多个本地应用输出窗口中显示所产生的第一多媒体应用输出和第二多媒体应用输出。第一客户机和第二客户机因此可以实现音频/视频会议,同时通过在一个或多个远程服务器上执行的一个或多个应用处理由这两个客户机的本地连接的多媒体捕获装置产生的音频/视频数据。
在一些实施例中,远程服务器包括用来自远程客户机的多媒体数据启用展示应用的操作的一个或过个过滤器或功能。一个或多个过滤器可包括或利用代理流模块和远程处理应用中的任何一个来确保展示应用将来自远程客户机的每一个的多媒体数据看作由本地连接的多媒体捕获装置产生的多媒体数据来进行处理。例如,一个或多个过滤器可以使展示应用将该一个或多个过滤器注册为本地连接到远程客户机或服务器的多媒体捕获装置,例如网络摄像头。可以被设计为仅仅与本地连接的多媒体捕获装置一起操作的展示应用可以继续与连接到远程客户机的多媒体捕获装置一起操作而无需对该展示应用的任何修改。展示应用可以以其与本地连接的多媒体捕获装置通信的方式来对待一个或多个过滤器并与其通信。
类似地,在客户机侧,客户机可以包括一个或多个过滤器或功能,所述过滤器或功能使客户机能够接收由本地连接的多媒体捕获装置产生的多媒体数据并且将所接收的多媒体数据传输到远程服务器。该一个或多个过滤器也可以使客户机能从远程服务器接收所产生的多媒体应用输出并且本地显示该所接收的所产生的多媒体应用输出。一个或多个过滤器可以满足在远程服务器上执行的展示应用的所有需求。在客户机侧和服务器侧的一个或多个过滤器可以使客户机和服务器能够对从本地存储的多媒体捕获装置接收的多媒体数据以其可以被在远程服务器上执行的展示应用接收、处理和传输的方式来进行处理、修改和/或编辑。
在一些方面,本公开涉及用于由在远程计算装置上执行的应用在本地计算装置上显示由连接到本地计算装置的多媒体装置产生的多媒体数据的方法。远程计算装置可以经由虚通道与本地计算装置通信。本地计算装置可以经由虚通道将多媒体数据流式传输到远程计算装置。多媒体数据可以是由与本地计算装置关联的多媒体装置产生的,并且包括对在远程计算装置上执行的展示应用的输入。响应于所传输的多媒体数据,从远程计算装置接收由展示应用所产生的应用输出。所接收的应用输出可包括由多媒体装置产生的多媒体数据和由第三计算装置所产生的第二多媒体数据流。
在一些实施例中,响应于接收来自本地计算装置的用户的、执行展示应用的请求来流式传输多媒体数据。在一些实施例中,在本地计算装置上执行的本地流模块经由虚通道将多媒体数据传输到远程计算装置。在本地计算装置上执行的本地流模块可以流式传输来自多媒体装置接口的多媒体数据。在本地计算装置上执行的本地流模块可以将多媒体数据流式传输到在本地计算装置上执行的本地远程处理应用。在一些实施例中,在本地计算装置上执行的编码器在将多媒体数据传输到远程计算装置之前对多媒体数据进行编码。在另外的实施例中,在本地计算装置上的本地远程处理应用构造分组以将多媒体数据包含在协议包装器中,之后将包含该多媒体数据的分组传输到远程计算装置。在其他的实施例中,在本地计算装置上执行的编码器在将多媒体数据传输到远程计算装置之前对多媒体数据进行加密。
在一些方面,本公开涉及用于在系统中使用的本地计算装置,在所述系统中,由在远程计算装置上执行的应用将由连接到本地计算装置的多媒体装置所产生的多媒体数据显示在本地计算装置上。本地计算装置可包括从与本地计算装置关联的多媒体装置获取多媒体数据的多媒体接口。多媒体数据可包括对在远程计算装置上执行的展示应用的输入。本地计算装置也可以包括流模块,其用于经由虚通道将所获取的多媒体数据传输到远程计算装置。本地计算装置还可包括本地代理,其响应于所传输的多媒体数据,从远程计算装置接收由展示应用所产生的应用输出。所接收的应用输出可包括由多媒体装置产生的多媒体数据和由第三计算装置所产生的第二多媒体数据流。该流模块可以响应于接收来自本地计算装置的用户的、执行展示应用的请求来流式传输多媒体数据。该流模块可以在本地计算装置上执行并且流式传输直接来自所述多媒体接口的多媒体数据。
在一些实施例中,在本地计算装置上执行的编码器在向远程计算装置进行传输之前对所获取的多媒体数据进行编码。在其他实施例中,分组引擎在本地计算装置上执行并且构造将所获取的多媒体数据包含在协议包装器中的分组,之后将包含该多媒体数据的分组传输到远程计算装置。
在一些方面,本公开涉及用于在系统中使用的本地计算装置,在所述系统中,由在远程计算装置上执行的应用将由连接到本地计算装置的多媒体装置所产生的多媒体数据显示在本地计算装置上。本地计算装置可包括用于经由虚通道由本地计算装置向远程计算装置流式传输多媒体数据的装置,所述多媒体数据是由与本地计算装置关联的多媒体装置产生的并且包括对在远程计算装置上执行的展示应用的输入。本地计算装置也可以包括用于响应于所传输的多媒体数据,从远程计算装置接收由所述展示应用产生的应用输出的装置,所接收的应用输出包括由多媒体装置产生的多媒体数据和由第三计算装置产生的第二多媒体数据流。
附图说明
下面的附图描述了此处所述的方法和系统的某些说明性实施例,其中相同的附图标记指的是相同的元素。这些所描述的实施例应被理解为是对所公开的方法和系统的说明而不是以任何方式进行的限制。
图1A描述提供对能执行应用程序的计算装置的远程访问的网络环境的实施例。
图1B和图1C描述计算装置的实施例。
图1D示出描述服务器群的实施例的框图。
图2A-2C示出虚拟化环境的实施例的框图。
图3A-3B示出描述远程处理多媒体数据以用于在远程应用中显示的系统的实施例的框图。
图4示出描述获取和远程处理多媒体数据的过程的实施例的流程图。
图5A示出描述获取和传输多媒体数据的方法的实施例的流程图。
图5B示出描述检索和显示多媒体数据的方法的实施例的流程图。
图5C示出用于提供对远程网络装置上桌面音频/视频会议应用的支持的系统的实施例的框图。
图5D示出使远程服务器上的多媒体应用能处理由连接到客户机器的捕获装置产生的音频/视频数据的一个或多个过滤器的实施例的框图。
图5E示出在客户机上处理多媒体数据的ICA引擎的实施例的框图。
图5F示出在远程主服务器上处理来自远程客户机的多媒体数据的应用空间的实施例的框图。
图5G示出用于经由在客户机和主服务器之间的虚通道传送多媒体数据的协议序列的实施例。
具体实施方式
为了阅读下文各种实施例的描述,下述对于说明书的部分以及它们各自内容的描述可能是有用的:
-A部分描述可用于实施此处描述的实施例的网络环境和计算环境;
-B部分描述用于虚拟化计算环境的系统和方法的实施例;以及
-C部分描述用于远程地呈现多媒体数据流的系统和方法的实施例。
A.网络和计算环境
图1A描述了计算环境101的一个实施例,该计算环境包括与一个或多个服务器106A-106N(此处总的被称为“服务器106”)通信的一个或多个客户机102A-102N(此处总的被称为“客户机102”)。在客户机102A-102N与服务器106A-106N之间安装的是网络104。
在一个实施例中,计算环境101可包括在服务器106和客户机102之间安装的设备。该设备管理客户机/服务器连接,并且在某些情况下能够在多个后端服务器之间负载平衡客户机连接。
在一些实施例中,客户机102可被认为是单个客户机102或客户机102的一个组,而服务器106可被认为是单个服务器106或服务器106的一个组。在一个实施例中,单个客户机102与不只一个服务器106通信,在又一个实施例中,单个服务器106与不只一个客户机102通信,而在又一个实施例中,单个客户机102与单个服务器106通信。
在一些实施例中,计算环境之内的客户机102可被称为下面术语中的任何一个:客户机102、客户端、客户计算机、客户装置、客户计算装置、本地机器、远程机器、客户节点、端点、端节点、第二机器、第一机器或第三机器。在一些实施例中,服务器106可被称为下列术语中的任何一个:服务器、本地机器、远程机器、服务器群、主机计算装置、第一机器或第二机器。
在一个实施例中,客户机102可以是虚拟机102C。虚拟机102C可以是任何虚拟机,而在一些实施例中,虚拟机102C可以是由XenSolution、CitrixSystems、IBM、VMware公司开发的管理程序或任何其他管理程序管理的任何虚拟机。在其他实施例中,虚拟机102C可以由任何管理程序管理,而在其他实施例中,虚拟机102C可以由在服务器106上执行的管理程序或在客户机102上执行的管理程序管理。
在一些实施例中,客户机102可以执行、操作或者以其它方式提供应用,该应用可为下列应用中的任何一个:软件、程序、可执行指令、虚拟机、管理程序、web浏览器、基于web的客户端、客户端-服务器应用、瘦客户端计算客户机、ActiveX控件、Java小程序、与类似软IP电话的互联网协议电话(VoIP)通信相关的软件、流式传输视频和/或音频的应用、便于实时数据通信的应用、HTTP客户端、FTP客户端、Oscar客户端、Telnet客户端或任何可执行指令集。在其他实施例中包括显示由在服务器106或其他位于远程的机器上远程地执行的应用产生的应用输出的客户装置102。在这些实施例中,客户装置102能在应用窗口、浏览器或其他输出窗口中显示该应用输出。在一个实施例中,该应用是桌面,而在其他实施例中,该应用是产生桌面的应用。
在一些实施例中,服务器106执行远程呈现客户端或其他客户端或程序,其使用瘦客户端或远程显示协议来捕获由在服务器106上执行的应用产生的显示输出并且将该应用显示输出传输到客户机102。所述瘦客户端或远程显示协议可以是下列协议的任何一个:由位于佛罗里达州Ft.Lauderdale的Citrix Systems有限公司制造的独立计算架构(ICA)协议;或由位于华盛顿州Redmond的微软公司制造的远程桌面协议(RDP)。
在一些实施例中,计算环境101可包括不只一个服务器106A-106N使得服务器106A-106N逻辑上一起聚合到服务器群106中。服务器群106可包括地理上分散并且逻辑上一起聚合到服务器群106中的服务器106,或者可包括互相之间位置接近的且逻辑上一起聚合到服务器群106的服务器106。在一些实施例中,服务器群106中地理上分散的服务器106A-106N可使用WAN、MAN或LAN通信,其中不同地理区域可以被表征为:不同大陆、大陆的不同地区、不同国家、不同州、不同城市、不同校园、不同房间、或前述地理位置的任一组合。在一些实施例中,服务器群106可以作为单个实体被管理,而在其它实施例中,服务器群106可包括多个服务器群106。
在一些实施例中,服务器群106可包括执行大体上相似类型的操作系统平台(例如,由美国华盛顿州Redmond的Microsoft公司制造的WINDOWS NT、UNIX、LINUX或SNOW LEOPARD)的服务器106。在其他实施例中,服务器群106可包括执行第一类型的操作系统平台的第一组服务器106和执行第二类型的操作系统平台的第二组服务器106。在其他实施例中,服务器群106可包括执行不同类型的操作系统平台的服务器106。
在一些实施例中,服务器106可以是任何服务器类型。在其他实施例中,服务器106可以是下列服务器类型的任何一个:文件服务器、应用服务器、web服务器、代理服务器、设备、网络设备、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、SSL VPN服务器、防火墙、web服务器、应用服务器或主应用服务器、执行活动目录的服务器106、执行提供防火墙功能、应用功能或负载平衡功能的应用加速程序的服务器106。在一些实施例中,服务器106可以是包含远程认证拨入用户服务的RADIUS服务器。在服务器106包括设备的实施例中,服务器106可以是由下列制造商的任何一个制造的设备:Citrix应用网络组、Silver Peak Systems公司、RiverbedThechnology公司、F5 Networks公司、或Juniper NetWorks公司。一些实施例中包括第一服务器106A,该第一服务器106A接收来自客户机102的请求、将该请求转发到的第二服务器106B,以及使用来自第二服务器106B的响应来对客户机102所产生的请求进行响应。第一服务器106A能获得对客户机102可用的应用列举以及与寄载由该应用列举所识别的应用的服务器106关联的地址信息。第一服务器106A使用web接口提供对客户机请求的响应;并直接与客户机102通信以向客户机102提供对所识别应用的访问。
在一些实施例中,服务器106可执行下列应用中的任何一个:使用瘦客户端协议来向客户机传输应用显示数据的瘦客户端应用;远程显示展示(presentation)应用;Citrix Systems公司的CITRIX ACCESS SUITE的任何部分,诸如METAFRAM或者CITRIX PRESENTATION SERVER;Microsoft公司制造的MICROSOFT WINDOWS终端服务;或由Citrix Systems公司开发的ICA客户端。又一个实施例中包括作为应用服务器的服务器106,例如:提供电子邮件服务的邮件服务器,例如由Microsoft公司制造的MICROSOFTEXCHANGE;web或Internet服务器;桌面共享服务器;协同服务器;或任何其他类型的应用服务器。在其他实施例中服务器106执行下列类型的所寄载的服务器应用的任何一个:Citrix Online Division公司提供的GOTOMEETING、位于加利福尼亚州Santa Clara的WebEx公司提供的WEBEX,或者Microsoft公司提供的Microsoft Office LIVE MEETING。
在一些实施例中,客户机102可以是寻求对服务器106提供的资源进行访问的客户端节点。在其他实施例中,服务器106可向客户机102或客户机节点提供对所寄载的资源的访问。在一些实施例中,服务器充当主节点,使得其与一个或多个客户机102或服务器106通信。在一些实施例中,主节点可识别与寄载所请求的应用的服务器106相关联的地址信息并且将其提供给一个或多个客户机102或服务器106。在其他实施例中,主节点可以是服务器群106、客户机102、客户机节点102的集群或者设备。
一个或多个客户机102和/或一个或多个服务器106能通过在计算环境101中的机器和设备之间安装的网络104传输数据。网络104可包括一个或多个子网,并且可以被安装在计算环境101中所包含的客户机102、服务器106、计算机器和设备的任何组合之间。在一些实施例中,网络104可以是:局域网(LAN)、城域网(MAN)、广域网(WAN),包括位于客户机102和服务器106之间的多个子网104的主网104、具有专用子网104的主公共网104、具有公共子网104的主专用网104或者具有专用子网104的主专用网104。在进一步的实施例中,网络104可以是任何的下列网络类型:点对点网络、广播网络、电信网络、数据通信网络、计算机网络、ATM(异步传输模式)网络、SONET(同步光纤网络)网络、SDH(同步数字体系)网络、无线网络、有线网络、包括可能是红外信道或者卫星频带的无线链路的网络104。网络104的网络拓扑在不同的实施例中可以不同,可能的网络拓扑包括:总线型网络拓扑、星型网络拓扑、环型网络拓扑、基于中继器的网络拓扑、分层星型网络拓扑。另外的实施例可包括使用协议在移动装置间通信的移动电话网络的网络104,其中,协议可以是下列协议的任何一个:AMPS、TDMA、CDMA、GSM、GPRS UMTS或能在移动装置间传输数据的其他任何协议。
图1B所示是计算装置100的实施例,其中如图1A所示的客户机102和服务器106可以被部署为和/或被执行在此处所描述和图示的计算装置100的任何实施例上。被包含在计算装置100中的系统总线150可以和下列组件通信:中央处理单元121、主存储器122、存储装置128、输入/输出(I/O)控制器123、显示装置124A-124N、安装装置116和网络接口118。在一个实施例中存储装置128包括:操作系统、软件程序和客户机代理120。在一些实施例中,I/O控制器123还连接到键盘126和指示装置127。其他实施例中可包括连接到不只一个输入/输出装置130A-130N的I/O控制器123。
图1C描述了计算装置100的一个实施例,其中如图1A所示的客户机102和服务器106可以被部署为和/或被执行在此处所描述和图示的计算装置100的任何实施例上。被包含在计算装置100中的系统总线150可以和下列组件通信:桥170和第一I/O装置130A。在又一个实施例中,桥170还和主中央处理单元121通信,其中中央处理单元121可进一步与第二I/O装置130B、主存储器122和高速缓冲存储器140通信。I/O端口、存储器端口103和主处理器被包含在中央处理单元121中。
在计算装置100的实施例中可包括被下列组件配置的任何一个所表征的中央处理单元121:响应并处理从主存储器单元122取出的指令的逻辑电路;微处理器单元,诸如:由Intel公司制造的微处理器单元;由Motorola公司制造的微处理器单元;由加利福尼亚州Santa Clara的Transmeta公司制造的微处理器单元;诸如国际商业机器公司(International BussinessMachines)制造的RS/6000处理器;由Advanced Micro Devices公司制造的处理器;或逻辑电路的任何其他组合。中央处理单元122的其他实施例可包括下列任何组合:微处理器、微控制器、具有单处理核的中央处理单元、具有两个处理核的中央处理单元或具有不只一个处理核的中央处理单元。
在计算装置100的一个实施例中包括通过也称为后端总线的第二总线与高速缓冲存储器140通信的中央处理单元121,而在计算机器100的又一个实施例中包括使用系统总线150与高速缓冲存储器通信的中央处理单元121。在一些实施例中,本地系统总线150也被中央处理单元所使用来与不只一种类型的I/O装置130A-130N进行通信。在一些实施例中,本地系统总线150可以是下列类型总线的任何一个:VESA VL总线、ISA总线、EISA总线、微通道体系结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。计算装置100的其他实施例中包括为通过高级图形端口(AGP)与中央处理单元121通信的视频显示器124的I/O装置130A-130N。在计算装置100的其他形式中包括通过下列连接的任何一个连接到I/O装置130A-130N的处理器121,这些连接如下:超传输(HyperTransport)、快速I/O或者InfiniBand。计算装置100的进一步的实施例包括通信连接,其中处理器121使用本地互连总线与一个I/O装置130A进行通信并使用直接连接与第二I/O装置130B进行通信。
在一些实施例中,计算装置100包括主存储器单元122和高速缓存存储器140。高速缓存存储器140可以在一些实施例中可以是下列类型存储器的任何一个:SRAM、BSRAM或EDRAM。其他实施例中包括的高速缓存存储器140和主存储器单元122,可以是下列类型存储器的任何一个:静态随机存取存储器(SRAM)、突发SRAM或同步突发SRAM(BSRAM)、动态随机存取存储器(DRAM)、快速页模式DRAM(FPM DRAM)、增强DRAM(EDRAM)、扩展数据输出RAM(EDO RAM)、扩展数据输出DRAM(EDO DRAM)、突发扩展数据输出DRAM(BEDO DRAM)、增强DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100SDRAM、双倍数据速率SDRAM(DDR SDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、直接内存总线DRAM(DRDRAM)、铁电RAM(FRAM)或任何其他类型的存储器装置。进一步的实施例包括可通过下列之一访问主存储器122的中央处理单元121:系统总线150、存储器端口103、或允许处理器121访问存储器122的任何其他连接、总线或端口。
计算装置100的一个实施例支持下列安装装置116的任何一个:CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、多种格式的磁带驱动器、USB装置、可引导介质、可引导CD、诸如的用于GNU/Linux分发的可引导CD、硬盘驱动器或适于安装应用或软件的任意其它装置。在一些实施例中应用可包括客户机代理120或客户机代理120的任意部分。计算装置100还可以包括可以为一个或多个硬盘驱动器或者一个或多个独立磁盘冗余阵列的存储装置128,这里存储装置被配置为存储操作系统、软件、程序应用、或者客户机代理120的至少一部分。计算装置100的另一个实施例中包括用作存储装置128的安装装置116。
计算装置100还可包括网络接口118以通过多种连接来接口到局域网(LAN)、广域网(WAN)或因特网,所述连接包括但不限于标准电话线路、LAN或WAN链路(例如802.11,T1,T3、56kb、X.25、SNA、DECNET)、宽带连接(如ISDN、帧中继、ATM、千兆以太网、基于SONET的以太网(Ethernet-over-SONET))、无线连接、或上述任意或全部的某个组合。也可使用多种通信协议(例如TCP/IP、IPX、SPX、NetBIOS、Ethernet、ARCNET、SONET、SDH、光纤分布数据接口(FDDI)、RS232、RS485、IEEE802.11、IEEE802.11a、IEEE802.11b、IEEE802.11g、CDMA、GSM、WiMax和直接异步连接)来建立连接。计算装置100的一个形式包括可以通过任意类型和/或形式的网关或诸如安全套接字层(SSL)或传输层安全(TLS),或CitrixSystems公司制造的Citrix网关协议的隧道协议来与其他计算装置100’通信的网络接口118。网络接口118的形式可以包括下列的任何一个:内置网络适配器、网络接口卡、PCMCIA网卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算装置100连接到能够通信并执行这里所描述的方法和系统的网络的任意其它装置。
计算装置100的实施例包括下列I/O装置130A-130N的任何一个:键盘126、指示装置127、鼠标、触控板、光笔、轨迹球、话筒、绘图板、视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机、或可执行此处描述的方法和系统的任何其他输入/输出装置。在一些实施例中I/O控制器123可连接多个I/O装置130A-130N以便控制一个或多个I/O装置。I/O装置130A-130N的一些实施例被配置为提供存储或安装介质116,而其他实施例可以为接纳诸如由Twintech Industry公司制造的USB闪存驱动系列装置的USB存储装置提供通用串行总线(USB)接口。在其他实施例中I/O装置130可以是系统总线150和外部通信总线之间的桥,所述外部通信总线例如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线或串行连接的小型计算机系统接口总线。
在一些实施例中,计算装置100可以连接多个显示装置124A-124N,在其他实施例中计算装置100可以连接单个显示装置124,而在其他实施例中计算装置100可以连接相同类型或形式的显示装置124A-124N或不同的类型或形式的显示装置。显示装置124A-124N的实施例可被下列方式支持和实现:一个或多个I/O装置130A-130N、I/O控制器123、I/O装置130A-130N和I/O控制器123的组合、能支持显示装置124A-124N的硬件和软件的任何组合、任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以便与显示装置124A-124N相接口、通信、连接或以其他方式使用显示装置124a-124n。在一些实施例中,计算装置100可被配置为使用一个或多个显示装置124A-124N,这些配置包括:有多个连接器以与多个显示装置124A-124N相接口;多个视频适配器且每个视频适配器与显示装置124A-124N中的一个或多个连接;有操作系统被配置用于支持多个显示装置124A-124N;使用被包含在计算装置100内部的电路和软件来连接并使用多个显示装置124A-124N;和在主计算装置100和多个次级计算装置上的执行软件来使主计算装置100能使用次级计算装置的显示装置作为用于主计算装置100的显示装置124A-124N。计算装置100的其它实施例可包括由多个次级计算装置提供的多个显示装置124A-124N,所述多个显示装置124A-124N通过网络连接到主计算装置100。
在一些实施例中,计算机器100可以执行任何操作系统,而在其他实施例中,计算机器100可执行下列操作系统的任何一个:诸如WINDOWS 3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWS NT 3.51、WINDOWS NT 4.0、WINDOWS CE、WINDOWS XP和WINDOWS VISTA的版本的MICROSOFT WINDOWS的操作系统;和不同发行版本的Unix和Linux操作系统;由苹果计算机公司出品的MAC OS的任意版本;由国际商业机器公司出品的OS/2;任意嵌入式操作系统;任意实时操作系统;任意开源操作系统;任意专有操作系统;任意用于移动计算装置的操作系统,或者任意其它操作系统。在又一个实施例中,计算机器100可执行多种操作系统。例如,计算机器100可执行能执行或管理执行第一操作系统的虚拟机的PARALLELS或另一个虚拟化平台,而计算机器100执行不同于第一操作系统的第二操作系统。
计算机器100可以体现为下列计算装置的任何一个:计算工作站、桌面计算机、膝上型或笔记本计算机、服务器、手持计算机、移动电话、便携通信装置、媒体播放装置、游戏系统、移动计算装置、上网本、由苹果计算机公司出品的IPOD系列装置、由索尼公司出品的PLAYSTATION系列装置的任何一个、由Nintendo公司出品的Nintendo系列装置的任何一个;由微软公司出品的XBOX系列装置的任何一个,或能够通信并有足够的处理器能力和存储容量以执行此处所述的方法和系统的任意其它类型和/或形式的计算或者电信或媒体装置。在其它实施例中,计算装置100可以是诸如下列移动装置的任何一个的移动装置:JAVA使能蜂窝电话或个人数据助理(PDA),诸如i55sr、i58sr,i85s,i88s,i90c,i95c1或im1100,以上这些均由摩托罗拉公司制造;由Kyocera公司制造的6035或7135;由Samsung电子有限公司制造的i300或i330;由Palm公司出品的TREO180、270、600、650、680、700p、700w或750智能电话;或具有符合该装置的不同的处理器、操作系统和输入装置的任何计算装置;或能执行此处所述的方法和系统的任何其他移动计算装置。计算环境101的其他实施例包括移动计算装置100,所述移动计算装置100可以是下列的任何一个:黑莓(Blackberry)的任一系列,或由Research In Motion有限公司出品的其他手持装置;由苹果计算机公司出品的iPhone;PlamPre;掌上电脑;掌上电脑电话或任何其他手持移动装置。
现参考图1D,在一些实施例中,不只一个服务器106可以被逻辑地链接在一起以创建服务器群38,其中,每个服务器106可包括网络侧接口202和群侧接口204。网络侧接口202可与一个或多个客户机102或网络104通信。网络104可为WAN、LAN或者此处所描述的任何其他网络。
在一个实施例中,每个服务器106具有群侧接口204,其可以与群38中的一个或多个服务器106相连接。在一些实施例中,每个服务器106可以经由另一个服务器106的群侧接口与群38中的另一个服务器106相连接并且使得这两个服务器的群侧接口204互相连接。当被连接时,群38中的服务器能互相之间通信。
在一些实施例中,群侧接口204能与网络侧接口202、持久存储器230通信,并且,在一些实施例中,可以与动态存储器240通信。在一些实施例中,群38可包括服务器106、持久存储器230、和动态存储器240的组合。在一些实施中,服务器106可与持久存储器230通信,而其他服务器106’与服务器106通信,以访问在持久存储器中所存储的信息。
在一个实施例中,持久存储器230可在磁盘、磁盘群、独立磁盘冗余阵列(RAID)、可写光盘或允许数据读出和写入并且如果存储装置没电则保存写入的数据的任何其他装置上物理地实现。单个物理装置可为多个持久存储器提供存储,即单个物理装置可用于为不只一个群38提供持久存储器230。持久存储器230可以保持与在群38中的每个服务器106相关联的静态数据,以及在群38中的所有服务器106使用的全局数据。在一个实施例中,持久存储器230可在轻量级目录访问协议(LDAP)数据模型中保持服务器数据。在其他实施例中,持久存储器230可在兼容ODBC的数据库中存储服务器数据。为了该说明书的目的,术语“静态数据”可指不经常改变的数据,也就是仅基于每小时、每天、或者每星期改变的数据,或者从不改变的数据。在一些实施例中,每个服务器可使用持久存储子系统从持久存储器230中读数据和将数据写入持久存储器230。
出于可靠的目的,可以对持久存储器230存储的数据进行物理上或逻辑上复制。例如,使用一组冗余、镜像磁盘可提供物理冗余,每个冗余的镜像磁盘提供数据的副本。在另一个实施例中,可以使用标准数据库技术对数据库本身进行复制,以提供数据库的多个副本。在进一步的实施例中,可以同时使用物理和逻辑复制。
动态存储器240可以是集中的使得运行时数据存储在群38中的一个服务器106的存储器中。然后,该服务器可作为主网络节点操作,在群38中的所有其他服务器106当寻求对运行时数据的访问时与该服务器通信。在又一个实施例中,在群38中的每个服务器106可保留动态存储器240的完整副本,使得每个服务器106与每个其他服务器106通信,以保持其动态存储器240副本及时更新。在又一个实施例中,每个服务器106保持它自己的运行时数据,并且当寻求从其他服务器106获得运行时数据时与其他服务器106进行通信。因此,例如,试图寻找客户机102所请求的应用程序的服务器106可直接与在群38中的每个其他服务器106进行通信以识别寄载所请求的应用的一个或多个服务器。
在一些实施例中,通过在群38中指定服务器106的子集(通常为两个或更多个)作为“收集点”,来减轻由具有大量的服务器106的群38所产生的繁重的网络流量。在一些实施例中,收集点可以是收集和存储从群38中的其他服务器106收集的运行时数据的服务器106。在一些实施例中,每个收集点可存储整个动态存储器240的副本,而在其他实施例中,每个收集点可存储动态存储器240的一部分,即维护特定数据类型的运行时数据。可根据一个或多个标准预先确定由服务器106存储的数据的类型。例如,服务器106可基于其启动顺序存储不同类型的数据。替代地,可由管理员使用管理工具(未被示出)配置服务器106所存储的数据类型。在这些实施例中,动态存储器240可分布于群38中的两个或更多个服务器106之间。
在一些实施例中,没有被指定为收集点的服务器106可识别已经被指定为收集点的服务器106。一旦识别这些收集点,服务器可以与所识别的收集点进行通信以传送和请求运行时数据。在一些实施例中,使用收集点可以通过允许服务器106与一个或多个收集点而不是每个其他服务器106通信来减少由大的服务器群38所引起的流量。因此,请求和传送对运行时数据的访问可以是较低的带宽密集型处理。
每个服务器106可作为用于不只一种类型的数据的收集点而操作。例如,服务器106”可作为用于许可信息和负载信息的收集点而操作。在这些实施例中,每个收集点可积聚不同类型的运行时数据。例如,服务器106”’可收集许可信息,而第一服务器106”收集负载信息。
在一些实施例中,每个收集点可存储在群38内的所有服务器106间共享的数据。在这些实施例中,特定类型的数据的每个收集点与群38中的用于该类型数据的每个其他收集点交换由该收集点收集的数据。因此,一旦完成了这样的数据的交换,每个收集点106”和106处理相同的数据。也在这些实施例中,对于运行时数据的任何更新,每个收集点106和106”也使每个其他收集点一起保持更新。
在一些实施例中,通过浏览群38中的内容和活动,客户机102能够查看在群38中执行的应用并且能够访问访问可用的信息和在群38中执行的应用会话。在一些实施例中,每个服务器106可包括ICA浏览器子系统260,其能为客户机102提供浏览的能力。在客户机102建立与任何服务器106的ICA浏览器子系统260的连接之后,该浏览器子系统可支持多种客户机请求。这样的客户机请求可包括:(1)列举在群中的服务器的名称,(2)列举群中发布的应用的名称,(3)将服务器名称和/或应用名称解析为对客户机102有用的服务器地址。ICA浏览器子系统260也可支持由客户机102作出的运行程序邻近应用的请求,该程序邻近应用根据请求为客户机102提供群38中的给用户授权的那些应用的视图。在一些实施例中,ICA浏览器子系统260可以转发所有上述提及的客户机请求到服务器106中的适当的子系统。
在一个实施例中,在群38中有程序邻近子系统270的每个服务器106,可为客户机102的用户提供在群38中的应用的视图。程序邻近子系统270可以限制对于这些客户机102的用户有权访问的那些应用的视图。通常,该程序邻近服务将这些应用作为列表或图标组呈现给用户。
由程序邻近子系统270提供的功能可以被两种类型的客户机利用,(1)可直接从客户机桌面访问该功能的程序邻近使能客户机,以及(2)可通过运行在服务器上的程序邻近使能桌面来访问该功能的非程序邻近使能客户机(例如,传统客户机)。
在程序邻近使能客户机和程序邻近子系统270间的通信可发生于专用虚拟通道上,该专用虚拟通道建立在ICA虚拟通道之上。在其他实施例中,该通信使用XML服务而发生。在这些实施例的一个中,程序邻近使能客户机与提供XML子系统通信。
在一个实施例中,程序邻近使能客户机没有与带有程序邻近子系统270的服务器的连接。对于该实施例,客户机102向ICA浏览器子系统260发送建立到服务器106的ICA连接的请求,以识别对客户机102可用的应用。客户机102接着运行获取用户证书的客户端侧对话。通过ICA浏览器子系统260接收该证书,并将其发送到程序邻近子系统270。在一个实施例中,程序邻近子系统270将该证书发送到用户管理子系统以用于认证。该用户管理子系统可返回表示用户所属的账户列表的一组区别性的名称。基于认证,程序邻近子系统270建立程序邻近虚拟通道。该通道在应用过滤完成之前一直保持开放。程序邻近子系统270可接着从与那些账户关联的公共应用子系统524请求程序邻近信息。然后,公共应用子系统524可从持久存储器230获得程序邻近信息。一旦接收到程序邻近信息,程序邻近子系统270格式化该程序邻近信息,并且通过程序邻近虚拟通道将其返回到客户机。然后,在一些实施例中关闭部分ICA连接。
对于程序邻近使能客户机与服务器建立部分ICA连接的又一个实施例,考虑选择群38的客户机102的用户。群38的选择从客户机102向ICA浏览器子系统260发送与所选择的群38中的服务器106之一建立ICA连接的请求。接着,该ICA浏览器子系统260可将该请求发送到程序邻近子系统270,该子系统选择在群38中的服务器106。可以识别与该服务器106相关联的地址信息并经由ICA浏览器子系统260将其返回到客户机102。客户机102随后可连接到对应于接收到的地址信息的服务器106。
在又一个实施例中,程序邻近使能客户机102建立ICA连接,程序邻近虚拟通道在该ICA连接上被建立并且只要ICA连接持续则保持打开。通过该程序邻近虚拟通道,程序邻近子系统270可将程序邻近信息更新推送到客户机102上。为了获得更新,程序邻近子系统270从公共应用子系统524订阅事件,以允许程序邻近子系统270检测所发布的应用的变化。
B.虚拟化计算环境
现参考图2A,框图描述虚拟化环境400的一个实施例。总体而言,计算装置100包括管理程序层、虚拟化层和硬件层。管理程序层包括管理程序401(也称为虚拟化管理器),其通过在虚拟化层中执行的至少一个虚拟机来分配和管理对硬件层中的多个物理资源的访问(例如处理器421和磁盘428)。虚拟化层包括至少一个操作系统410和分配给至少一个操作系统410的多个虚拟资源。虚拟资源可包括而不限于多个虚拟处理器432a、432b、432c(总称为432)和虚拟磁盘442a、442b、442c(总称为442),以及如虚拟内存和虚拟网络接口的虚拟资源。可将多个虚拟资源和操作系统称为虚拟机406。虚拟机406可包括控制操作系统405,该控制操作系统405与管理程序401通信,并用于执行应用以管理并配置计算装置100上的其他虚拟机。
具体而言,管理程序401可以以模拟可访问物理设备的操作系统的任何方式向操作系统提供虚拟资源。管理程序401可以向任一数量客户操作系统410a、410b(总称为410)提供虚拟资源。一些实施例中,计算装置100执行一种或多种管理程序。这些实施例中,管理程序可用于模拟虚拟硬件、划分物理硬件、虚拟化物理硬件并执行提供对计算环境的访问的虚拟机。管理程序可包括由位于美国加州的Palo Alto的VMWare制造的这些程序;XEN管理程序(一种开源产品,其开发由开源Xen.org协会监管);由微软公司提供的HyperV、VirtualServer或虚拟PC管理程序,或其他。一些实施例中,计算装置100执行创建客户操作系统可在其上执行虚拟机平台的管理程序,该计算装置100被称为宿主服务器。在这些实施例的一个中,例如,计算装置100是由位于美国佛罗里达州Fort Lauderdale的Citrix Systems有限公司提供的XEN SERVER。
一些实施例中,管理程序401在计算装置上执行的操作系统之内执行。在这些实施例的一个中,执行操作系统和管理程序401的计算装置可被视为具有宿主操作系统(执行在计算装置上的操作系统),和客户操作系统(在由管理程序401提供的计算资源分区内执行的操作系统)。其他实施例中,管理程序401和计算装置上的硬件直接交互而不是在宿主操作系统上执行。在这些实施例的一个中,管理程序401可被视为在“裸金属(bare metal)”上执行,所述“裸金属”指包括计算装置的硬件。
一些实施例中,管理程序401可以产生操作系统410在其中执行的虚拟机406a-c(总称为406)。在这些实施例的一个中,管理程序401加载虚拟机映像以创建虚拟机406。在这些实施例的又一个中,管理程序401在虚拟机406内执行操作系统410。仍在这些实施例的又一个中,虚拟机406执行操作系统410。
一些实施例中,管理程序401控制在计算装置100上执行的虚拟机406的处理器调度和内存划分。在这些实施例的一个中,管理程序401控制至少一个虚拟机406的执行。在这些实施例的又一个中,管理程序401向至少一个虚拟机406呈现由计算装置100提供的至少一个硬件资源的抽象。其他实施例中,管理程序401控制是否以及如何将物理处理器能力呈现给虚拟机406。
控制操作系统405可以执行用于管理和配置客户操作系统的至少一个应用。一个实施例中,控制操作系统405可以执行管理应用,如包括如下用户接口的应用,该用户接口为管理员提供对用于管理虚拟机执行的功能的访问,这些功能包括用于执行虚拟机、中止虚拟机执行或者识别要分配给虚拟机的物理资源类型的功能。又一个实施例中,管理程序401在由管理程序401创建的虚拟机406内执行控制操作系统405。又一个实施例中,控制操作系统405在被授权直接访问计算装置100上的物理资源的虚拟机406上执行。一些实施例中,计算装置100a上的控制操作系统405a可以通过管理程序401a和管理程序401b之间的通信与计算装置100b上的控制操作系统405b交换数据。这样,一个或多个计算装置100可以和一个或多个其他计算装置100交换有关处理器或资源池中可用的其他物理资源的数据。在这些实施例的一个中,这种功能允许管理程序管理分布在多个物理计算装置上的资源池。在这些实施例的又一个中,多个管理程序管理在一个计算装置100上执行的一个或多个客户操作系统。
在一个实施例中,控制操作系统405在被授权与至少一个客户操作系统410交互的虚拟机406上执行。又一个实施例中,客户操作系统410通过管理程序401和控制操作系统405通信,以请求访问磁盘或网络。仍在又一个实施例中,客户操作系统410和控制操作系统405可通过由管理程序401建立的通信信道通信,例如,通过由管理程序401提供的多个共享存储器页面。
在一些实施例中,控制操作系统405包括用于直接与由计算装置100提供的网络硬件通信的网络后端驱动器。在这些实施例的一个中,网络后端驱动器处理来自至少一个客户操作系统110的至少一个虚拟机请求。其他实施例中,控制操作系统405包括用于与计算装置100上的存储元件通信的块后端驱动器。在这些实施例的一个中,块后端驱动器基于从客户操作系统410接收的至少一个请求从存储元件读写数据。
在一个实施例,控制操作系统405包括工具堆栈404。其他实施例中,工具堆栈404提供如下功能:和管理程序401交互、和其他控制操作系统405(例如位于第二计算装置100b上)通信,或者管理计算装置100上的虚拟机406b、406c。又一个实施例中,工具堆栈404包括自定义应用,其用于向虚拟机群的管理员提供改进的管理功能。一些实施例中,工具堆栈404和控制操作系统405中的至少一个包括管理API,其提供用于远程配置并控制计算装置100上运行的虚拟机406的接口。其他实施例中,控制操作系统405通过工具堆栈404和管理程序401通信。
在一个实施例中,管理程序401在由管理程序401创建的虚拟机406内执行客户操作系统410。又一个实施例中,客户操作系统410为计算装置100的用户提供对计算环境中的资源的访问。又一个实施例中,资源包括程序、应用、文档、文件、多个应用、多个文件、可执行程序文件、桌面环境、计算环境或对计算装置100的用户可用的其他资源。又一个实施例中,可通过多个访问方法将资源传送给计算装置100,这些方法包括但不限于:常规的直接在计算装置100上安装、通过应用流的方法传送给计算装置100、将由在第二计算装置100’上执行资源产生的并通过表示层协议传送给计算装置100的输出数据传送给计算装置100、将通过在第二计算装置100’上执行的虚拟机执行资源所产生的输出数据传送给计算装置100、或者从连接到计算装置100的移动存储装置(例如USB设备)执行或者通过在计算装置100上执行的虚拟机执行并且产生输出数据。一些实施例中,计算装置100将执行资源所产生的输出数据传输给另一个计算装置100’。
在一个实施例中,客户操作系统410和该客户操作系统410在其上执行的虚拟机结合形成完全虚拟化虚拟机,该完全虚拟化虚拟机并不知道自己是虚拟机,这样的机器可称为“Doma in U HVM(硬件虚拟机)虚拟机”。又一个实施例中,完全虚拟化机包括模拟基本输入/输出系统(BIOS)的软件以便在完全虚拟化机中执行操作系统。在又一个实施例中,完全虚拟化机可包括驱动器,其通过和管理程序401通信提供功能。这样的实施例中,驱动器可意识到自己在虚拟化环境中执行。又一个实施例中,客户操作系统410和该客户操作系统410在其上执行的虚拟机结合形成超虚拟化(paravirtualized)虚拟机,该超虚拟化虚拟机意识到自己是虚拟机,这样的机器可称为“Domain U PV虚拟机”。又一个实施例中,超虚拟化机包括完全虚拟化机不包括的额外驱动器。又一个实施例中,超虚拟化机包括如上所述的被包含在控制操作系统405中的网络后端驱动器和块后端驱动器。
现参考图2B,框图描述了系统中的多个联网计算装置的一个实施例,其中,至少一个物理主机执行虚拟机。总体而言,系统包括管理组件404和管理程序401。系统包括多个计算装置100、多个虚拟机406、多个管理程序401、多个管理组件(又称为工具堆栈404或者管理组件404)以及物理资源421、428。多个物理机器100的每一个可被提供为如上结合图1E-1H和图2A描述的计算装置100。
具体而言,物理磁盘428由计算装置100提供,存储至少一部分虚拟磁盘442。一些实施例中,虚拟磁盘442和多个物理磁盘428相关联。在这些实施例的一个中,一个或多个计算装置100可以与一个或多个其他计算装置100交换有关处理器或资源池中可用的其他物理资源的数据,允许管理程序管理分布在多个物理计算装置上的资源池。一些实施例中,将虚拟机406在其上执行的计算装置100称为物理主机100或主机100。
管理程序在计算装置100上的处理器上执行。管理程序将对物理磁盘的访问量分配给虚拟磁盘。一个实施例中,管理程序401分配物理磁盘上的空间量。又一个实施例中,管理程序401分配物理磁盘上的多个页面。一些实施例中,管理程序提供虚拟磁盘442作为初始化和执行虚拟机450进程的一部分。
一个实施例中,将管理组件404a称为池管理组件404a。又一个实施例中,可以称为控制管理系统405a的管理操作系统405a包括管理组件。一些实施例中,将管理组件称为工具堆栈。在这些实施例的一个中,管理组件是上文结合图2A描述的工具堆栈404。其他实施例中,管理组件404提供用户接口,用于从如管理员的用户接收要供应和/或执行的虚拟机406的标识。仍在其他实施例中,管理组件404提供用户接口,用于从如管理员的用户接收将虚拟机406b从一个物理机器100迁移到另一物理机器的请求。在进一步的实施例中,管理组件404a识别在其上执行所请求的虚拟机406d的计算装置100b并指示所识别的计算装置100b上的管理程序401b执行所识别的虚拟机,这样,可将管理组件称为池管理组件。
现参考图2C,描述了虚拟应用传送控制器或虚拟设备450的实施例。总体而言,上文结合图2A和2B描述的设备200的任何功能和/或实施例(例如应用传送控制器)可以部署在上文结合图2A和4B描述的虚拟化环境的任何实施例中。应用传送控制器的功能不是以设备200的形式部署,而是将该功能部署在诸如客户机102、服务器106或设备200的任何计算装置100上的虚拟化环境400中。
现参考图2C,描述了在服务器106的管理程序401上操作的虚拟设备450的实施例的框图。如图2A和2B的设备200一样,虚拟机450可以提供可用性、性能、卸载和安全的功能。对于可用性,虚拟设备可以执行网络第4层和第7层之间的负载平衡并执行智能服务健康监控。对于通过网络流量加速实现的性能增加,虚拟设备可以执行缓存和压缩。对于任何服务器的卸载处理,虚拟设备可以执行连接复用和连接池和/或SSL处理。对于安全,虚拟设备可以执行设备200的任何应用防火墙功能和SSL VPN功能。
结合附图2A描述的设备200的任何模块可以虚拟化设备传送控制器450的形式被打包、组合、设计或构造,虚拟化设备传送控制器450可部署成在诸如流行的服务器这样的任何服务器上的虚拟化环境300或非虚拟化环境中执行的软件模块或组件。例如,可以安装在计算装置上的安装包的形式提供虚拟设备。参考图2A,可以将高速缓存管理器232、策略引擎236、压缩238、加密引擎234、分组引擎240、GUI 210、CLI 212、壳服务214中的任一个设计和构成在计算装置和/或虚拟化环境300的任何操作系统上运行的组件或模块。虚拟化设备400不使用设备200的加密处理器260、处理器262、存储器264和网络堆栈267,而是可使用虚拟化环境400提供的任何这些资源或者服务器106上以其他方式可用的这些资源。
仍参考图2C,简言之,任何一个或多个vServer 275A-275N可以操作或执行在任意类型的计算装置100(如服务器106)的虚拟化环境400中。结合附图2B描述的设备200的任何模块和功能可以设计和构造成在服务器的虚拟化或非虚拟化环境中操作。可以将vServer 275、SSL VPN 280、内网UP 282、交换装置284、DNS 286、加速装置288、APP FW 280和监控代理中的任一个打包、组合、设计或构造成应用传送控制器450的形式,应用传送控制器450可部署成在装置和/或虚拟化环境400中执行的一个或多个软件模块或组件。
在一些实施例中,服务器可以在虚拟化环境中执行多个虚拟机406a-406b,每个虚拟机运行虚拟应用传送控制器450的相同或不同实施例。一些实施例中,服务器可以在多核处理系统的一个核上执行一个或多个虚拟机上的一个或多个虚拟设备450。一些实施例中,服务器可以在多处理器装置的每个处理器上执行一个或多个虚拟机上的一个或多个虚拟设备450。
C.用于远程呈现多媒体数据流的系统和方法
图3A中所示的是系统的一个实施例,该系统检索由多媒体装置302产生的多媒体数据、拦截该多媒体数据,并且将该多媒体数据传输到远程计算机器,在该远程计算机器上,该数据被格式化并被发送到显示应用314’,在那里该数据能被显示、播放或呈现给用户。该系统可包括通过虚通道306通信的两个计算机器,即第一计算机器301和第二计算机器300。第一计算机器301和第二计算机器300的每一个可执行应用/桌面传送系统322、322’的一个版本,并且所述应用/桌面传送系统322、322’可包含任何数量的编解码器324、324’或其他编码库。此外,第一计算机器301和第二计算机器300的每一个可执行与多媒体装置302、302’通信的多媒体装置驱动器316、316’,并且每个机器301、300可执行显示应用314、314’。DIRECTSHOW框架320在第一和第二计算机器301、300上执行,其可包括任何下列模块、过滤器和单元:源过滤器330、330’;应用吸收(s ink)过滤器330、330’;多媒体吸收过滤器312、312’;转换过滤器326、326’和呈现过滤器328、328’,所述源过滤器330、330’还包括流模块310或代理流模块308。在一些实施例中,第一计算机器301和第二计算机器300中的任何一个或两个都可执行显示预览应用323、323’。
由多媒体捕获装置产生的多媒体数据可包括任何音频和/或视频数据或格式。多媒体数据可包括任何类型和形式的图形呈现。多媒体数据可包括音频和/或视频的部分。多媒体数据可包括由帧或图像组成的数字视频数据。多媒体数据可包括关键帧,例如自包含的帧或没有对其他图像的任何参考的编码帧。在MPEG标准中,这些可包括与P-帧和B-帧相反的I-帧和D-帧,所述P-帧和B-帧分别要求前面帧的信息,或前面帧和后面帧二者的信息以用于编码和解码。
有时,可以有在第一和第二计算机器上执行的其他多媒体框架来代替DIRECTSHOW框架,例如DirectX Media Object(DMO)和/或Window MediaFoundation(WME)。诸如DIRECTSHOW的框架可以包括可扩展核微软媒体技术(Extensible Core Microsoft Media Technology)并且可以包括设计用于音频和视频数据的流架构,其提供实现数字媒体应用的快速开发的高层应用模型。这样的框架也可包括使第三方能创建定制的音频或视频处理组件的低层插件模型。它也可包括诸如微软公司的DirectDraw和DirectSound的功能部件。
进一步参考图3A,更具体地,在一个实施例中,该系统可包括第一计算机器301和第二计算机器300。在一些实施例中,第一计算机器301可以是任何计算机器、计算机器或计算机。在一些实施例中,第二计算机器300可以是任何计算机器、计算机器或计算机。第一计算机器301和第二计算机器300都可以是此处所描述的任何计算机、计算机器或装置。在一个实施例中,第一计算机器301是服务器,而第二计算机器300是客户机。在又一个实施例中,第一计算机器301是客户机,而第二计算机器300是服务器。在又一个实施例中,第一计算机器301和第二计算机器300是客户机。在一个实施例中,第一计算机器301和第二计算机器300是经由一个或多个代理机器通信的客户机。在该实施例中,所述代理机器可以是装置、客户机或服务器。
尽管图3A描述单个第一计算机器301,但在一些实施例中,第一计算机器301是包括多个服务器的服务器群。在该实施例中,第一计算机器301是该服务器群中任何服务器的符号表示。而且,第一计算机器301可以是被指定与第二计算机器300通信或与经由第二机器300访问服务器群的用户通信的任何服务器-群的服务器的符号表示。
在一个实施例中,第一计算机器301和第二计算机器300的每一个执行应用/桌面传送系统322、322’。该传送系统322、322’可以是任何程序、模块、客户端、进程或服务,当其在计算机器上执行时获取图形或非图形数据,并且将该数据经由虚通道306传输到远程计算机器,所述虚通道306建立在传送系统322、322’在其上执行的计算机器和远程计算机器之间。在一个实施例中,应用/传送系统322、322’获取来自在本地处理器上执行的应用的应用输出数据,并且将该应用输出数据传输到远程计算机器。在其他实施例中,应用/桌面传送系统322、322’获取来自在本地处理器上执行的桌面的桌面输出数据,并且将该桌面输出数据传输到远程计算机器。在其他实施例中,应用/桌面传送系统322、322’获取来自在本地处理器上执行的虚拟机的应用或桌面输出数据,并且将输出数据传输到远程计算机器。
在一个实施例中,应用/桌面传送系统322、322’可包括任意数量的编解码器322、324’,所述编解码器322、324’可以被应用/传送系统322、322’用于编码或解码多媒体。在一些实施例中,编码或解码多媒体数据可包括压缩或解压缩多媒体数据。在其他实施例中,编码或解码多媒体数据可包括加密或解密多媒体数据。任何下列的编解码器可以被用于编码或解码在多媒体数据流中所包含的视频数据:Theora、MPEG-4 ASP、VC-1、VC-3、TruDef、Windows Media Video、RealVideo、Apple ProRes 422、Pixlet、MPEG-1、MPEG-2、Cineform、CorePNG、Zip Motion Block Video、DivX Video、JPEG2000或任何其他视频编解码器。任何下列的编解码器可以被用于编码或解码在多媒体数据流中所包含的音频数据:Apple Lossless Audio Codec、DirectStream Transfer、Dolby TrueHD、RealAudio、WavPack、Windows Media Audio9 Lossless、Dolby Digital、ADX;MPEG Audio、Windows Media Audio或任何其他音频编解码器。任何下列的编解码器可以被用于编码或解码在多媒体数据流中所包含的文本数据:BiM、MPEG-4 Part 17、Ogg Writ和任何其他文本编解码器。在一些实施例中,编解码器可以使用有损压缩算法来进行压缩,而在其他实施例中,编解码器可以使用无损压缩算法来进行压缩。当将多媒体数据从本地计算机器向远程计算机器进行传输时,在一些实施例中,将用于编码该多媒体数据的编解码器与所编码的多媒体数据捆绑在一起并发送到远程计算机器。进而,该远程计算机器能使用所接收的编解码器来解码该所编码的多媒体数据。在其他实施例中,编解码器322、324’在传输数据之前可以使用任何加密算法加密该数据。类似地,编解码器322、324’可以用于解密所加密的数据。
应用/桌面传送系统322、322’可以通过虚通道306将表示层协议数据从一个计算机器传输到另一个计算机器。在一个实施例中,虚通道306可以是在两个或多个计算机器之间的安全通信连接。该虚通道306可以是建立在网络(诸如此处所描述的任何网络)之上,并且经常经由诸如CITRIX ICA协议的表示层协议或此处所描述的任何其他表示层协议传输数据。在一些实施例中,应用/桌面传送系统322、322’还包括对格式化的多媒体数据进行封装以形成表示层协议数据的模块。当远程机器接收封装的多媒体数据时,该远程机器可以解封或解构该多媒体数据以便重新得到该多媒体数据用于处理。在许多实施例中,当本地机器请求访问在远程机器上执行的应用时,应用/桌面传送系统322、322’建立该虚通道306。建立虚通道306可包括任何下列动作:对发出访问在远程计算机器上执行的应用的请求的用户进行认证、验证与该用户或该用户用于发出该访问请求的计算机器关联的权限、在一个或多个计算机器之间建立安全连接,以及将该用户连接到在远程计算机器上存储的或者在由该远程计算机器可访问的计算机上存储的该用户的简档。
在一个实施例中,第二计算机器300可以被连接到多媒体装置302,而第一计算机器301没有被连接到多媒体装置302。在其他实施例中,第一计算机器301可以被连接到多媒体装置302’,而第二计算机器300没有被连接到多媒体装置302。在其他实施例中,第一计算机器301和第二计算机器300中的每一个被连接到不同的多媒体装置302。尽管图3A示出了单个多媒体装置302、302’,但两个计算机器中的任何一个可以被连接到多个多媒体装置。多媒体装置302、302’可以是任何下列多媒体装置:网络摄影头、麦克风、投影仪、智能电话、DVD播放器、CD播放器、电视调谐器、乐器数字接口、MP3播放器、数字线缆接口、照相机、摄像机、红外相机、光学输入装置、键盘、鼠标、蓝光(Blu-Ray)播放器、卫星接口装置以及任何其他多媒体装置。
在一些实施例中,多媒体装置302、302’与计算机器上的多媒体驱动器316、316’相接口。多媒体驱动器316、316’接收由多媒体装置302、302′产生的原始的多媒体输出并且将该原始输出变换为能够被DIRECSHOW框架320、320’处理的格式或者能够被用于格式化和处理多媒体数据的任何其他应用处理的格式。多媒体驱动器316、316’可以与DI RECSHOW框架320、320’、显示应用314、314’或者能输入以其本地格式格式化的多媒体输出并且处理该输出以用于对用户的最终呈现的任何其他应用相接口。该多媒体数据可以是下列数据中的任何一个:视频、音频、文本、图形,或任何其他类型的多媒体数据。
尽管图3A示出了第一计算机器301和第二计算机器300,其中每个计算机器可执行多媒体驱动器316、316’。在一些实施例中,连接到多媒体装置302、302’的计算机器300、301可包括多媒体装置驱动器316、316’,而没有连接到多媒体装置302、302’的其他计算机器不包括多媒体装置驱动器316、316’。因此,在一些实施例中,多媒体驱动器316、316’不是计算机器300、301所必须的,除非该计算机器300、301直接与多媒体装置302、302’通信。例如,在第二计算机器300直接与多媒体装置302通信以从该多媒体装置302获取多媒体数据的实施例中,第二计算机器300可包括多媒体装置驱动器316。一旦经由多媒体装置驱动器316从多媒体装置302获取多媒体数据后,第二计算机器300可以通过虚通道306将该多媒体数据传输到第一计算机器301。在该实施例中,第一计算机器301没有与多媒体装置302通信,因此第一计算机器301不包括多媒体装置驱动器316。在该实施例中,第一计算机器301不需要多媒体装置驱动器316来接收和处理从第二计算机器300传输到该机器301的多媒体数据。
显示应用314、314’可以是能够显示、播放或以其他方式呈现多媒体的任何应用。在一些实施例中,该显示应用314能在第一计算机器301上执行,而不在第二计算机器300上执行。在其他实施例中,该显示应用314’能在第二计算机器300上执行,而不在第一计算机器301上执行。该系统弥补在其中一个计算机器上显示应用的缺失,因此在许多实施例中,在该系统中的至少一个计算机器不具有该显示应用的实例并且由此不能执行该显示应用314。显示应用314、314’可以是任何下列显示应用:MicrosoftCommunicator(微软通信器)、Skype、Windows Media Player、AOL InstantMessenger、Google Chat、RealPlayer、QuickTime、Adobe Media Player、DivX Video Player、Gmail Voice和Video Chat、iVideoChat、Camfrog、TokBox、NetMeeting、Yahoo Messenger以及任何其他多媒体播放器。在一些实施例中,显示应用是用于播放音频的多媒体播放器,例如Windows MediaPlayer、iTunes或任何其他音频播放器。在其他实施中,显示应用是能够重放音频、视频和文本的视频会议系统或web会议系统。在其他实施例中,显示应用314、314’是用于显示网络摄像头数据的应用,或者是用于便于网络聊天的应用。在又一个实施例中,显示应用314、314’是用于显示视频或者视频和音频的组合的应用。
在一些实施例中,第一计算机器301和第二计算机器300中的任何一个或两个都可执行显示预览应用323、323’。在一个实施例中,显示预览应用323、323’可以是独立应用,而在其他实施例中,显示预览应用323、323’可以被包含在显示应用314中。在其他实施例中,显示预览应用323、323’可以被包含在应用/桌面传送系统322之中。显示预览应用323、323’接收在框架320、320’中处理的多媒体数据,并且将该多媒体数据本地显示在应用输出窗口中。在一些实施例中,显示预览应用323、323’可以与远程计算装置上的应用/桌面传送系统322、322’通信以接收关于展示窗口的控制信息。控制信息可包括:父应用窗口属性;应用窗口大小和位置;远程会话中裁剪(in-remote session clipping)或由展示窗口用于显示该多媒体数据的任何其他控制信息。在一些实施例中,父应用或远程展示应用是在位于远离接收该多媒体数据的计算机器的位置的计算机器上执行的显示应用314、314’。经由显示预览应用323、323’的本地预览的一个示例包括接收来自多媒体装置302的多媒体数据的第二计算机器300。第二计算机器300接收在第一机器301上执行的远程应用中显示该多媒体数据的指令。显示预览应用323向在第一计算机器301上执行的应用/桌面传送系统321’查询关于远程显示应用314’的控制信息,而不是将该多媒体数据传输到第一计算机器301。接着,应用/桌面传送系统321’可以从在第一计算机器301上执行的操作系统检索该信息,并且将该相关的控制信息传输到在第二计算机器300上执行的显示预览应用323。然后,显示预览应用323可以使用该控制信息来产生用于显示所接收的多媒体数据的应用输出窗口。
第一计算机器301和第二计算机器300中的每一个执行DIRECTSHOW框架320、320’的实例。在其他实施例中,该框架可以是基于下列技术中的任何一个的框架:DIRECTX MEDIA OBJECT(DMO),MEDIA FOUNDATION(MJ)或适用于此处所述的方法和系统的任何其他多媒体技术。在一些实施例中,第一计算机器可执行基于第一类型的多媒体技术的第一框架320’,而第二计算机器可执行基于第二类型的多媒体技术的第二框架320。例如,第一计算机器可执行DIRECTSHOW框架320’,而第二计算机器可执行基于DMO多媒体技术的框架320。在又一个示例中,第一计算机器可执行基于MJ多媒体技术的框架320’,而第二计算机器可执行基于DMO多媒体技术的框架320。
在许多实施例中,DIRECSHOW框架320、320’是可以被用于格式化、修改和操作多媒体数据以及更具体地说是多媒体数据流的软件开发工具包或应用程序接口。在一些实施例中,DIRECSHOW框架320、320’可以被用于对由源过滤器330、330’输入的多媒体数据执行操作。在该框架中所包含的过滤器、模块、客户端或程序可以接收原始数据、格式化该原始数据、修改该原始数据以及对所输入的数据执行其他复杂的处理操作。在一些实施例中,在DIRECTSHOW框架320之内执行所述处理操作。外部应用可以经由DIRECTSHOW框架320、320’中所包含的通信接口与在DI RECTSHOW框架内输入和操作的数据相接口。在一些实施例中,这些通信接口可使用微软公司开发的COM技术。在其他实施例中,该通信接口可以是能够将来自模块、过滤器、客户端或DIRECTSHOW框架320、320’内执行的其他程序的信息转发到与该框架320、320’相接口的程序的任何通信接口。
在一个实施例中,DIRECSHOW框架320、320’执行源过滤器330、330’,所述源过滤器330、330’可检索来自多媒体驱动器316、316’的信息,并将该信息转发到在该框架320、320’内执行的其他过滤器和模块。在一些实施例中,源过滤器是在计算机器上且在框架320、320’内执行的模块、客户端或程序。在其他实施例中,源过滤器是由处理器执行的且由处理器在计算机器的内核空间中执行的服务和进程。在一些实施例中,源过滤器330、330’流式传输来自任何下列源的数据:驱动器、装置接口、装置、通信模块、虚通道306、网络、存储器库,或任何其他信息源。在许多实施例中,源过滤器330、330’在内核级别上而不是用户级别上流式传输(stream)来自源的多媒体数据。在其他实施例中,源过滤器330、330’可在用户或程序级别上流式传输数据。由源过滤器330、330’流式传输的数据经常被转发到在框架320、320’内执行的另外的模块、程序、客户端或过滤器。正如源过滤器330、330’流式传输来自驱动器或其他源的多媒体数据,源过滤器330、330’也可以将该多媒体数据流式传输到在框架320、320’内执行的另外的模块、客户端、过滤器和程序。
源过滤器330、330’可包括单个源过滤器,或者可包括多个过滤器。这些源过滤器330、330’可以与特定多媒体装置相关联,或者可以与特定多媒体数据类型(即视频、音频、文本)相关联。在一个实施例中,源过滤器330、330’可以包括流模块310,用于流式传输来自诸如多媒体装置驱动器316的源的多媒体内容。在一些实施例中,流模块310可以是在DIRECTSHOW框架320、320’内所包含的KSProxy过滤器。当流模块310是KSProxy过滤器或者是大体上具有与KSProxy过滤器相同功能的模块、过滤器或程序时,流模块310流式传输来自诸如驱动器、装置接口或来自能够将多媒体数据转发到在框架320、320’内执行的程序的其他接口或通信端口的多媒体数据。在一个实施例中,流模块310被包含在连接到多媒体装置302或者与多媒体装置302直接通信的计算机器上所安装的框架320、320’的实例中,就像图3A将第二计算机器300上的框架320描述成包括流模块310。在包括非DI RECTSHOW的框架320、320’或应用接口的实施例中,流模块310可以是能够从多媒体装置或者从与该多媒体装置通信的驱动器或其他接口检索原始的、未被格式化的多媒体数据的任何程序。
在一个实施例中,源过滤器330、330’可包括代理流模块308,其对应于远程计算机器上的流模块310。例如,在第一计算机器301上执行的DIRECTSHOW框架320’的实例中执行的代理流模块308对应于在第二计算机器300上执行的DI RECTSHOW框架320的实例内执行的流模块310。然而,代理流模块308流式传输来自网络104、虚通道306(例如在第一计算机器301和第二计算机器300之间的虚通道306)和任何其他多媒体源中任何一个的多媒体数据。在一些实施例中,代理流模块308通过流式传输来自计算机器上临时存储器库或高速缓存器的多媒体数据来流式传输来自虚通道306的多媒体数据。在应用/桌面传送系统322收到来自远程计算机器(即第二计算机器300)的多媒体数据之后,应用/桌面传送系统322或者与应用/桌面传送系统322通信的程序将多媒体数据存储到临时存储器库或高速缓存器中。在其他实施例中,代理流模块308打开或以其他方式建立虚通道306中的通道,并且通过所建立的通道流式传输直接来自远程计算机器(即第二计算机器300)的多媒体数据。
在框架320中包含的其他过滤器是转换过滤器326、326’和呈现过滤器328、328’。在一些实施例中,转换过滤器326、326’可以输入原始的或格式化的多媒体数据,并且进一步操作、修改或转换所输入的数据。例如,转换过滤器326、326’可输入多种视频流并将根据组合机制或根据用户指令将这些流接合在一起。在又一个实施例中,转换过滤器326、326’可以输入音频流和视频流,根据在每个流中包含的时间戳信息同步这些流,以及将这些流组合到单个多媒体数据流中。在又一个实施例中,转换过滤器326、326’可以将文本置于视频中或执行对所输入的数据流的其他类似的修改。
在一些实施例中,呈现过滤器328、328’可以呈现多媒体流。在一个实施例中,呈现过滤器328、328’可以输入音频流,并且在将该音频流转发到本地计算机器内的声卡之前根据需要格式化该音频流。在其他实施例中,呈现过滤器328、328’可以将该音频流转发到音频播放器,例如iTunes或Windows Media Player。在又一个实施例中,呈现过滤器328、328’可以输入视频流,并且在将该视频流转发到本地计算机器内的视频卡之前根据需要格式化该视频流。在其他实施例中,呈现过滤器328、328’可以将该视频流转发到视频播放器,例如iVideo或Windows Media Player。在又一个实施例中,呈现过滤器328、328’可以将所接收的视频绘制到屏幕、将所接收的图形绘制到屏幕、将所接收的文本绘制到屏幕、或者将所接收的多媒体数据写入到存储器单元。
在一些实施例中,DIRECTSHOW框架320、320’可包括应用吸收过滤器330、330’,其可用于将格式化的多媒体数据从DIRECTSHOW框架320流式传输到显示应用314、314’。在一个实施例中,对于每个可能的显示应用可以存在应用吸收过滤器330、330’。在其他实施例中,应用吸收过滤器330、330’根据文件类型或根据配置设置转发多媒体数据流。在使用不同于DIRECTSHOW框架的多媒体技术的框架中,呈现过滤器328可被称为吸收过滤器。因此,在DIRECTSHOW框架中,应用吸收过滤器330、330’可称为应用呈现过滤器330、330’。
在其他实施例中,DI RECTSHOW框架320、320’可包括多媒体吸收过滤器312、312’,其可被用于接收由多媒体装置302产生的流式多媒体数据并通过虚通道306将该流式多媒体数据传输到远程计算机器,例如第一计算机器301。在一些实施例中,多媒体吸收过滤器312、312’可以是接收、处理和传输视频和音频数据的视频/音频吸收过滤器312、312’。在其他实施例中,多媒体吸收过滤器312、312’可以是摄像头/麦克风吸收过滤器312、312’。在一个实施例中,视频/音频吸收过滤器312、312可以是一种类型的呈现过滤器328。在使用不同于DIRECTSHOW框架的多媒体技术的框架中,呈现过滤器328可被称为吸收过滤器。因此,在DIRECTSHOW框架中,视频/音频吸收过滤器312、312’可以被称为视频/音频呈现过滤器312、312’。
尽管图3B示出了单个多媒体装置302、302’,但在其他实施例中,计算机器300、301可以与多个多媒体装置通信。类似地,由流模块310接收的且由代理流模块308从虚通道306所流式传输的多媒体数据流可包括源自一个或多个多媒体装置的一个或多个数据流。例如,多媒体数据流可包括由两个不同的摄像头所产生的数据。流模块310可流式传输来自这两个摄像头的数据,并且远程处理应用或者应用/桌面传送系统322、322’可通过虚通道306流式传输这两个摄像头数据流。接着,代理流模块308可以从虚通道306流式传输包括第一和第二摄像头数据流的单个多媒体数据流。
图3B中所示的是示出DIRECTSHOW框架320、320’的又一个机制的系统的实施例。在一个实施例中,在第二计算机器300上执行的框架320的实例包括KSProxy过滤器340、编码器342和拦截器344。由在第二计算机器上执行的多媒体驱动器316获得或接收的多媒体信息/数据被流式传输到内核级别上的KSProxy过滤器340。拦截器344通过在第一计算机器301和第二计算机器300之间所安装的虚通道306流式传输所编码的多媒体信息。在第一计算机器301上的DIRECTSHOW框架320’中包含下列组件:接收器346、解码器347和代理多媒体装置348。代理多媒体装置348可与在第一计算机器301上执行的显示应用314通信。
进一步参考图3B,更具体地,在一个实施例中,KSProxy过滤器340具有与流模块310大体上相同的功能。在许多实施例中,KSProxy过滤器340流式传输直接来自多媒体装置驱动器316的多媒体数据,并且将所接收的多媒体数据流式传输到在DIRECTSHOW框架320中所包含的其他过滤器或模块。在一个实施例中,KSProxy过滤器340在内核级别上流式传输来自多媒体装置驱动器316的多媒体数据。在其他实施例中,KSProxy过滤器340在用户或应用级别上流式传输来自多媒体装置驱动器316的多媒体数据。
编码器342可以是任何编码器。在一个实施例中,编码器342可以接收来自KSProxy过滤器340的多媒体数据并且使用任何编解码器来编码该多媒体数据。特别是,编码器342可使用此处所描述的任何编解码器来编码该多媒体数据。用于编码多媒体数据的编解码器类型可以基于该多媒体数据流中所包含的数据的类型。例如,视频编码解码器可以用来编码视频数据,而音频编码解码器可用来编码音频数据。在许多实施例中,编码器342可以可通信地连接到KSProxy过滤器340或流模块310,使得编码器342可流式传输来自该过滤器340或该模块310的多媒体数据。在一个实施例中,编码器342和解码器347可以协商安全证书,并且在一些实施例中,可以交换加密密钥或其他加密代理。
拦截器344可以可通信地连接到编码器342,使得一旦多媒体数据被编码器342编码,拦截器344拦截该多媒体数据。这里可能涉及编码器/解码器协商。这样的协商可以是依据ICA或RAVE虚通道协议。在一些实施例中,拦截器344可以流式传输直接来自KSProxy过滤器340或流模块310的多媒体数据,使得该多媒体数据不被编码器342编码。在又一个实施例中,拦截器344包括与多媒体吸收过滤器312大体上相同的功能。在一些实施例中,拦截器344使用表示层协议与接收器346进行通信。一旦收到来自编码器342、KSProxy过滤器340/流模块310或来自一些其他过滤器或模块的多媒体数据,拦截器344传输或流式传输该多媒体数据到接收器346。在一个实施例中,拦截器344在将多媒体数据传输到远程计算机器之前以表示层协议封装多媒体数据分组。
尽管图3B示出了编码器342在拦截器344之前的框架320,但在其他实施例中,拦截器344可拦截多媒体数据并将其转发到编码器342。因此,在该实施例中,拦截器344在编码器342之前。在其他实施例中,图3B中示出的框架320、320’中的模块的布置不指示在流式传输多媒体数据、处理该多媒体数据、拦截该多媒体数据和传输该多媒体数据的过程中发生的动作的次序,或者在接收和处理通过虚通道306传输的多媒体数据的过程中发生的动作的次序。
在一些实施例中,接收器346接收来自远程计算机器的多媒体数据并将所接收的数据转发到在DIRECTSHOW框架320’中执行的其他过滤器、模块、客户端或程序。在至少一个实施例中,接收器346可在将多媒体数据流式传输到在DIRECTSHOW框架320’中执行的其他程序之前,解封以表示层协议封装的多媒体数据。在又一个实施例中,接收器346可以将该多媒体数据流式传输到解码器347或者直接流式传输到代理多媒体装置348。
在一些实施例中,解码器347可以使用用于编码该多媒体数据的编解码器来解码所接收的多媒体数据。这个编解码器可以是任何编解码器,更具体地说,可以是此处所描述的任何编解码器。在一个实施例中,解码器347在将多媒体数据流式传输到在框架320’中执行的另一个程序或组件之前,可以解压缩、解密或以其他方式解码该多媒体数据。
代理多媒体装置348可以流式传输来自框架320’中包含的任何过滤器的多媒体数据,但更具体地说是可以流式传输来自接收器346或解码器347的多媒体数据。在一个实施例中,代理多媒体装置348直接将所接收的多媒体数据流式传输到显示应用314,以使得显示应用314可以显示或呈现所接收的多媒体数据。在一些实施例中,框架320’可包括对于每个显示应用314的代理多媒体装置348。在其他实施例中,框架320’可包括对于每种多媒体数据类型的代理多媒体装置348。
图4所示的是描述从多媒体装置捕获多媒体数据的时刻到用户查看或听到该多媒体数据的时刻点,该多媒体数据经过的路径350的实施例的流程图的实施例。路径或过程350包括流模块310或KSProxy过滤器340流式传输来自多媒体驱动器316、316’的多媒体数据(步骤352),所述多媒体驱动器捕获由多媒体装置302、302’产生的多媒体数据。接着,该多媒体数据被框架320、320’内的模块拦截(步骤354),并且被流式传输到编码器342或转换过滤器326,在那里使用计算机器上的编解码器324来编码该多媒体数据(步骤356)。然后,通过虚通道306将所编码的多媒体数据传输到远程计算机器(步骤358)。在远程计算机器上执行的模块接收所传输的多媒体数据并且使用与用来编码该多媒体数据的那些编解码器对应的编解码器来解码该数据(步骤360)。代理模块流式传输来自收到该多媒体数据的应用的多媒体数据(步骤362),然后将该多媒体数据传输到显示应用(步骤364)。该显示应用接收流式多媒体数据并且将该多媒体数据呈现给用户。接着,应用/桌面传送应用可以捕获所呈现的数据并且将其发送回到第二计算机器300(步骤366)。
进一步参考图4,更具体地,在一个实施例中,流模块310或KSProxy过滤器340流式传输来自捕获由多媒体装置302、302’产生的多媒体数据的多媒体驱动器316、316’的多媒体数据。在一些实施例中,流模块310是KSProxy过滤器340,而在其他实施例中,流模块是能流式传输直接来自多媒体驱动器316、316’的多媒体数据的任何应用。在一些实施例中,流模块310在内核级别执行。在其他实施例中,流模块301在用户级别执行。
在一个实施例中,在DIRECTSHOW框架320、320’中执行的模块拦截由多媒体装置302、302’产生的多媒体数据(步骤354)。在一些实施例中,这个模块可以是在计算机器上执行的流模块310。在其他实施例中,这个模块可以是在计算机器上执行的代理流模块308。在一些实施例中,该模块可以通过流式传输直接来自装置驱动器316、316’的多媒体数据来拦截多媒体数据。在其他实施例中,该模块可以通过流式传输来自与装置驱动器316、316’通信的中间设备或中间应用的数据来拦截多媒体数据。
在其他实施例中,编码器342或转换过滤器326在传输之前编码多媒体数据(步骤356)。编码可包括压缩、转换或以其他方式加密多媒体数据。在一些实施例中,编码器342或转换过滤器326可以使用任何编码机制来编码多媒体数据。在其他实施例中,编码器342或转换过滤器326可以使用此处所描述的任何加密算法、压缩算法或编码算法来编码多媒体数据。尽管图4示出的过程350包括编码多媒体数据流,但在一些实施例中,过程350不包括在其中编码器对多媒体数据进行编码的编码步骤。
在一些实施例中,计算机器接着可以通过虚通道306将编码的多媒体数据传输到远程计算机器(步骤358)。在一个实施例中,应用/桌面传送系统322通过虚通道306传输所编码的多媒体数据。在其他实施例中,通过专用于计算机器的用户的虚通道306传输该多媒体数据。
在一些实施例中,在远程计算机器上执行的模块接收所传输的多媒体数据并且使用对应于用来编码该多媒体数据的那些编解码器的编解码器来解码该多媒体数据(步骤360)。在一些实施例中,可以将编解码器与多媒体数据一起进行传输。在其他实施例中,远程计算机器可以从本地计算机器请求编解码器。一旦收到编解码器,解码器或其他解码应用可以对所编码的多媒体数据进行解码。尽管图4示出由此解码多媒体数据的过程350,但在一些实施例中,不编码多媒体数据,并且因此不需要解码多媒体数据。
一旦远程计算机器收到多媒体数据,在一些实施例中,流模块310或代理流模块308流式传输来自接收应用的多媒体数据(步骤362)。在一些实施例中,代理流模块308流式传输来自应用/桌面传送系统322’的多媒体数据。在其他实施例中,流模块310流式传输来自应用/桌面传送系统322的多媒体数据。当流模块310或代理流模块308流式传输来自收到该多媒体数据的应用的多媒体数据时,该模块310、308可以将该多媒体数据流式传输到DI RECTSHOW框架320、320’。在一些实施例中,在将多媒体数据流式传输到框架320、320’中之后,多媒体数据可以进一步地被在框架320、320’中执行的过滤器或应用进行处理。
在一个实施例中,代理流模块308可以将多媒体显示转发到显示应用以用于显示(步骤364)。在一些实施例中,显示应用可以是能够显示、播放或呈现多媒体数据的任何显示应用。在其他实施例中,显示应用可以是此处所描述的任何显示应用。将多媒体数据转发到显示应用可包括流式传输、传输或以其他方式发送该显示数据到显示应用。在一些实施例中,转发多媒体数据可包括使用在DIRECTSHOW框架320、320’中包含的一个或多个过滤器格式化多媒体数据。在其他实施例中,转发多媒体数据可包括根据该显示应用的一个或多个过滤器格式化多媒体数据。
在一个实施例中,显示应用在从代理流模块308接收多媒体数据时显示、播放或呈现该多媒体数据。在其他实施例中,显示应用可以在与该显示应用在其上执行的计算机器通信的显示装置上显示和/或呈现该多媒体数据。在其他实施例中,显示应用在与该显示应用在其上执行的计算机器通信的扬声器上播放该多媒体数据。
在一些实施例中,远程处理应用拦截由显示应用产生的应用输出,并将被显示或播放的多媒体数据的显示数据发送到第二计算机器或客户机(步骤366)。拦截应用输出可包括拦截由显示应用所产生的图形、由显示应用所产生的音频数据和由显示应用所产生的视频。在一些实施例中,远程处理应用是远程访问客户端,例如由CITRX SYSTEMS有限公司制造的XEN APPLICATION或XEN DESKTOP。在其他实施例中,远程处理应用可以是使用表示层协议来拦截应用输出并将该输出传输到远程计算机或装置的任何客户端。
图5A所示的是远程地呈现多媒体输出的方法500的一个实施例。在一个实施例中,多媒体装置302、302’产生多媒体数据(步骤502)并且多媒体装置驱动器316、316’从多媒体装置检索或接收多媒体数据(步骤504)。在计算机器上执行的流模块310流式传输或传递来自多媒体装置驱动器316的多媒体数据(步骤506)到在DIRCTSHOW框架320、320’中执行的一个或多个过滤器和/或模块(步骤508)。然后,应用/桌面传送系统322、322’或远程处理应用拦截该多媒体数据(步骤510)并且通过虚通道306传输该多媒体数据(步骤512)。
进一步参考图5A,更具体地,在一个实施例中,多媒体装置302、302’产生多媒体数据(步骤502)。多媒体装置302、302’可以是任何多媒体装置,而在一些实施例中,多媒体装置302、302’可以是此处所述的任何多媒体装置。在一些实施例中,多媒体装置302、302’可以被连接到第二计算机器300,或者可以与第二计算机器300通信。在其他实施例中,多媒体装置302、302’可以被连接到第一计算机器301,或任何其他计算机器或计算机器。在一些实施例中,多媒体装置302、302’通过记录视频、图形或音频来产生多媒体数据。例如,多媒体装置302、302’可以是视频或网络摄像头,其捕获一段时间内场景的图像。捕获场景可包括产生表示在一段时间内发生在该场景中的事件的视频和/音频。在一些实施例中,该段时间是装置302、302’所设置的记录发生在该场景中的事件的一段时间。在一些实施例中,场景可以是能够被装置302、302’的镜头和/或麦克风察看或听到的区域。因此,装置302、302’可以记录在装置的镜头和麦克风前面讲话的人的动作或语音。
在一些实施例中,在计算机器上执行的多媒体装置驱动器316、316’可以从多媒体装置302、302’检索多媒体数据(步骤504)。在一些实施例中,检索多媒体数据可包括接收由多媒体装置302、302’传输到装置驱动器316、316’的数据。例如,多媒体装置302、302’可以产生多媒体数据并且大体上同一时间通过在装置302、302’和计算机器之间的连接将该多媒体数据传输到计算机器。在一些实施例中,多媒体装置驱动器316、316’可以接收来自多媒体装置302、302’的原始的输出,并且将该原始的输出转换成能够由在计算机器上执行的操作系统、DIRECTSHOW框架320、320’和其他应用解释的命令。在其他实施例中,多媒体装置302、302’能传输、流式传输或以其他方式发送所产生的多媒体数据到计算机器,在那里将该多媒体数据保存在存储器中。然后,多媒体装置驱动器316、316’可以从存储器单元检索多媒体数据。
在一些实施例中,在计算机器上执行的流模块310可流式传输来自多媒体装置驱动器316、316’的多媒体数据(步骤506)。尽管图5A示出了流模块310流式传输来自多媒体装置驱动器316、316’的数据的方法500,但在一些实施例中,流模块310可以流式传输直接来自多媒体装置302、302’的多媒体数据。在其他实施例中,流模块310可以在内核级别上而不是用户级别上流式传输来自驱动器316、316’的多媒体数据。在许多实施例中,流模块310在计算机器上的DI RECTSHOW框架320、320’内执行。因此,流模块310可以将来自多媒体装置驱动器316、316’的多媒体数据流式传输到框架320、320’。
在一些实施例中,流模块310将多媒体数据流式传输到在DIRECTSHOW框架320、320’中执行其他过滤器或模块(步骤508)。流式传输多媒体数据到过滤器和模块可包括传递、传输或以其他方式发送该多媒体数据到过滤器和模块。在一些实施例中,流模块310可响应于来自过滤器或模块的对多媒体数据的请求来流式传输多媒体数据到过滤器或模块。在一个实施例中,流模块310可以将来自多媒体装置驱动器316的多媒体数据流式传输到任何转换过滤器326、326’、呈现过滤器328、328’和/或视频/应用吸收过滤器。在一些实施例中,流模块310被包含在源过滤器330中,使得流模块310流式传输来自多媒体装置驱动器316、316’的多媒体数据,并且将该流式多媒体数据提供给希望或尝试访问该多媒体数据的任何过滤器或模块。在一些实施例中,流模块310流式传输多媒体数据到在框架320、320’中执行的且与显示应用314、314’关联的过滤器和模块。
在一些实施例中,远程处理应用可以在多媒体数据从多媒体装置302、302’被流式传输之后的任何时间拦截该多媒体数据(步骤510)。在一些实施例中,远程处理应用可以是此处所描述的任何远程处理应用。在其他实施例中,远程处理应用可以是应用/桌面传送系统332。在其他实施例中,远程处理应用可以是在计算机器上执行且使用表示层协议来向远程计算机器传输应用数据的任何应用、瘦客户端或程序。在一些实施例中,拦截多媒体数据可包括挂载到DIRECTSHOW框架320、320’中以使远程处理应用可以拦截对本地展示或显示应用所做的任何调用。在拦截或收到调用时,远程处理应用可以提取被包含在该调用中的多媒体数据并且将该多媒体数据传输到远程计算机器。在一些实施例中,远程处理应用可以是在应用/桌面传送系统322、322’中执行的模块或程序。该模块或程序可以注册为显示应用,使得每次多媒体数据被DIRECTSHOW框架320、320’处理时,该模块或程序代替在计算机器上执行的其他显示应用来接收该经处理的多媒体数据。在该实施例中,远程处理应用可以接收或捕获多媒体数据。
在一些实施例中,远程处理应用通过虚通道306将多媒体数据传输到远程计算机器(步骤512)。在一些实施例中,远程处理应用可以使用专门针对传输多媒体数据的远程表示协议来封装或修改该多媒体数据。一旦使用该协议封装多媒体数据,传送系统322、322’接着可以将封装的数据传输到远程计算机器。尽管图5A示出了其中多媒体数据被传输到一个远程计算机器的方法500,但在一些实施例中,多媒体数据可以被传输到经由虚通道306与计算机器通信的一个或多个远程机器。
在一些实施例中,方法500还可包括本地显示所捕获或拦截的多媒体数据的步骤。在拦截多媒体数据之后,在第二计算机器300上执行的显示预览应用323、323’可以接收和处理该多媒体数据。不是通过虚通道306传输该多媒体数据(步骤512),显示预览应用323、323’可以向远程计算机器查询与显示应用有关的控制信息,并且显示预览应用323、323’可以使用该信息产生应用输出窗口。然后,显示预览应用323、323’可以在应用输出窗口中显示多媒体数据。显示多媒体数据也可包括播放该多媒体数据中所包含的音频数据。
在一个实施例中,远程处理应用或在计算机器上执行以通过虚通道传输所拦截的多媒体数据(步骤512)的任何应用或程序可以执行一个或多个质量控制操作。在一些实施例中,质量控制操作可以包括确定虚通道306上可用带宽量,以及根据所确定的带宽改变传输速率。例如,当可用带宽量低时,该程序可以较慢的速率通过虚通道306传输多媒体数据以便获得最佳的吞吐率和最大化的质量。在其他实施例中,质量控制可以包括向流模块310、视频过滤器312或任何其他程序发送以较慢的速率采样来自多媒体装置302的多媒体数据的命令。在一个实施例中,该命令可包括指示可用带宽量的数据。在其他实施例中,该命令可包括基于可用带宽量所确定的采样速率。
图5B中所示的是用于接收远程提供的多媒体数据以及处理该多媒体数据的方法530的实施例。在一个实施例中,在远程计算机器的DIRECTSHOW框架320、320’中执行的代理流模块308流式传输来自虚通道306的多媒体数据(步骤532)并解码该流式多媒体数据(步骤534)。然后,代理流模块308将多媒体数据传递到在DIRECTSHOW框架320、320’中的其他过滤器和模块(步骤536)。在DIRECTSHOW框架320、320’中的过滤器或模块接着将该多媒体数据转发到显示应用314、314’(步骤538),所述显示应用314、314’显示该多媒体数据(步骤540)。在一些实施例中,在远程计算机器上执行的远程处理应用拦截由显示应用所产生的输出(步骤542)。
进一步参考图5B,更具体地,在一个实施例中,代理流模块308流式传输来自虚通道306的多媒体数据(步骤532)。在一些实施例中,代理流模块308在远程计算机器上执行,并且流式传输来自在计算机器和该远程计算机器之间的虚通道306的多媒体数据。在一些实施例中,该多媒体数据由与计算机器通信的多媒体装置产生,通过虚通道306被传输到远程计算机器,并且由代理流模块308从虚通道306对其进行流式传输。在一些实施例中,应用/桌面传送系统322、322’或远程处理应用接收通过虚通道306传输的多媒体数据,以及代理流模块308流式传输来自应用/桌面传送系统322、322’的多媒体数据。在该实施例中,代理流模块308可以是应用/桌面传送系统322、322’的一部分,同时被注册为DI RECTSHOW框架320、320’中的源过滤器。
在一些实施例中,解码多媒体数据流(步骤534)。在一些实施例中,代理流模块308解码多媒体数据流,而在其他实施例中,应用/桌面传送系统322、322’或远程处理应用解码该多媒体数据流。在一些实施例中,使用编解码器324、324’来解码该多媒体数据流。
在一些实施例中,代理流模块308传递或流式传输多媒体数据到在DIRECTSHOW框架320、320’中执行的其他过滤器或模块(步骤536)。传递多媒体数据到过滤器和模块可包括流式传输、传输或以其他方式发送该多媒体数据到过滤器和模块。在一些实施例中,代理流模块308可响应于来自过滤器或模块的对多媒体数据的请求来流式传输多媒体数据到过滤器或模块。在一个实施例中,代理流模块308可以将多媒体数据流式传输到任何转换过滤器326、326’、呈现过滤器328、328’和/或视频/应用吸收过滤器。在一些实施例中,代理流模块308在源过滤330中,使得代理流模块308流式传输多媒体数据到希望或尝试访问该多媒体数据的任何过滤器或模块。在一些实施例中,代理流模块308流式传输多媒体数据到在框架320、320’中执行的且与显示应用314、314’关联的过滤器和模块。
在一个实施例中,将多媒体数据转发到显示应用(步骤538)并且由显示应用对其进行显示(步骤540)。显示该数据可包括播放、显示或以其他方式呈现该多媒体数据。在一个实施例中,显示多媒体数据可包括在显示应用中显示视频聊天或网络摄像头输出,该显示应用例如Google Talk 
Figure BDA00001983492400421
Microsoft Communicator
Figure BDA00001983492400422
Instant Messenger
Figure BDA00001983492400423
或任何其他显示应用。
远程处理应用或应用/桌面传送系统322、322’接着可以拦截显示应用输出并且将其传输回到计算机器(步骤542)。例如,远程处理应用可以拦截由Google Talk
Figure BDA00001983492400424
Microsoft Communicator
Figure BDA00001983492400425
Instant Messenger
Figure BDA00001983492400426
或任何其他显示应用产生的输出,并且将该输出传输到计算机器。一旦收到该输出,计算机器可以在应用窗口中显示该输出和/或使用一个或多个音频应用来播放该输出。
在一些实施例中,方法530可以不包括拦截由显示应用产生的输出(步骤542)。相反,在该实施例中,显示应用仅仅显示多媒体数据(步骤540)。显示该数据可包括播放音频、显示视频或多媒体数据的任何其他显示或呈现。在该实施例中,第二计算机器300(或与多媒体装置通信的本地计算机器)仅仅给第一计算机器301(或执行显示应用的远程计算机器)供应多媒体数据。第一计算机器301显示多媒体数据并且不将应用输出传输到第二计算机器300用于在与第二计算机器300连接的显示装置上进行显示。
现参考图5C,示出了用于提供对远程网络装置上的桌面视频会议应用(例如XenApp或XenDesktop)的支持的系统的高级别实施例。在一些实施例中,本系统被称为Helios、反向RAVE或双向RAVE系统。该系统用于使用远程XenApp和XenDesktop机器提供视频会议解决方案。该系统可以包括用于在客户机和服务器之间传送数据和指令的各种功能和部件,例如编解码器和协议。该系统可以支持在客户机和服务器之间的Microsoft OfficeCommunicator(OCS)(微软办公通信器)视频和音频通信。在一些实施例中,本系统支持类似Skype和GoogleTalk的会议应用。在这样的实施例中,使用本地连接的摄像头的客户机可以使用在远程服务器上执行的即时通信视频会议。该系统可以被设计为在多种平台和操作系统上运行,包括此处所描述的所有操作系统和平台。
简要概述图5C,所示出的系统可涉及在其中多个客户机正使用在远程服务器上寄载的多媒体视频会议进行通信的实施例。客户机102A,也可以被称为ICA客户机,其可以被连接到捕获装置,例如麦克风或视频摄像头。捕获装置可以捕获并向该客户机传输原始的音频和/或视频数据。客户机102A可能会有兴趣经由在服务器106上执行的音频和/或视频会议应用与另一个客户机102B通信。客户机102可能没有或不使用本地执行的多媒体视频会议应用并且可能希望使用在服务器106上执行的这样的应用。服务器106也可以被称为XenAPP或XenDesktop服务器,其可以寄载任何数量的音频和/或视频会议应用,例如,Microsoft Office Communicator,Skype、GoogleTalk、Yahoo即时通信、MSG即时通信或者实现音频和/或视频会议的任何其他类型和形式的应用。客户机102A和102B可以与服务器106建立虚通道,以便开始音频/视频会议。
捕获装置,例如连接到客户机102A的网络摄像头(webcam),可以产生音频/视频流。可以任何数量的格式来产生音频/视频数据。ICA客户机102可选择特定本地格式的音频/视频数据,并且可以压缩该数据以便通过ICA将其传输到服务器106。服务器106可以解压缩该数据并将该数据传送到所寄载的应用。然后,该应用可以如它对来自本地连接的捕获装置的任何数据通常所做的一样来处理该数据并且处理抖动和格式变换。多媒体应用可以加载Citrix网络摄像头过滤器,该过滤器可以以其对该应用看起来像真实的捕获装置或摄像头的方式来与该多媒体应用相接口。该过滤器可以与该应用通信并且显得像标准的捕获装置,因此使该应用能够在经由该过滤器接收来自远程捕获装置的原始数据同时将该数据作为好像从本地捕获装置所接收的一样来对待。在这种情况下,该应用可以将传送来自远程客户机102的数据的过滤器看作为标准的、本地连接的捕获装置或摄像头。因此,应用可以接收原始数据,并且根据应用通过其认为所提供过滤器实际上是摄像头本身的设置来如该数据是从本地视频摄像头所产生的一样处理该数据。
现参考图5D,示出了使用一个或多个定制的过滤器来使得远程服务器上的多媒体应用能够处理由连接到客户机器的捕获装置产生的音频/视频数据的系统的实施例。简而言之,该系统可以使用DirectShow技术作为Microsoft Windows操作系统的一部分以便拦截来自捕获装置的视频、转码和压缩该视频。通常,捕获装置的制造者可以提供插件到Microsoft的内核流(Kernel Streaming)架构的驱动器。DirectShow可包括位于内核流层之上的一层,该层可以在应用和捕获装置之间交换数据。这样的DirectShow层可以被实现为标准过滤器,其以与其他过滤器所做的几乎相同的方式与多媒体拓扑交互。在一些实施例中,定制的过滤器可以被设计和提供以替换DirectShow捕获过滤器的功能。DirectShow可提供用于实现此特性的API,因此可能不需要任何钩子。在一些实施例中,定制的过滤器可以被注册在捕获装置类别下,因而使该过滤器对系统装置列举器可用。当所寄载的捕获应用列举诸如摄像头或麦克风的捕获装置时,这些所寄载的捕获应用可以实例化该系统装置列举器,并且接着列举捕获装置类别。本质上,新的捕获过滤器可以只是作为另一个网络摄像头对所寄载的应用可见。在这样的实施例中,用户可能仅需在应用选项中选择与该过滤器关联的选择选项。一旦新的捕获过滤器被该应用加载,该过滤器可以通过ICA协议与客户机通信。
通常,捕获装置可提供捕获应用可从中选择的几个不同的格式。DirectShow可提供接口,例如IAMStreamConfig接口,应用可使用所述接口来选择捕获装置的输出格式。新的捕获过滤器可以实现该接口并且返回与用于该系统的编解码器兼容的原始格式。ICA客户机接着可创建过滤器图并且将该捕获过滤器随同视频吸收过滤器一起进行加载。视频吸收过滤器可以被设计为接收来自捕获装置的视频以及可以被设计为通过ICA与主机侧捕获过滤器通信。这样的过滤器可以只是作为另一个网络摄像头对应用可见,因此用户仅需要在应用选项中选择它。一旦这个网络摄像头过滤器被该应用加载,该过滤器可以通过ICA协议与客户机通信。图5D示出了在其中显示了大量的系统过滤器的系统的实施例。在一些实施例中,该系统提供插件到DirectShow过滤器图(管道)的3个过滤器。这些过滤器可包括Citrix拦截过滤器、Citrix接收过滤器和前面提到的网络摄像头捕获过滤器。图5D中所示的其余过滤器可以是标准的Mirosoft或第三方组件。当网络摄像头过滤器被服务器上的应用加载时,该过滤器可以给客户机发送消息以创建过滤器图并且将真实的网络摄像头随同编码器和拦截过滤器一起进行加载。当应用开始从网络摄像头过滤器请求数据时,该请求可以被转发到客户机,然后该客户机可以开始向上游推送媒体样本。该系统可包括用于音频和视频同步的功能以确保所传送的音频和视频流是同步的。在一些实施例中,诸如Microsoft Office Communicator、Skype或GoogleTalk的应用可以使用图形API呈现输入到服务器的视频,接着可以以基于ICA的图形虚通道的形式将其传到远程。在一些实施例中,可以压缩输入流以及输出流。例如,可以通过转发(主机到客户机)RAVE或多媒体加速虚通道将多媒体输入流(包括音频和/或视频)传到远程。一旦收到,客户机接着可以解压缩和呈现该多媒体流。在一些实施例中,可以在主机会话中呈现该多媒体数据流。对于视频,这可能导致GDI/图形操作而不是经压缩的本地视频将要被传输到客户机。对于音频,该数据以原始的或PCM格式被传送到远程会话中的Citrix远程音频终端组件。该Citrix远程音频终端可能对其进行压缩,之后通过音频虚通道将其发送到ICA客户机。然后,ICA客户机可以解压缩该音频数据并且呈现它。
现参考图5E,示出了ICA引擎的实施例。ICA引擎可以被称为是关于数据捕获和向服务器106的数据传输的客户侧处理操作的高层抽象。简而言之,捕获装置的驱动器,例如网络摄像头KS驱动器(Webcam KS Driver),在客户机102的内核空间中操作。平台抽象层可以负责设置DirectShow管道(pipeline)以及加载实际的网络摄像头组件,例如,由捕获装置所产生的数据。网络摄像头KS驱动器可以与KsProxy DirectShow过滤器通信,其接着可以将数据转发到中间变换过滤器,所述中间变换过滤器最终将该数据转发到Citrix Video Sink(视频吸收)DirectShow过滤器,其也可以被称为CtxDSSink.dll。然后,该数据可以被转发到协议链接(也可以被称为ClientMMLink.dll)。该协议链接组件可以从视频吸收过滤器抽取虚通道实现细节。该协议链接也可以处理常见任务,例如压缩。一个或多个编解码器可以被用于压缩或解压缩。在一些实施例中,系统可以使用Theora编解码器来进行压缩和/或解压缩。数据可以被转发到虚通道(其也可以被称为vdmm.dll)。虚通道可以执行流聚合和会话管理。虚通道也可以使用RAVE ICA协议的扩展版本保持与服务器106(例如XenApp/XenDesktop服务器主机)的通信。然后,数据可以被传输到服务器106。
该系统可以在通过网络发送视频之前在客户机上压缩该视频。可能需要进行压缩以减少视频消耗的带宽量。例如,每秒30帧的、CIF 352x 288分辨率的原始RGB24数据可能要求大约72990720bps(差不多73Mbps!)。与只发送大量未压缩的视频相比,客户机可以花较少的CPU周期来压缩该视频,然后通过网络发送该视频。
所使用的编解码器可以是用于处理音频和/或视频数据的任何编解码器。在一些实施例中,编解码器包括可编辑的源代码以便修改该源代码并将其合成到每个多媒体平台的过滤器/吸收器中。该编解码器也可能需要该源代码来实时地控制编码器设置。在一些实施例中,编解码器不具有对平台的任何硬依赖,所述硬依赖会阻碍我们将编解码器合成到其他平台,例如Window、Linux或Macintosh。在另外的实施例中,编解码器足够快以每秒处理至少30帧或更多。在一些实施例中,编解码器以任何速度进行处理、例如每秒10帧、每秒20帧、每秒30帧、每秒40帧、每秒50帧、每秒60帧、每秒70帧、每秒80帧、每秒90帧或每秒100帧。在另外的实施例中,编解码器以超过每秒100帧的速度处理数据,例如每秒110、120、150、180、200和高达500帧。
现参考图5F,示出了应用空间的实施例。可以从以mmvd.dll实现的虚通道接收视频。虚通道可以寄载于Wfshell.exe进程中。虚通道可以执行流聚合和会话管理,并且可以使用RAVE ICA协议与客户机通信。数据可以被向上传输到协议编组(marshal)接口。协议编组接口可以是使用命名管道与虚通道通信的层。编解码器可以接收数据并且可以使用Theroa功能来压缩或解压缩数据。数据可以被转发到协议链接(也可以被称为HostMMLink.dll)。该协议链接组件可以从视频吸收过滤器抽取虚通道实现细节,并且必要时进行压缩/解压缩。Citrix Webcam DirectShow过滤器可以接收和处理数据,其可以将数据转发到中间变换过滤器,所述中间变换过滤器然后可以将数据转发到应用吸收过滤器。已管理DirectShow管道并设置了网络摄像头过滤器的应用可以接收该数据并显示该数据。
现参考图5G,示出了协议序列的实施例。协议序列可以被设计为最小化过滤器内部的协议相关代码。过滤器可以被修改为处理特定于多媒体平台的事务,而同时尽可能独立于协议序列。可以从过滤器中抽取出所有其他常见功能并将其放入普通组件中。这样的特性可以更容易地将过滤器移植到其他多媒体框架,例如Windows Media Foundation和GStreamer。在一些实施例中,该系统可重用和利用已有的RAVE虚通道,而不是创建新的虚通道。在这样的实施例中,已有的ICA虚通道系统可以提供任何可用的虚通道,本系统可以经由所述虚通道操作。
参考图5G,更具体地,示出了主机和客户机之间的协议序列。诸如服务器106的主机可以将创建流请求传输到客户机102。客户机可以将创建流响应传输回到服务器106。客户机可以创建拓扑并加载视频吸收过滤器。主机服务器可加载捕获过滤器,例如应用将其看作捕获装置的定制的过滤器。主机上的应用可以启动捕获。可以将播放指令从主机服务器传输到客户机。客户机可以使用捕获装置产生样本并将样本传输到主机服务器。主机服务器可以将样本传送到应用。将捕获过滤器误认为捕获装置的应用会就像该数据是从本地连接的捕获装置传送的一样进行操作。一旦应用发出停止捕获的指令,客户机消除该拓扑。主机服务器可以传输删除所述流请求的请求。主机也可以卸载捕获过滤器。
在又一个实施例中,客户机可以在应用输出窗口中直接(本地)显示由本地多媒体装置捕获的多媒体数据。该操作可以被称为本地预览,并且与将数据从服务器机器流式传输回到其源自的客户机相比,该操作可以是一种优化选择。客户机可能需要意识到在哪里和如何显示数据,例如父应用窗口、预览窗口大小、位置、远程会话中裁剪。客户机器可以接收来自在服务机器上运行的展示应用的控制信息而不是多媒体数据。
例如,在两个客户机通过电话会议通信的一些实施例中,由第一客户机上的本地多媒体捕获装置所捕获的多媒体数据可以直接在第一客户机本地进行处理、呈现和显示,而仅接收由远程服务器上的展示应用所处理的、来自第二客户机的应用输出多媒体数据。在这样的实施例中,第二客户机也可以处理和显示在第二客户机上本地产生的多媒体数据,而从远程服务器接收来自远程服务器的、第一客户机的多媒体应用输出数据。在这样的实施例中,通过不要求远程服务器传输回本地产生的多媒体流,而是使用本地产生的多媒体来对其进行本地显示同时依靠远程服务器仅传送从另一个远程客户机产生的多媒体流的多媒体输出数据,这两个客户机能有助于节省带宽。主机服务器和客户机器都可以被配置为需要传输和/或处理多媒体数据的命令或指令的发送器以及接收器。更具体地参考图5G,可以协商客户机和主服务器之间的虚通道协议通信(其也可以被称为RAVE VC或RAVE虚通道)以便于在客户机和服务器之间传输多媒体数据。可以基于协议版本或设置的类型来支持客户机到主机(或客户机到主服务器)媒体流或传输。
客户机到主机(C2H)媒体流可以允许主机选择特定捕获装置、协商由装置支持的本地媒体类型(包括分辨率)以及协商可选的RAVE VC级别的压缩媒体类型,例如Theora编解码器。多媒体虚通道协议可以包括对C2H(捕获)媒体流的支持,其可以被称为反向RAVE,其也可以借助于CTXMM_TYPE_CAPABILITY_C2H_MEDIA_STREAMS能力来进行协商。确切的媒体流类型可以由MMVD_CMD_CREATE_CONTEXT_REQUEST命令中提供的媒体属性元素的类型来确定。
在一个示例中,客户机可以借助即插即用(PnP)通知通过控制虚通道(VC)来通知媒体捕获装置的主机。控制VC可以提供媒体捕获装置说明和由该装置支持的本地媒体类型的非空列表。捕获分辨率可以被定义为类型的一部分。例如对于没有通过控制VC实现此能力的客户机,主机可以假设存在一个默认装置,其具有默认的(未被压缩/原始)本机类型和默认分辨率。主服务器以及展示应用可选择特定的媒体装置,并且也可以请求使用将要与所选择的装置一起使用的特定的本机媒体类型,加上可通过RAVE VC使用的、按照降序列出的、由主机支持的压缩媒体类型。如果仅提供一种类型,那么RAVE VC本身不应用任何压缩,尽管由所选择的装置支持的本机媒体类型仍然可能是压缩类型。如果提供不只一种类型,客户机可通过选择主机所提供的其中一个媒体类型来决定是否对RAVE VC本身使用压缩。
任何压缩类型可以被用于压缩数据。与对于ICA会话的全局性相反,可以在每个流上下文基础上实现压缩类型能力协商,以便提供更多的灵活性。例如,RACE VC可直接以主机展示应用期望的媒体类型格式进行编码,并且避免通过VC进行转码。
即插即用通知可以在客户机和主服务器之间进行传输以便使服务器能将在服务器上执行的与客户机关联的过滤器或功能看做多媒体捕获装置。在一些实施例中,通过虚通道将即插即用通知从客户机传输到服务器。在服务器侧,例如与服务器和客户机之间的多媒体通信关联的过滤器的代理可以接收即插即用通知并且将其继续传递到相关的展示应用。该应用可以处理该即插即用通知并且将在服务器执行的该代理或功能识别为特定捕获装置,例如本地连接到服务器的网络摄像头或麦克风。事实上,该代理可能仅代表所寄载的应用与捕获装置(例如连接到客户机的网络摄像头)的通信的功能。接着,该应用可以与该代理进行通信,就好像该代理是多媒体捕获装置一样。必要时,该代理可以转发客户机和展示应用之间的通信、指令和数据。因此,在必要时,所寄载的应用可处理来自远程捕获装置的数据。在下列专利中描述了即插即用特性:2004年9月29日提交的、标题为“System and Method forEvent Detection and Re-direction over a Network using a PresentationLevel Protocol”的美国专利No.7702750和2010年4月20提交的、标题为“System and Method for Event Detection and Re-direction over a NetworkUsing a Presentation Level Protocol”的美国专利申请No.12/763492,这两个申请通过应用被整体包含于此。
在一些实施例中,为了设置直接的、客户机到客户机的流式传输,需要建立端点A和端点B之间的直接连接。端点A’(在服务器上的虚拟会议中)可仅充当用于与端点B握手和控制的代理,但视频从本地网络摄像头(端点A)被直接输送到端点B。端点A可以是本地客户机器上的本地网络摄像头。端点A’可以被称为虚拟/远程会话中的应用。端点B可包括在该视频/音频通信的另一侧上的实体。在一些实施例中,为了获得最佳吞吐量和最大可能的质量,客户机侧视频采样频率可以根据带宽可用性而变化。
尽管已经在附图中显示并且已经表述了某些示例实施例,应理解这样的实施例仅是说明而非限制此处所述的方法和系统。此外,可以以音频、可编程装置、固件、软件或上述的组合的形式来实现此处所述的方法和系统或其特征中的某些特征。此处所述的方法和系统或者此处所述的方法和系统的部分也可以被实现在处理器可读存储介质或机器可读介质中,例如磁性介质(例如硬盘驱动器、软盘驱动器)、光学介质(例如光盘、数字多功能光盘等)或半导体存储介质(易失或非易失)。

Claims (34)

1.一种用于由在远程计算装置上执行的应用在本地计算装置上显示由连接到所述本地计算装置的多媒体装置产生的多媒体数据的方法,所述远程计算装置经由虚通道与所述本地计算装置通信,所述方法包括:
由在远程计算装置上执行的代理流模块流式传输经由虚通道从本地计算装置接收的多媒体数据,所述多媒体数据是由与该本地计算装置关联的多媒体装置产生的;
由所述代理流模块将所述多媒体数据转发到在远程计算装置上执行的展示应用,所述展示应用产生多媒体应用输出;
由在所述远程计算装置上执行的远程处理应用捕获所产生的多媒体应用输出;以及
由在所述远程计算装置上执行的远程处理应用将该所产生的多媒体应用输出传输到本地计算装置,用于在本地计算装置的应用输出窗口中进行显示。
2.根据权利要求1所述的方法,其中流式传输还包括响应于接收来自本地计算装置的用户的、执行所述展示应用的请求来流式传输所述多媒体数据。
3.根据权利要求1所述的方法,其中流式传输还包括由在本地计算装置上执行的本地流模块经由虚通道将所述多媒体数据传输到远程计算装置。
4.根据权利要求所述3的方法,还包括:
由在本地计算装置上执行的本地流模块流式传输来自多媒体装置接口的多媒体数据;以及
由在本地计算装置上执行的本地流模块将该多媒体数据流式传输到在本地计算装置上执行的本地远程处理应用。
5.根据权利要求1所述的方法,还包括由在本地计算装置上执行的编码器在将该多媒体数据传输到远程计算装置之前对该多媒体数据进行编码。
6.根据权利要求5所述的方法,还包括由在远程计算装置上执行的解码器在将该多媒体数据转发到所述展示应用之前对该多媒体数据进行解码。
7.根据权利要求1所述的方法,还包括由在本地计算装置上执行的本地远程处理应用构造分组以在将包含该多媒体数据的分组传输到远程计算装置之前将该多媒体数据包含在协议包装器中。
8.根据权利要求7所述的方法,还包括由在远程计算装置上执行的远程处理应用在将所述多媒体数据转发到所述展示应用之前解构所述分组以从所述分组提取所述多媒体数据。
9.根据权利要求1所述的方法,还包括由在本地计算装置上执行的编码器在将该多媒体数据传输到远程计算装置之前对该多媒体数据进行加密。
10.根据权利要求1所述的方法,还包括由在远程计算装置上执行的解码器对从本地计算装置接收的多媒体数据进行解密。
11.根据权利要求1所述的方法,还包括由所述展示应用将所述多媒体数据存储在存储库中。
12.一种用于由在远程计算装置上执行的应用在本地计算装置上显示由连接到所述本地计算装置的多媒体装置产生的多媒体数据的系统,所述远程计算装置经由虚通道与所述本地计算装置通信,所述系统包括:
本地计算装置;
与所述本地计算装置通信的多媒体装置,所述多媒体装置产生多媒体数据;
远程计算装置,其寄载代理流模块的执行以流式传输经由虚通道从所述本地计算装置接收的多媒体数据,并且将该多媒体数据转发到在所述远程计算装置上执行的展示应用;
其中,所述展示应用产生多媒体应用输出,并且远程处理应用捕获所产生的多媒体应用输出并将该多媒体应用输出传输到本地计算装置用于在本地计算装置的应用输出窗口中进行显示。
13.根据权利要求12所述的系统,其中代理流模块响应于接收来自本地计算装置的用户的、执行所述展示应用的请求来流式传输所述多媒体数据。
14.根据权利要求12所述的系统,还包括在本地计算装置上执行的本地远程处理应用,其通过虚通道传输所述多媒体数据到远程计算装置。
15.根据权利要求14所述的系统,还包括在本地计算装置上执行的流模块,其将来自多媒体接口的多媒体数据流式传输到在本地计算装置上执行的远程处理应用。
16.根据权利要求12所述的系统,还包括在本地计算装置上执行的编码器,其在将多媒体数据传输到远程计算装置之前对该多媒体数据进行编码。
17.根据权利要求16所述的系统,还包括在远程计算装置上执行的解码器,其在将多媒体数据转发到所述展示应用之前对该多媒体数据进行解码。
18.根据权利要求14所述的系统,其中,在本地计算装置上执行的本地远程处理应用构造分组以在将包含该多媒体数据的分组传输到远程计算装置之前将多媒体数据包含在协议包装器中。
19.根据权利要求17所述的系统,其中,在远程计算装置上执行的远程处理应用在将多媒体数据转发到所述展示应用之前,通过从所述分组提取该多媒体数据来解构所述分组。
20.根据权利要求12所述的系统,其中,所述展示应用将所述多媒体数据存储在存储库中。
21.一种用于由在远程服务器上执行的应用在客户机装置上显示由连接到该客户机装置的多媒体装置产生的多媒体数据的方法,所述方法包括:
由客户机装置的一个或多个过滤器将多媒体数据转换为符合在客户机装置和远程服务器之间所建立的虚通道的协议;
由在客户机装置上执行的流模块经由所述虚通道将压缩的多媒体数据转发到远程服务器;
由在远程服务器上执行的代理流模块流式传输经由所述虚通道从客户机装置接收的多媒体数据;
由所述代理流模块将多媒体数据转发到在远程服务器上执行的展示应用;
由在远程服务器上执行的远程处理应用捕获在展示所述多媒体数据期间由所述展示应用产生的应用输出;以及
由在远程计算装置上执行的远程处理应用将所述应用输出传输到本地计算装置;以及
由客户机装置在应用输出窗口中显示所述应用输出。
22.一种用于由在远程计算装置上执行的应用在本地计算装置上显示由连接到所述本地计算装置的多媒体装置所产生的多媒体数据的方法,所述远程计算装置经由虚通道与所述本地计算装置通信,所述方法包括:
由本地计算装置经由虚通道流式传输多媒体数据到远程计算装置,所述多媒体数据是由与本地计算装置关联的多媒体装置产生的并且包括对在远程计算装置上执行的展示应用的输入;
响应于所传输的多媒体数据,从远程计算装置接收由所述展示应用产生的应用输出,所接收的应用输出包括由多媒体装置产生的多媒体数据和由第三计算装置产生的第二多媒体数据流。
23.根据权利要求22所述的方法,其中流式传输还包括响应于接收来自本地计算装置的用户的、执行所述展示应用的请求来流式传输所述多媒体数据。
24.根据权利要求22所述的方法,其中流式传输还包括由在本地计算装置上执行的本地流模块经由虚通道将所述多媒体数据传输到远程计算装置。
25.根据权利要求24所述的方法,还包括:
由在本地计算装置上执行的本地流模块流式传输来自多媒体装置接口的多媒体数据;以及
由在本地计算装置上执行的本地流模块流式传输该多媒体数据到在本地计算装置上执行的本地远程处理应用。
26.根据权利要求22所述的方法,还包括由在本地计算装置上执行的编码器在将该多媒体数据传输到远程计算装置之前对该多媒体数据进行编码。
27.根据权利要求22所述的方法,还包括由在本地计算装置上执行的本地远程处理应用构造分组以在将包含该多媒体数据的分组传输到远程计算装置之前将该多媒体数据包含在协议包装器中。
28.根据权利要求22所述的方法,还包括由在本地计算装置上执行的编码器在将该多媒体数据传输到远程计算装置之前对该多媒体数据进行加密。
29.一种用于在系统中使用的本地计算装置,在所述系统中,通过在远程计算装置上执行的应用将由连接到该本地计算装置的多媒体装置产生的多媒体数据显示在本地计算装置上,所述本地计算装置包括:
多媒体接口,用于从与本地计算装置关联的多媒体装置获取多媒体数据,所述多媒体数据包括对在远程计算装置上执行的展示应用的输入;
流模块,用于经由虚通道将所获取的多媒体数据传输到远程计算装置;
本地代理,用于响应于所传输的多媒体数据,从远程计算装置接收由所述展示应用产生的应用输出,所接收的应用输出包括由多媒体装置产生的多媒体数据和由第三计算装置产生的第二多媒体数据流。
30.根据权利要求29所述的本地计算装置,其中所述流模块响应于接收来自本地计算装置的用户的、执行所述展示应用的请求来流式传输所述多媒体数据。
31.根据权利要求29所述的系统,其中所述流模块在本地计算装置上执行并且流式传输直接来自所述多媒体接口的多媒体数据。
32.根据权利要求29所述的系统,还包括在本地计算装置上执行的编码器,其在向远程计算装置进行传输之前对所获取的多媒体数据进行编码。
33.根据权利要求29所述的系统,还包括分组引擎,其在本地计算装置上执行并且构造分组以在将包含该多媒体数据的分组传输到远程计算装置之前将所获取的多媒体数据包含在协议包装器中。
34.一种用于在系统中使用的本地计算装置,在所述系统中,通过在远程计算装置上执行的应用将由连接到该本地计算装置的多媒体装置产生的多媒体数据显示在本地计算装置上,所述本地计算装置包括:
用于由本地计算装置经由虚通道向远程计算装置流式传输多媒体数据的装置,所述多媒体数据是由与本地计算装置关联的多媒体装置产生的并且包括对在远程计算装置上执行的展示应用的输入;
用于响应于所传输的多媒体数据,从远程计算装置接收由所述展示应用产生的应用输出的装置,所接收的应用输出包括由多媒体装置产生的多媒体数据和由第三计算装置产生的第二多媒体数据流。
CN201080063306.1A 2009-12-08 2010-12-08 用于多媒体流的客户机侧远程呈现的系统和方法 Active CN102741830B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US26768609P 2009-12-08 2009-12-08
US61/267686 2009-12-08
US61/267,686 2009-12-08
PCT/US2010/059526 WO2011072049A2 (en) 2009-12-08 2010-12-08 Systems and methods for a client-side remote presentation of a multimedia stream

Publications (2)

Publication Number Publication Date
CN102741830A true CN102741830A (zh) 2012-10-17
CN102741830B CN102741830B (zh) 2016-07-13

Family

ID=44083116

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080063306.1A Active CN102741830B (zh) 2009-12-08 2010-12-08 用于多媒体流的客户机侧远程呈现的系统和方法

Country Status (4)

Country Link
US (2) US9191425B2 (zh)
EP (1) EP2510454B1 (zh)
CN (1) CN102741830B (zh)
WO (1) WO2011072049A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017161562A1 (zh) * 2016-03-25 2017-09-28 华为技术有限公司 网络功能虚拟化环境下应用的管理方法和装置

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1855429A3 (en) 1999-10-22 2010-03-24 Nomadix, Inc. Systems and methods for dynamic bandwidth management on a per subscriber basis in a communication network
WO2008042804A2 (en) 2006-09-29 2008-04-10 Nomadix, Inc. Systems and methods for injecting content
ES2741532T3 (es) * 2008-12-23 2020-02-11 Ericsson Telefon Ab L M Distribución de elementos de contenido a dispositivos de usuario en un entorno móvil
TWI444044B (zh) * 2009-03-31 2014-07-01 Ibm 遠距應用中傳輸資料之裝置、方法與電腦程式產品
US20110030037A1 (en) 2009-07-07 2011-02-03 Vadim Olshansky Zone migration in network access
US8140702B2 (en) * 2009-12-28 2012-03-20 General Instrument Corporation System and method of maximizing utility in media delivery network
US8601056B2 (en) * 2010-03-09 2013-12-03 Avistar Communications Corporation Scalable high-performance interactive real-time media architectures for virtual desktop environments
US8754900B2 (en) 2010-06-17 2014-06-17 Thinci, Inc. Processing of graphics data of a server system for transmission
US9373152B2 (en) 2010-06-17 2016-06-21 Thinci, Inc. Processing of graphics data of a server system for transmission including multiple rendering passes
US20120057629A1 (en) * 2010-09-02 2012-03-08 Fang Shi Rho-domain Metrics
US9237363B2 (en) * 2011-02-12 2016-01-12 Openwave Mobility, Inc. Dynamic injection of metadata into flash video
TW201249135A (en) * 2011-05-30 2012-12-01 Wistron Corp Remote management method and remote management system
US9712847B2 (en) * 2011-09-20 2017-07-18 Microsoft Technology Licensing, Llc Low-complexity remote presentation session encoder using subsampling in color conversion space
US20130083210A1 (en) * 2011-09-30 2013-04-04 Successfactors, Inc. Screen and webcam video capture techniques
US8872883B2 (en) * 2011-11-02 2014-10-28 Octavio Cesar Silva ViSTORE
TWI451268B (zh) * 2011-11-08 2014-09-01 Inst Information Industry 提供虛擬桌面之雲端系統、於虛擬桌面播放多媒體之方法以及其電腦可讀取記錄媒體
KR101467430B1 (ko) * 2011-12-12 2014-12-01 주식회사 케이티 클라우드 컴퓨팅 기반 어플리케이션 제공 방법 및 시스템
US20130254417A1 (en) * 2012-03-21 2013-09-26 Jason Nicholls System method device for streaming video
US9092090B2 (en) * 2012-05-17 2015-07-28 Hong Kong Applied Science And Technology Research Institute Co., Ltd. Structured light for touch or gesture detection
US9325676B2 (en) * 2012-05-24 2016-04-26 Ip Ghoster, Inc. Systems and methods for protecting communications between nodes
US9218526B2 (en) 2012-05-24 2015-12-22 HJ Laboratories, LLC Apparatus and method to detect a paper document using one or more sensors
US10778659B2 (en) 2012-05-24 2020-09-15 Smart Security Systems Llc System and method for protecting communications
US20140122544A1 (en) * 2012-06-28 2014-05-01 Transoft Technology, Inc. File wrapper supporting virtual paths and conditional logic
US9489471B2 (en) 2012-06-29 2016-11-08 Dell Products L.P. Flash redirection with caching
US9626450B2 (en) 2012-06-29 2017-04-18 Dell Products L.P. Flash redirection with browser calls caching
US9354764B2 (en) 2012-06-29 2016-05-31 Dell Products L.P. Playback of flash content at a client by redirecting execution of a script by a flash redirection plugin at a server to a flash redirection browser at the client
CN103684970B (zh) * 2012-09-05 2018-04-27 中兴通讯股份有限公司 媒体数据流的传输方法和瘦终端
US10171540B2 (en) * 2012-09-07 2019-01-01 High Sec Labs Ltd Method and apparatus for streaming video security
KR101720654B1 (ko) * 2012-09-14 2017-03-28 한국전자통신연구원 가상화 시스템 및 가상화 서비스 제공방법
US9444862B2 (en) * 2012-09-29 2016-09-13 Intel Corporation Dynamic media content output for mobile devices
WO2014100384A1 (en) * 2012-12-19 2014-06-26 Rabbit, Inc. Audio video streaming system and method
US9369670B2 (en) 2012-12-19 2016-06-14 Rabbit, Inc. Audio video streaming system and method
US9755847B2 (en) 2012-12-19 2017-09-05 Rabbit, Inc. Method and system for sharing and discovery
US20140196039A1 (en) 2013-01-08 2014-07-10 Commvault Systems, Inc. Virtual machine categorization system and method
US9363472B2 (en) 2013-03-14 2016-06-07 Samsung Electronics Co., Ltd. Video injection for video communication
US9124668B2 (en) 2013-05-20 2015-09-01 Citrix Systems, Inc. Multimedia redirection in a virtualized environment using a proxy server
US9398057B2 (en) 2013-06-04 2016-07-19 Dropbox, Inc. System and method for group participation in a digital media presentation
US9407728B2 (en) 2013-11-08 2016-08-02 Dropbox, Inc. Content item presentation system
US10382595B2 (en) 2014-01-29 2019-08-13 Smart Security Systems Llc Systems and methods for protecting communications
US20150312444A1 (en) * 2014-04-29 2015-10-29 Xiaomi Inc. Method and device for synchronizing photograph
CN105323534B (zh) * 2014-07-14 2019-04-23 深圳市潮流网络技术有限公司 一种第三方应用的会议处理方法和通讯设备
US20160019317A1 (en) 2014-07-16 2016-01-21 Commvault Systems, Inc. Volume or virtual machine level backup and generating placeholders for virtual machine files
TWI554089B (zh) * 2014-09-29 2016-10-11 緯創資通股份有限公司 影音分享方法與系統
US10355964B2 (en) 2014-10-31 2019-07-16 At&T Intellectual Property I, L.P. Method and system to capture selected network data
US9983936B2 (en) 2014-11-20 2018-05-29 Commvault Systems, Inc. Virtual machine change block tracking
CN104461698A (zh) * 2014-12-29 2015-03-25 成都致云科技有限公司 虚拟磁盘动态挂载的方法、管理装置及分布式存储系统
WO2017179859A1 (ko) * 2016-04-10 2017-10-19 엘지전자 주식회사 무선 통신 시스템에서 상향링크 참조 신호를 전송하는 방법 및 장치
US10678758B2 (en) 2016-11-21 2020-06-09 Commvault Systems, Inc. Cross-platform virtual machine data and memory backup and replication
US20180276022A1 (en) 2017-03-24 2018-09-27 Commvault Systems, Inc. Consistent virtual machine replication
US10387073B2 (en) 2017-03-29 2019-08-20 Commvault Systems, Inc. External dynamic virtual machine synchronization
US11394731B2 (en) * 2017-05-16 2022-07-19 Citrix Systems, Inc. Computer system providing anomaly detection within a virtual computing sessions and related methods
US10441885B2 (en) 2017-06-12 2019-10-15 Microsoft Technology Licensing, Llc Audio balancing for multi-source audiovisual streaming
US10545625B2 (en) * 2017-09-11 2020-01-28 Citrix Systems, Inc. Redirection of web content
US11194930B2 (en) 2018-04-27 2021-12-07 Datatrendz, Llc Unobtrusive systems and methods for collecting, processing and securing information transmitted over a network
US10462216B1 (en) 2018-05-04 2019-10-29 Citrix Systems, Inc. WebRTC API redirection with interception techniques
EP3825850A1 (en) 2018-05-04 2021-05-26 Citrix Systems, Inc. Computer system providing improved transfer protocol for remote computing using multiple virtual channels having different priorities.
US11824785B2 (en) 2018-05-04 2023-11-21 Citrix Systems, Inc. Systems and methods for remote computing session display based upon user input event prioritization
WO2019222641A1 (en) * 2018-05-18 2019-11-21 Corindus, Inc. Remote communications and control system for robotic interventional procedures
US10819817B2 (en) * 2019-02-04 2020-10-27 Dell Products L.P. HTML5 multimedia redirection
US11868819B2 (en) * 2019-11-01 2024-01-09 Grass Valley Limited System and method for constructing filter graph-based media processing pipelines in a browser
CN112042179B (zh) * 2019-12-19 2022-05-03 威创集团股份有限公司 一种用于拼接显示的信号处理装置及其信号处理方法
US11687513B2 (en) 2020-05-26 2023-06-27 Molecula Corp. Virtual data source manager of data virtualization-based architecture
US11263026B2 (en) * 2020-05-26 2022-03-01 Molecula Corp. Software plugins of data virtualization-based architecture
US11960616B2 (en) 2020-05-26 2024-04-16 Molecula Corp. Virtual data sources of data virtualization-based architecture
US11876844B2 (en) * 2021-04-01 2024-01-16 Active Video Networks, Inc. Systems and methods of alternative networked application services for video-conferencing applications
WO2022212319A1 (en) * 2021-04-01 2022-10-06 Activevideo Networks, Inc. Systems and methods of alternative networked application services for video-conferencing applications
US20230044823A1 (en) * 2021-08-09 2023-02-09 Xcelastream, Inc. Multi-presence application architecture

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1913518A (zh) * 2005-08-12 2007-02-14 三星电子株式会社 网络显示设备及其控制方法
US20070263087A1 (en) * 2006-02-16 2007-11-15 Danny Hong System And Method For Thinning Of Scalable Video Coding Bit-Streams
US7362349B2 (en) * 2002-07-10 2008-04-22 Seiko Epson Corporation Multi-participant conference system with controllable content delivery using a client monitor back-channel
CN101378361A (zh) * 2007-08-31 2009-03-04 株式会社日立制作所 通信量控制系统以及通信量控制方法

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5737011A (en) * 1995-05-03 1998-04-07 Bell Communications Research, Inc. Infinitely expandable real-time video conferencing system
CN1492599B (zh) * 1995-12-19 2012-09-05 摩托罗拉移动公司 通信定额控制的方法和系统
US6732183B1 (en) * 1996-12-31 2004-05-04 Broadware Technologies, Inc. Video and audio streaming for multiple users
US6687745B1 (en) 1999-09-14 2004-02-03 Droplet, Inc System and method for delivering a graphical user interface of remote applications over a thin bandwidth connection
KR20020064888A (ko) 1999-10-22 2002-08-10 액티브스카이 인코포레이티드 객체 지향형 비디오 시스템
US6532467B1 (en) * 2000-04-10 2003-03-11 Sas Institute Inc. Method for selecting node variables in a binary decision tree structure
US20020161685A1 (en) * 2001-04-25 2002-10-31 Michael Dwinnell Broadcasting information and providing data access over the internet to investors and managers on demand
US7302465B2 (en) * 2001-10-22 2007-11-27 Comverse, Inc. Distributed multimedia transfer
US7574653B2 (en) * 2002-10-11 2009-08-11 Microsoft Corporation Adaptive image formatting control
CN1571508B (zh) * 2003-07-19 2010-05-12 华为技术有限公司 一种实现多画面的方法
US7373395B2 (en) 2004-02-04 2008-05-13 Perseus Wireless, Inc. Method and system for providing information to remote clients
JP4331049B2 (ja) * 2004-04-30 2009-09-16 株式会社東芝 データ伝送装置およびデータ伝送方法
US7176957B2 (en) * 2004-05-25 2007-02-13 Seiko Epson Corporation Local video loopback method for a multi-participant conference system using a back-channel video interface
US7702750B2 (en) 2004-09-29 2010-04-20 Citrix Systems, Inc. System and method for event detection and re-direction over a network using a presentation level protocol
US8621543B2 (en) * 2004-12-08 2013-12-31 Imagine Communications Ltd. Distributed statistical multiplexing of multi-media
US20060203758A1 (en) 2005-03-11 2006-09-14 Samsung Electronics Co., Ltd. Mobile terminal for relaying multimedia data to an external display device
US20070070185A1 (en) * 2005-09-27 2007-03-29 Dy Lady C System and method for remote display of security video images
US7702279B2 (en) 2005-12-20 2010-04-20 Apple Inc. Portable media player as a low power remote control and method thereof
US8436889B2 (en) * 2005-12-22 2013-05-07 Vidyo, Inc. System and method for videoconferencing using scalable video coding and compositing scalable video conferencing servers
TWI335178B (en) 2006-12-20 2010-12-21 Asustek Comp Inc Apparatus, system and method for remotely opearting multimedia streaming
TW200838228A (en) * 2007-03-14 2008-09-16 Imagetech Co Ltd Virtual camera system and real-time communication method thereof
US20090031381A1 (en) * 2007-07-24 2009-01-29 Honeywell International, Inc. Proxy video server for video surveillance
US8365215B2 (en) * 2007-10-11 2013-01-29 At&T Intellectual Property I, L.P. Methods, systems and computer program products for providing ad insertion via a multimedia applications gateway
US8819741B2 (en) 2008-04-03 2014-08-26 Microsoft Corporation Streaming video over a wireless network
US8281377B1 (en) * 2008-04-15 2012-10-02 Desktone, Inc. Remote access manager for virtual computing services
US8793331B2 (en) 2008-05-16 2014-07-29 Wyse Technology L.L.C. Multimedia redirection
WO2009143187A2 (en) 2008-05-19 2009-11-26 Citrix Systems, Inc. Systems and methods for remoting multimedia plugin calls
US8345082B2 (en) * 2008-10-08 2013-01-01 Cisco Technology, Inc. System and associated methodology for multi-layered site video conferencing
US8775658B2 (en) 2009-03-27 2014-07-08 Wyse Technology L.L.C. Apparatus and method for transparent communication architecture in remote communication
US8601097B2 (en) 2010-02-22 2013-12-03 Ncomputing Inc. Method and system for data communications in cloud computing architecture

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7362349B2 (en) * 2002-07-10 2008-04-22 Seiko Epson Corporation Multi-participant conference system with controllable content delivery using a client monitor back-channel
CN1913518A (zh) * 2005-08-12 2007-02-14 三星电子株式会社 网络显示设备及其控制方法
US20070263087A1 (en) * 2006-02-16 2007-11-15 Danny Hong System And Method For Thinning Of Scalable Video Coding Bit-Streams
CN101378361A (zh) * 2007-08-31 2009-03-04 株式会社日立制作所 通信量控制系统以及通信量控制方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017161562A1 (zh) * 2016-03-25 2017-09-28 华为技术有限公司 网络功能虚拟化环境下应用的管理方法和装置

Also Published As

Publication number Publication date
EP2510454A4 (en) 2013-11-27
US9191425B2 (en) 2015-11-17
EP2510454B1 (en) 2018-04-25
WO2011072049A3 (en) 2011-10-13
US9203883B2 (en) 2015-12-01
CN102741830B (zh) 2016-07-13
US20110138069A1 (en) 2011-06-09
WO2011072049A2 (en) 2011-06-16
US20110145431A1 (en) 2011-06-16
EP2510454A2 (en) 2012-10-17

Similar Documents

Publication Publication Date Title
CN102741830A (zh) 用于多媒体流的客户机侧远程呈现的系统和方法
CN105830047B (zh) 上传和转码媒体文件
US11350184B2 (en) Providing advanced playback and control functionality to video client
CN107592551B (zh) 用于云流服务的方法和设备
CN102713848A (zh) 用于使用轻量级客户端通过网络来与虚拟化计算服务对接的方法
CN104685873B (zh) 编码控制设备以及编码控制方法
US20240022759A1 (en) Video encoding through non-saliency compression for live streaming of high definition videos in low-bandwidth transmission
CN103152337A (zh) 一种安全动态传输二维码信息的方法
KR101095951B1 (ko) 디지털 비디오 레코더에 저장된 영상정보를 이용하는 클라우드 컴퓨팅 기반의 서비스형 비디오 감시 시스템
Jayasena et al. Multi-modal multimedia big data analyzing architecture and resource allocation on cloud platform
CN102857531B (zh) 一种基于云计算的远程交互式系统
Thanh Le et al. Efficient transcoding and encryption for live 360 CCTV system
CN110414909A (zh) 一种可视化实时协同的架构系统
CN107809671A (zh) 一种虚拟化环境下视频重定向到服务器解码的方法和系统
US10560727B2 (en) Server structure for supporting multiple sessions of virtualization
Karamitsos et al. The influence of big data and IoT on smart cities
CN102340519B (zh) 多媒体网络数据分享系统
US11689598B1 (en) Synchronized out-of-order live video encoding for reduced latency
US20240146524A1 (en) Edge video stream encoding with encrypting of confidential content
Rothöhler The Distributed Image: Stream–Archive–Ambience
US20240144425A1 (en) Image compression augmented with a learning-based super resolution model
Ra Mobile Videos: Where are We Headed?
Duong Distributed video processing system on cloud servers
Jia et al. An Android-Based Remote Monitoring System
WO2022263665A1 (en) System and method for optimizing the distribution of available media production resources

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant