视频会议速率匹配的制作方法

文档序号:7738087阅读:168来源:国知局
专利名称:视频会议速率匹配的制作方法
视频会议速率匹配
背景技术
视频会议中的速率匹配是改善视频会议性能的过程。在一些场合中,经由因特网连接的视频会议客户端可能具有波动的带宽量,而位于企业内联网上的其他客户端具有稳定的带宽量。该因特网客户端可能不能如内联网客户端那样接收到同样质量的视频流,所以视频会议系统可能会被迫将所有参与者的视频质量降低到最低性能客户端所能处理的水平。即,该系统会迫使内联网客户端妥协并牺牲其能力,且仅在带有低分辨率和低帧率体验的低比特率数据流上编码/接收。比如,对于内联网客户端能够以每秒30帧(fps)的帧率在VGA分辨率(每帧 640x480像素)下进行编码并回放。内联网客户端可能仅能够以15fps速率在CIF分辨率 (320x240)下进行编码和接收。传统的对策是强迫每个客户端在较低的CIF分辨率下编码和接收,或者使视频会议系统丢弃来自VGA分辨率流的替换帧。

发明内容
可提供视频会议速率匹配。此概述被提供以简化形式介绍概念的选择,该简化概念将在接下来的“详细描述”中被进一步描述。此概述并不意在标识所要求保护的主题的关键特征或必要特征,也不是意在用于确定所要求保护的主题的范围。可提供视频会议速率匹配。视频会议服务器可从视频会议的客户端处接收到视频源流。该服务器可分析每个客户端的能力并基于它们的能力选择视频流来发送给每个客户端。比如,能够编码和解码高清晰度视频流的客户端可能提供三个源视频流——高清晰度流、中等清晰度流和低清晰度流。该服务器可仅发送低分辨率流给具有低可用带宽量的客户端。该服务器可将中等清晰度流发送给另一客户端,该另一客户端具有用于高清晰度流的足够的带宽但缺乏编码高清晰度流的能力。上述简要描述和接下来的详细描述提供了示例且仅作为说明性的。因此,上述简要描述和接下来的详细描述不应该被视为限制性的。此外,除了此处所阐明的那些之外还可提供其他特征或变型。例如,各实施例可涉及在详细描述中描述的各种特征组合和子组
I=I O


相应附图,其被并入本文并组成本公开的一部分,示出本发明的各种实施例。在这些附图中图1是操作环境的框图;图2A-2C是例示使用不同帧类型的的视频流编码算法的示图;图3例示视频会议速率匹配的示图;图4是用于 在视频会议中提供速率匹配的方法的流程图;图5是用于在图4所述方法中为客户端选择数据流的子程序的流程图;以及图6是包括计算设备的系统的框图。具体实施 方式以下详细描述参考各附图。只要可能,就在附图和以下描述中使用相同的附图标记来指示相同或类似的元件。尽管可能描述了本发明的各实施例,但是修改、改编和其他实现也是可能的。例如,可对附图中所示出的元件进行置换、添加、或修改,并且可通过对所公开的方法置换、重新排序、或添加阶段来修改此处所描述的方法。因此,以下详细描述并不限制本发明。相反,本发明的正确范围由所附权利要求书定义。提供了视频会议速率匹配。根据本发明的实施例,可使用多比特率(MBR)方案来将与客户端接收和处理数据的能力相一致的数据流送给客户端。图1是操作环境的框图。该操作系统含有视频会议环境100。视频会议环境100 可包括经由内联网网络连接115所连接的内联网客户端110和视频会议服务器120。视频会议环境100可以进一步包括第一因特网客户端130、第二因特网客户端140、和第三因特网客户端150。因特网客户端的每一个可能经由因特网160与视频会议服务器120连接。 根据本发明的实施例,视频会议服务器120、内联网客户端110、第一因特网客户端130、第二因特网客户端140和第三因特网客户端150可各自包括计算设备600——在下文参照图 6更详细描述。当多个客户端想要在彼此之间共享数据流的时候可以使用视频会议环境100。每个客户端可以连接到视频会议服务器120。视频会议服务器120可以维持关于哪些客户端被连接以及每个客户端的能力是什么的列表。根据本发明的实施例,视频会议服务器120 可以定期更新客户端能力的任何变化。比如,视频会议服务器120可以分析内联网网络连接115并确定内联网客户端110可具有比以前确定的更多的带宽可用。视频会议服务器 120可以存储用于助益数据共享的信息。视频会议服务器120可以负责确定哪些客户端可负责将数据流送到视频会议服务器120,以及将数据流送出至每个连接的客户端。每个客户端可以对至少一个数据流编码,以发送到视频会议服务器120。比如,每个客户端可能具有音频/视频输入,诸如连接到客户端的网络摄像头和/或麦克风。输入可用于生成视频流(可能包括音频)并在将该视频流送至视频会议服务器120之前对其进行编码。视频会议服务器120可能从每一个客户端接收到编码流并决定哪些视频流中继到每个客户端。比如,内联网客户端110可能将视频流编码为包含人物实时讲话的一系列视频帧。视频会议服务器120可能将该展示当前讲话者的编码流从内联网客户端110传送到第一因特网客户端130、第二因特网客户端140和第三因特网客户端150。视频会议服务器 120可将编码源流从第一因特网客户端130、第二因特网客户端140和第三因特网客户端 150中的每一个传送到内联网客户端110以展示观众成员。图2A-2C为图示使用不同帧类型的视频流编码算法。视频流可以被编码为一系列视频帧,其中每个帧可能包含单个图像。每个帧可以用数比特数据来表示。该视频流可被编码,以使得并不是每个帧中的每个比特数据都需要被传送来表示视频流的源。不同的帧类型可以被用于编码和/或压缩视频流。帧类型可能包含I-帧、P-帧和B-帧。I-帧表示帧内帧,并且可包括可通过其自身解码而不需要参考视频流内的其他帧的帧。P-帧代表预测帧,并且可通过参考视频流序列内的至少一个先前帧来解码。B-帧代表双向预测帧,并且可通过参考视频流内至少一个先前帧和至少一个后继帧来解码。图2A包括I (内帧帧)帧210。I-帧210可能不需要参考其他帧就能编码,且可不依赖于任何其他帧而被解码。I-帧能容许视频流中的随机访问。I-帧可能在大小上是最大的帧且被最少地压缩。图2B包括P (预测)帧230。P-帧230可通过将先前帧220作为参考来编码并只能在先前帧220可用的情况下才被正确地解码。P帧230可以比I帧210更小且更被压缩。 先前帧220可能包括I-帧和/或P-帧。图2C包括B (双向)帧250。B-帧250可通过使用来自先前帧240和下一帧260 的信息来编码。如果先前帧240与下一帧260可用,则B-帧250可被正确地解码。B帧250 可以比P-帧230和I-帧210更小且更被压缩。通过使用不同的帧类型来编码视频流可以利用其中两个相继帧之间有大量相似度的源,以便减少需要被传送到观看客户端的数据量。比如,内联网客户端110可以编码并传输站在静态背景前讲话的人的视频流。由于讲话的人不会移动很厉害,因此视频流可以 P-帧来编码,从而P-帧230可以仅包含代表与先前帧220相比的图像中的变化的比特数据。图3是示出视频会议速率匹配的示图。如上参考图1所述,视频会议系统100可包含内联网客户端110、视频会议服务器120、第一因特网客户端130和第二因特网客户端 140。根据本发明的实施例,视频会议系统100中的客户端可能与不同的带宽和/或不同的视频编码和/或解码能力有关。视频会议系统100中的每个客户端可以向视频会议服务器120注册并建立至少一个能力,诸如可用带宽、最大编码分辨率、最大解码分辨率和可用数据编码和/或解码算法。比如,内联网客户端110可向视频会议服务器120注册并建立 2Mbps的可用带宽,该可用带宽具有在30fps下以VGA(640x480)分辨率编码/解码视频流, 以及在15fps下以CIF (320x240)分辨率编码/解码视频流的能力。第一因特网客户端130 可向视频会议服务器120注册并建立150Kbps的可用带宽,该可用带宽具有在30fps下以 720p (1280x720)分辨率编码/解码视频流,在30fps下以VGA (640x480)分辨率编码/解码视频流,以及在15fps下以CIF(320x240)分辨率编码/解码视频流的能力。第二因特网客户端140可向视频会议服务器120注册并建立200Kbps的可用带宽,该可用带宽具有仅在 15fps下以CIF (320x240)分辨率编码/解码视频流的能力。根据本发明的实施例,客户端可能能够编码视频流,他们可能不能解码,反之亦然。比如,第二因特网客户端140可能能够接收并解码VGA分辨率视频流,但可能仅能可以编码CIF视频流。在这种情况下,内联网客户端110和第一因特网客户端130可能仅在VGA 分辨率下编码单个视频流,视频会议服务器120可能将此视频流传送给第二因特网服务器 140。来自第二因特网服务器140的经CIF分辨率编码的视频流可以继续被传送到以内联网客户端110和第一因特网客户端130。在视频会议呼叫建立以及向视频会议服务器120注册每个客户端的能力之后,视频会议服务器120可能向彼此传达编码要求。比如,内联网客户端110和第一因特网客户端130可能被要求各自编码两个视频流并将它们传送给视频会议服务器120-视频流的第一版本可通过30fps下的VGA分辨率来编码而视频流的第二版本可通过15fps下的CIF分辨率来编码。第二因特网服务器140可被要求通过15fps下的CIF分辨率来编码一个视频流。然后,视频会议服务器120可能从每个客户端接收到这些流,并基于每个客户端注册的和/或确定的能力,比如确定每个客户端能解码哪种编码算法,来选择至少一个接收到的视频流来传送到每个客户端。比如,视频会议服务器120能确定第二因特网客户端 140只能解码CIF分辨率视频流,而内联网客户端和第一因特网客户端既能解码VGA分辨率视频流,也能解码CIF分辨率视频流。然后,视频会议服务器120可以将从第二因特网客户端140接收到的CIF视频流传送到内联网客户端110和第一因特网客户端130。视频会议服务器120可以将从内联网客户端110处接收到的VGA分辨率视频流传送给第一因特网客户端,以及将来自内联网客户端110的CIF流传送给第二因特网客户端140。类似地,视频会议服务器120可以将来自第一因特网客户端130的VGA分辨率视频流发送到内联网客户端110,以及将来自第一因特网客户端130的CIF分辨率视频流传送给第二因特网客户端 140。 视频会议服务器120可以确定是否每个客户端具有足够的带宽来接收视频流,并且可以基于以上确定来选择不同的流。根据本发明的进一步实施例,视频会议服务器120 和/或客户端之一(诸如第一因特网客户端130)可以定期重新评估可用带宽的量。比如, 视频会议服务器120可确定第一因特网客户端130可用的带宽从150Kbps下降到75Kbps, 并可以开始将来自内联网客户端110的CIF分辨率视频流而非VGA分辨率视频流传送给第一因特网客户端130。视频会议服务器120还可以定期地重新评估每个客户端的编码/解码能力,并动态地改变每个客户端的视频流所要求的编码算法。比如,第二因特网客户端140可能是从内联网客户端110和第一因特网客户端130处接收CIF分辨率视频流的唯一客户端。如果第二客户端140掉出视频会议呼叫,则视频会议服务器120可请求内联网客户端110和第一因特网客户端停止编码和传送它们相应视频流的CIF分辨率版本。根据本发明的实施例,视频会议服务器120可能指令与视频会议呼叫相关的至少一个客户端来编码被确定为将由与视频会议呼叫相关的其它客户端使用的视频流。比如, 视频会议服务器120可以确定第二因特网客户端140目前正在使用CIF编码;视频会议服务器120可以指令第一因特网客户端130来编码CIF分辨率流来传送给视频会议服务器 120,该CIF视频流可被中继给第二因特网服务器140。进一步根据本发明的实施例,视频会议服务器120可以在将视频流发送给客户端之前改变该视频流。比如,内联网客户端110能够编码并传送720p、VGA和CIF分辨率下的视频流,且具有大而稳定的可用带宽。第一因特网客户端130可能能够接收并编码720p、 VGA和CIF分辨率下的视频流,但是具有高度可变的可用带宽量。当第一因特网客户端130 的可用带宽减少时,视频会议服务器120可以将从内联网客户端110中继到第一因特网客户端130的视频流改变为最适用于可用的带宽量。比如,从最高的可用带宽量到最低的可用带宽量,视频会议服务器可以使用以下逻辑1.传送未经改变的720p流,2.丢掉720p流的1个B帧,3.丢掉720p流的2个B帧,4.发送未经改变的VGA流,
5.丢掉VGA流的1个B帧,6.丢掉VGA流的2个B帧,7.发送未经改变的CIF流,8.丢掉CIF流的1个B帧,9.丢掉CIF流的2个B帧, 10.丢掉720p流的所有B帧和P帧(仅保留I帧),11.丢掉VGA流的所有B帧和P帧(仅保留I帧),以及12.丢掉CIF流的所有B帧和P帧(仅保留I帧)。发送给每个客户端的流的选择可取决于每个客户端的观看偏好以及客户端的能力。比如,第一因特网客户端130可以被配置为同时并排地观看视频会议系统100中的另外两个参与者,而第二因特网客户端140可以被配置为仅示出当前演讲者。在这个例子中, 视频会议服务器可以将来自内联网客户端110的VGA分辨率视频流、以及来自第二因特网客户端140的CIF分辨率视频流发送给第一因特网客户端130。当这些客户端均在视频会议呼叫中讲话时,第二因特网客户端140可以替换地从内联网客户端110和第一因特网客户端130处接收CIF分辨率视频流。图4是阐述根据本发明的实施例的方法400中涉及的一般阶段的流程图,该方法 400提供视频会议速率匹配。方法400可以用以下参照图6更详细描述的计算设备600来实现。实现方法600的阶段的方式将会在下文更详细地描述。方法400可以始于起始框 410,并继续到阶段420,在那里计算设备600可注册至少一个客户端。比如,至少一个客户端可以经由网络连接可操作地连接到计算设备600,且可请求参与由计算设备600主存的视频会议呼叫。从阶段420开始,方法400可以继续到阶段430,在那里计算设备600可以收集和 /或分析每个注册的客户端。比如,计算设备600可以确定每个客户端可用的带宽量。计算设备600还可以确定每个客户端的数据处理能力,诸如视频编码和/或解码能力和/或数据处理速度。视频编码和/或解码能力可包括最大分辨率。从阶段430开始,方法400可以继续到阶段440,在那里计算设备600从至少一个客户端接收数据流。比如,计算设备600可以从源客户端接收视频流。每个客户端可发送至少一个流,且每个客户端可以操作地发送数据流的多个版本,诸如不同分辨率的视频流。从阶段440,方法400可以继续到子程序450,在那里计算设备600可选择数据流以传送到至少一个客户端。比如,计算设备600可以确定一个客户端没有足够的带宽来从第二客户端处接收高分辨率版本的视频流,且计算设备600可以选择低分辨率版本的视频流来传送。关于子程序450的进一步细节将会参考图5在下文详细描述。从子程序450开始,方法400可以继续到阶段460,在那里计算设备600可以将所选的流传送到客户端。比如,计算设备600可以通过网络连接将接收自一个客户端的视频流中继到第二客户端。

从阶段460开始,方法400可以继续到阶段470,在那里计算设备600可以确定客户端的能力是否已经改变。如果计算设备600确定客户端的能力和/或系统的需求发生了变化,则方法400可返回子程序450,在那里计算设备600可能选择不同版本的流来发送给客户端。比如,计算设备600可以确定在视频会议呼叫中仅有的使用CIF解码的客户端已经脱离。然后,计算设备600可以要求视频会议呼叫中的任何其他客户端停止发送CIF编码流。根据本发明的实施例,客户端的可用带宽可能降低,且客户端可能将这件事通知计算设备600。计算设备600可能为这个客户端选择较低分辨率数据流和/或改变这个客户端的当前所选的数据流,以计及降低的带宽。从阶段470开始,方法400可能在阶段480处结束。图5是图4所示方法中所用的用于为客户端选择数据流的子程序的流程图。从阶段440开始,计算设备600可以在阶段510处进入子程序450,在那里计算设备600可以收集至少一个客户端的编码和/或解码能力。该至少一个客户端可以包括诸如内联网客户端 110之类的另一计算设备618。比如,计算设备600可以确定内联网客户端110能在VGA和 CIF分辨率下编码,以及在720p、VGA和CIF分辨率下解码。从阶段510开始,子程序450可以继续到阶段520,在那里计算设备600可以确定至少一个客户端的可用带宽量。比如,计算设备600可以确定内联网客户端110具有 400Kbps可用来发送数据流,以及750Kbps可用来接收数据流。从阶段520,子程序450可以继续到阶段530,在那里计算设备600可以选择可用于客户端的最高分辨率数据流。比如,第一因特网客户端可传送三个数据流给计算设备 600 :720p分辨率视频流、VGA分辨率视频流和CIF分辨率视频流。计算设备可以首先选择 720p分辨率视频流来发送给内联网客户端110。

从阶段530开始,子程序450可以继续到阶段540,在那里计算设备600可以确定客户端是否能够处理所选数据流。比如,计算设备600可以确定内联网客户端110能够解码所选择的720p分辨率视频流。在阶段540,如果计算设备600确定客户端不能处理所选视频流,则子程序540可以返回阶段530,在那里计算设备600可以选择替换数据流,诸如 720p分辨率视频流的VGA分辨率版本。在阶段540,如果计算设备600确定客户端能够处理所选流,则子程序450可以继续到阶段550,在那里计算设备600可以确定客户端是否具有足够的带宽可用于接收所选数据流,而没有实质的性能降级。比如,计算设备600可以确定客户端具有700Kbps的可用带宽,且其是足以实时接收并回放720p分辨率视频流而在视频中没有任何跳跃和/或暂停的带宽。如果在阶段550计算设备600确定客户端具有足够带宽用于所选流,则子程序450 会返回到方法400的阶段460。在阶段550,如果计算设备确定客户端没有足够带宽来接收并处理所选流,则子程序450可以继续到阶段560,在那里计算设备600可以在传送流到客户端之前改变所选流。 比如,计算设备600可以从视频流中每秒移除至少一个B-帧来减少要传送到客户端的数据量。子程序450可以继续到阶段570,在那里计算设备600可以确定客户端是否具有足够带宽来接收经改变的数据流。如果客户端仍然没有足够带宽来接收经改变的数据流,则子程序450可以返回阶段530,在那里计算设备600可以选择替换的数据流,诸如720p分辨率视频流的VGA分辨率版本。根据本发明的实施例,计算设备60可以移除附加帧和/或移除不同类型的帧并在返回阶段530之前确定带宽限制是否得到了满足。在阶段550,如果计算设备确定客户端有足够的带宽来接收并处理经改变的数据流,则子程序450可以返回方法 400的阶段460。根据本发明的实施例可以包括用于向多个客户端提供数据的系统。该系统可包括存储器存储和耦合至该存 储器存储的处理单元。该处理单元可以可操作地接收数据流、分析与多个客户端中的至少一个相关联的至少一个能力、基于所分析的能力来选择要发送给客户端的数据流、以及将所选数据流传送给客户端。比如,数据流可是是视频会议数据流, 且每个流可以与多个客户端中的至少一个相关联。客户端中的至少一个可以发送包括不同版本的数据流一诸如不同分辨率的视频流一的多个数据流。客户端可以经由诸如公司内联网和/或因特网之类的通信介质来连接至系统。该系统可以操作地分析与多个客户端中的至少一个相关联的通信介质的可用带宽。该系统可以操作地分析与多个客户端中的至少一个相关联的数据处理能力,诸如视频编码和/或视频解码能力。该系统可以确定给定客户端是否有能力解码可用数据流,以及客户端是否能按另一客户端要求的算法编码数据流。根据本发明另一个实施例可以包括用于向多个客户端提供视频流的系统。该系统可包括存储器存储和耦合至该存储器存储的处理单元。该处理单元可以操作地从多个客户端中的每一个接收至少一个数据流、收集与多个客户端中的每一个相关联的视频会议能力、根据所收集的与多个客户端中的每一个相关联的视频会议能力来选择要发送给多个客户端中的每一个的至少一个数据流、以及将所选至少一个视频流发送给多个客户端中的每一个。该系统可以操作地从多个客户端中的至少一个处接收至少一个第一视频流和至少一个第二视频流,其中至少一个第一视频流包括至少一个第二视频流的更高分辨率版本。比如,至少一个第一视频流可包括在1280x720和/或640x480分辨率下编码的视频流,而至少一个第二视频流可包括在320x240分辨率下编码的视频流。该系统可以进一步操作地确定多个客户端中的至少一个客户端是否具有足够的带宽来接收包含至少一个第一视频流的所有帧。响应于确定多个客户端中的至少一个客户端具有足够的带宽来接收包含至少一个第一视频流的所有帧,该系统可以将该至少一个第一视频流不变地(unaltered)地发送给多个客户端中的至少一个客户端。如果多个客户端中的至少一个客户端没有足够的带宽来接收包含至少一个第一视频流的所有帧,则该系统可将至少一个第二较低分辨率视频流发送给多个客户端中的至少一个客户端。根据本发明的实施例,如果多个客户端中的至少一个客户端没有足够的带宽来接收包含至少一个第一视频流的所有帧,则该系统可以在将至少一个第一视频流发送给多个客户端中的至少一个客户端之前从视频流中每秒移除至少一个帧。该系统可以操作地为多个客户端中的每一个客户端确定至少一个正在使用的视频解码算法和至少一个可用视频编码算法。该系统可以指令多个客户端中的至少一个客户端来关于与多个客户端中的每一个相关联的、被确定为正被多个客户端中的至少一个使用的至少一个视频编码算法来编码至少一个视频流。比如,如果一个客户端当前使用CIF解码来接收并处理视频流,则该系统可以请求具有CIF编码能力的至少一个其他客户端来编码并发送CIF编码的视频流到系统来中继给CIF解码客户端。根据本发明的又一个实施例可包括用于提供视频会议中的速率匹配的系统。该系统包括存储器存储和耦合至该存储器存储的处理单元。该处理单元可以操作地注册经由网络连接设备操作地连接至系统的至少一个第一视频会议客户端和至少一个第二视频会议客户端、从至少一个第一视频会议客户端处接收多个视频流、基于所确立的所述至少一个第二视频会议客户端的至少一个能力来确定至少一个第二视频会议客户端是否可接收至少一个第一视频流,以及响应于确定至少一个第二视频会议客户端可接收至少一个第一视频流,在不需要系统解码至少一个第一视频流的情况下将至少一个第一视频流发送给所述至少一个第二视频会议客户端。该系统可以操作地确立至少一个第一视频会议客户端和至少一个第二视频会议客户端的至少一个能力,其中该至少一个能力包括以下中的至少一个可用带宽、最大编码分辨率、以及最大解码分辨率。多个视频流可以包括至少一个第一视频流和至少一个第二视频流,其中至少一个第一视频流包括高于至少一个第二视频流的分辨率视频流。该系统可以操作地确定至少一个第一视频会议客户端是否可解码至少一个第一视频流。根据本发明的实施例,该系统可以操作地确定至少一个第二视频会议客户端是否具有足够的可用带宽来在不从至少一个第一视频流中丢弃至少一个B-帧的情况下接收所述至少一个第一视频流。图6是包括计算设备600的系统的框图。根据本发明的一个实施例,上述存储器存储和处理单元可在诸如图6的计算设备600的计算设备中实现。可使用硬件、软件、或固件的任何合适的组合来实现该存储器存储和处理单元。例如,存储器存储和处理单元可用计算设备600或结合计算设备600的任何其他计算设备618来实现。根据本发明的各实施例,上述系统、设备和处理器是示例,而其他系统、设备和处理器可包括上述存储器存储和处理单元。此外,计算设备600可包括用于上述系统100的操作环境。系统100可以在其他环境中操作并且不限于计算设备600。参考图6,根据本发明的一个实施例的系统可包括诸如计算设备600的计算设备。 在基本配置 中,计算设备600可包括至少一个处理单元602和系统存储器604。取决于计算设备的配置和类型,系统存储器604可包括,但不限于,易失性存储器(例如,随机存取存储器(RAM))、非易失性存储器(例如,只读存储器(ROM))、闪存、或任何组合。系统存储器 604可包括操作系统605、一个或多个编程模块606,且可包括带宽测量程序607。例如,操作系统605可适用于控制计算设备600的操作。在一个实施例中,编程模块606可包括例如数据分析模块和/或视频会议服务器620。此外,本发明的各实施例可结合图形库、其他操作系统、或任何其他应用程序来实践,并且不限于任何特定应用或系统。该基本配置在图 6中由虚线608内的那些组件示出。计算设备600可具有附加特征或功能。例如,计算设备600还可包括附加数据存储设备(可移动和/或不可移动),诸如例如磁盘、光盘、或磁带。这些附加存储在图6中由可移动存储609和不可移动存储610示出。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块、或其他数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。系统存储器604、可移动存储609和不可移动存储610都是计算机存储介质(即,存储器存储)的示例。计算机存储介质可包括,但不限于,RAM、ROM、 电可擦除只读存储器(EEPROM)、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或可用于存储信息并且可由计算设备600访问的任何其它介质。任何这样的计算机存储介质可以是设备600的一部分。计算设备600还可具有诸如键盘、鼠标、笔、声音输入设备、触摸输入设备等输入设备612。还可包括诸如显示器、扬声器、打印机等输出设备614。上述设备是示例并且可使用其他设备。计算设备600还可包含可允许设备600诸如通过例如内联网或因特网的分布式计算环境中的网络来与其他计算设备618通信的通信连接616。通信连接616是通信介质的一个示例。通信介质通常由诸如载波或其他传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其他数据来体现,并包括任何信息传递介质。术语“已调制数据信号”可描述具有以对该信号中的信息编码的方式设定或者改变的一个或多个特征的信号。作为示例而非限制,通信介质可包括诸如有线网络或直接线连接的有线介质,以及诸如声学、射频(RF)、红外线和其他无线介质的无线介质。如此处所使用的术语“计算机可读介质“可以包括存储介质和通信介质两者。如上所述,多个程序模块和数据文件可存储在包括操作系统605的系统存储器 604中。当在处理单元602上执行时,编程模块606 (例如,视频会议服务器620)可执行各过程,包括例如,如上所述的方法400的各阶段中的一个或多个。前述过程是示例,并且处理单元602可执行其他过程。根据本发明的各实施例可使用的其他编程模块可包括电子邮件和联系人应用、文字处理应用、电子表格应用、数据库应用、幻灯片演示应用、绘图或计算机辅助应用程序等。一般而言,根据本发明的各实施例,程序模块可包括可执行特定任务或可实现特定抽象数据类型的例程、程序、组件、数据结构和其他类型的结构。此外,本发明的各实施例可用其他计算机系统配置来实践,包括手持式设备、多处理器系统、基于微处理器的系统或可编程消费电子产品、小型机、大型计算机等。本发明的各实施例也可在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备两者中。此外,本发明的各实施例可在包括分立电子元件的电路、包含逻辑门的封装或集成电子芯片、利用微处理器的电路中,或在包含电子元件或微处理器的单个芯片上实践。本发明的各实施例还可使用能够执行诸如,例如,AND(与)、0R(或)和NOT(非)的逻辑运算的其他技术来实践,包括但不限于,机械、光学、流体和量子技术。另外,本发明的各实施例可在通用计算机或任何其他电路或系统内实践。例如,本发明的各实施例可被实现为计算机过程(方法)、计算系统、或诸如计算机程序产品或计算机可读介质的制品。计算机程序产品可以是计算机系统可读并且对用于执行计算机过程的指令的计算机程序编码的计算机存储介质。计算机程序产品还可以是计算系统可读并且对用于执行计算机过程的指令的计算机程序编码的载体上的传播信号。因此,本发明可在硬件和/或软件(包括固件、常驻软件、微码等)中体现。换言之,本发明的各实施例可采用其上包含在供指令执行系统使用或结合其使用的介质中的计算机可使用或计算机可读程序代码的计算机可使用或计算机可读存储介质上的计算机程序产品的形式。计算机可使用或计算机可读介质可以是可包含、存储、通信、传播、或传输程序供指令执行系统、装置、或设备使用或结合其使用的任何介质。计算机可使用或计算机可读介质可以是,例如,但不限于,电、磁、光、 电磁、红外、 或半导体系统、装置、设备、或传播介质。更具体的计算机可读介质示例(非穷尽列表),计算机可读介质可包括以下具有一条或多条导线的电连接、便携式计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPR0M或闪存)、光纤、以及便携式压缩盘只读存储器(CD-ROM)。注意,计算机可使用或计算机可读介质甚至可以是其上打印程序的纸张或另一合适的介质,因为程序可经由例如对纸张或其他介质的光学扫描而电子地捕获,随后如有必要被编译、解释,或以其他合适的方式处理,并且随后存储在计算机存储器中。以上参考根据本发明的各实施例的方法、系统和计算机程序产品的框图和/或操作图示描述了本发明的各实施例。框中所注明的各功能/动作可按不同于任何流程图所示的次序出现。例如,取决于所涉及的功能/动作,连续示出的两个框实际上可基本上同时执行,或者这些框有时可按相反的次序来执行。尽管描述了本发明的某些实施例,但是可存在其他实施例。此外,虽然本发明的各实施例被描述为与存储在存储器和其他存储介质中的数据相关联,但数据还可存储在或读取自其他类型的计算机可读介质,诸如辅助存储设备,像硬盘、软盘、或CD-ROM,来自因特网的载波,或其他形式的RAM或ROM。此外,所公开的各方法的各阶段可以任何方式来修改,包括通过对各阶段重新排序和/或插入或删除各阶段,而不背离本发明。包括此处所包括的代码中的版权在内的所有权利都归属于申请人并且是本申请人的财产。申请人保持并且保留此处所包括的代码中的所有权利,并且授予仅关于所授权的专利的再现且未出于其他目的再现该材料的许可。 虽然本说明书包括各示例,但本发明的范围由所附权利要求书来指示。虽然本说明书包括各示例,但本发明的范围由所附权利要求书来指示。相反,上述具体特征和动作是作为本发明的各实施例的示例来公开的。
权利要求
1.一种用于向多个客户端110,130,140,150提供数据的方法,所述方法包括接收440多个数据流310,320,330 ;分析430与多个客户端110,130,140,150中的至少一个相关联的至少一个能力;基于所分析的至少一个能力来选择450多个数据流310,320,330中的至少一个来发送给多个客户端110,130,140,150中的至少一个;以及将多个数据流310,320,330中所选的至少一个发送460给多个客户端110,130,140, 150中的至少一个。
2.如权利要求1所述的方法,其特征在于,分析430与多个客户端110,130,140,150中的至少一个相关联的至少一个能力包括分析与多个客户端110,130,140,150中的至少一个相关联的至少一个通信介质的带宽。
3.如权利要求2所述的方法,其特征在于,与多个客户端110,130,140,150中的至少一个相关联的所述至少一个通信介质包括以下中的至少一个内联网和因特网160。
4.如权利要求1所述的方法,其特征在于,分析430与多个客户端110,130,140,150中的至少一个相关联的至少一个能力包括分析与多个客户端110,130,140,150中的至少一个相关联的数据处理能力。
5.如权利要求1所述的方法,其特征在于,分析430与多个客户端110,130,140,150中的至少一个相关联的至少一个能力包括确定510至少一个视频解码能力。
6.如权利要求1所述的方法,其特征在于,多个客户端110,130,140,150中的至少一个与多个数据流310,320,330相关联,并且其中多个数据流310,320,330中的至少一个第一数据流包括多个数据流310,320,330中的至少一个第二数据流的较高分辨率版本。
7.如权利要求6所述的方法,其特征在于,分析430与多个客户端110,130,140,150中的至少一个相关联的至少一个能力包括确定540多个客户端110,130,140,150中的至少一个第二客户端是否能解码所述至少一个第一数据流。
8.如权利要求6所述的方法,其特征在于,分析430与多个客户端110,130,140,150中的至少一个相关联的至少一个能力包括确定550多个客户端110,130,140,150中的至少一个第二客户端是否具有足够的带宽来接收所述至少一个第一数据流。
9.一种存储指令集的计算机可读介质,所述指令集在被执行时执行用于向多个客户端 110,130,140,150提供视频流310,320,330的方法,所述方法由所述指令集来执行,所述方法包括从多个客户端110,130,140,150中的每一个接收440至少一个视频流;收集430与多个客户端110,130,140,150中的每一个相关联的视频会议能力;根据所收集的与多个客户端110,130,140,150中的每一个相关联的视频会议能力来选择450至少一个视频流来发送给多个客户端110,130,140,150中的每一个;以及将所选至少一个视频流来发送460给多个客户端110,130,140,150中的每一个。
10.如权利要求9所述的计算机可读介质,其特征在于,进一步包括从多个客户端110, 130,140,150中的至少一个处接收440至少一个第一视频流和至少一个第二视频流,其中所述至少一个第一视频流包括所述至少一个第二视频流的较高分辨率版本。
11.如权利要求9所述的计算机可读介质,其特征在于,进一步包括确定550多个客户端110,130,140,150中的至少一个是否具有足够的带宽来接收包括至少一个第一视频流的所有帧;以及响应于确定多个客户端110,130,140,150中的至少一个具有足够的带宽来接收包括所述至少一个视频流的所有帧,将所述至少一个视频流不变地发送给多个客户端110,130, 140,150中的至少一个。
12.如权利要求11所述的计算机可读介质,其特征在于,进一步包括响应于确定多个客户端110,130,140,150中的至少一个不具有足够的带宽来接收包括所述至少一个第一视频流的所有帧,将至少一个第二视频流发送给多个客户端110,130, 140,150中的至少一个,其中所述至少一个第二视频流包括所述至少一个第一视频流的较低分辨率版本。
13.如权利要求11所述的计算机可读介质,其特征在于,进一步包括响应于确定多个客户端110,130,140,150中的至少一个不具有足够的带宽来接收包括所述至少一个第一视频流的所有帧,在将所述至少一个第一视频流发送给多个客户端 110,130,140,150中的至少一个之前,从视频流每秒移除560至少一个帧。
14.如权利要求9所述的计算机可读介质,其特征在于,进一步包括为多个客户端110,130,140,150中的至少一个确定至少一个正在使用的视频解码算法;为多个客户端110,130,140,150中的至少一个确定与多个客户端110,130,140,150中的至少一个相关联的至少一个视频编码算法;以及指令多个客户端110,130,140,150中的至少一个关于与多个客户端110,130,140,150 中的至少一个相关联的视频编码算法来编码至少一个视频流,所述视频编码算法被确定为正被多个客户端110,130,140,150中的至少一个所使用。
15.一种用于提供视频会议中的速率匹配的系统,所述系统包括存储器存储;网络连接设备;以及耦合至所述存储器存储的处理单元,其中所述处理单元操作用于注册420经由所述网络连接设备连接到所述系统的至少一个第一视频会议客户端和至少一个第二视频会议客户端,其中操作地注册所述至少一个第一视频会议客户端和所述至少一个第二视频会议客户端包括操作地确立430所述至少一个第一视频会议客户端和所述至少一个第二视频会议客户端的至少一个能力,其中所述至少一个能力包括以下中的至少一个可用带宽、最大编码分辨率和最大解码分辨率;从所述至少一个第一视频会议客户端处接收440多个视频流310,320,330,其中多个视频流310,320, 330包括至少一个第一视频流和至少一个第二视频流,其中所述至少一个第一视频流包括比所述至少一个第二视频流更高的分辨率视频流;基于所确立的至少一个第二视频会议客户端的至少一个能力来确定450所述至少一个第二视频会议客户端是否能接收所述至少一个第一视频流,其中操作地确定所述至少一个第二视频会议客户端能接收所述至少一个第一视频流包括操作地确定以下中的至少一个所述至少一个第二视频会议客户端是否能解码所述至少一个第一视频流,以及所述至少一个第二视频会议客户端是否具有足够的带宽可用于在不从所述至少一个第一视频流中丢弃至少一个B-帧的情况下来接收所述至少一个第一视频流;响应于确定所述至少一个第二视频会议客户端能接收所述至少一个第一视频流,在无需所述系统解码所述至少一个第一视频流的情况下将至少一个第一视频流发送460给所述至少一个第二视频会 议客户端。
全文摘要
可提供视频会议速率匹配。视频会议服务器可能从视频会议中的客户端处接收到视频源。该服务器可以分析每个客户端的能力并基于它们的能力来选择视频流来传送到每个客户端。比如,能够编码与解码高分辨率视频流的客户端可以提供三个源视频流——高分辨率流、中等分辨率流和低分辨率流。该服务器可以仅传送低分辨率流给具有低可用带宽量的客户端。该服务器可以将中等分辨率流传送给另一客户端,该另一客户端具有足够的带宽量来接收高分辨率流,但缺乏解码高分辨率流的能力。
文档编号H04N7/15GK102246521SQ200980151554
公开日2011年11月16日 申请日期2009年11月9日 优先权日2008年12月15日
发明者M·韩, M-C·李, T·摩尔 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1