多路复用数据的制作方法

文档序号:15074071发布日期:2018-08-01 00:44阅读:240来源:国知局

通信系统允许用户通过通信网络相互通信,例如通过在网络上进行通信事件。该网络可以是例如互联网或公共交换电话网络(pstn)。在通话期间,可以在网络的节点之间传输音频和/或视频信号,从而允许用户通过该通信网络在通信会话中相互发送和接收音频数据(例如,话音)和/或视频数据(例如,网络摄像头视频)。

这样的通信系统包括互联网协议语音或视频(voip)系统。为了使用voip系统,用户在用户设备上安装并执行客户端软件。该客户端软件建立voip连接并且提供诸如注册和用户认证之类的其他功能。除了语音通信之外,该客户端还可以针对诸如即时消息传送(“im”)、屏幕共享、或白板会话之类的通信事件而建立连接。

通信事件的数据可以被封装在数据流中。即,数据分组的流,它们可以在被生成时被例如实时地发送,以使得从流的数据在发送设备处被生成到在接收设备处被接收之间仅存在短的延迟(例如,大约两秒或更少)。换句话说,较早生成的流的数据分组可以在较晚生成的流的数据分组被生成之前被发送。不同类型的数据可以在不同的、分离的流中实施,例如音频数据可以在音频数据流中实施(即,封装在音频流的音频数据分组中),与实施视频数据的视频数据流(即,封装在视频流的视频数据分组中)分离且不同。在通话时,还可以在发送设备处生成额外的流,例如控制数据流;和/或额外的音频数据流,例如,可以存在针对使用发送设备的相机捕获的通话视频的通话视频数据流,针对屏幕共享视频数据的屏幕共享视频数据流,针对白板视频数据的白板视频数据流等。数据流例如可以由例如包括在该流的数据分组的标头中的流标识符来标识;和/或分离的数据流可以在它们在发送设备处被生成和管理的方式方面彼此区别。为了同时将多个流发送至接收设备,可以例如通过使用时分复用来将它们多路复用在发送设备与接收设备之间的网络的信道上。



技术实现要素:

提供了该发明内容以用简化的形式引入在以下的具体实施方式中所进一步描述的概念的选择。该发明内容不旨在标识所要求保护的主题的关键特征或本质特征,也不旨在用于限制所要求保护的主题的范围。

本主题的各种方面涉及多个数据流经由端到端或进程到进程信道而从发送设备被发送至接收设备。所述流经由发送设备与接收设备之间在网络层的传输层的端到端信道而被发送,或者经由发送设备与接收设备之间在网络层的应用层的进程到进程信道而被发送。

在发射设备处生成媒体数据流,其包括要以期望的播出速率在接收设备处播出的音频或视频数据。确定针对媒体流和另一数据流可用的端到端信道的端到端带宽或者进程到进程信道的进程到进程带宽。针对另一数据流的最大分组大小是基于所确定的可用带宽并且使用与媒体数据流的音频或视频数据相关的播出信息而确定的,其传达音频或视频数据的期望播出速率。在发送设备处,基于所确定的最大分组大小,生成所述另一数据流的多个数据分组,每个数据分组具有不超过所确定的最大值的大小。所述媒体数据流和所述另一数据流在发送设备处被复用到信道上,由此经由同一信道将这两个数据流从发送设备发送至接收设备。

附图说明

为了更好地理解本主题并且示出如何实行本主题,现在将仅仅作为示例对以下的附图进行参考,其中:

图1示出了通信系统的框图;

图2示出了作为用户设备的发送设备的框图;

图3示出了从发送设备经由网络到接收设备的应用层信道;

图4示出了发送设备的功能模块;

图5示出了经多路复用的音频和视频数据流。

具体实施方式

本主题涉及一种解决方案,其中,作为包括音频或视频数据(“媒体数据”)的数据流的媒体数据流与至少一个其他数据流(其可以是另一媒体数据流,或者某一其他类型的数据流)在同一信道(端到端,即传输层信道,或者进程到进程,即应用层信道)上被多路复用。即,其中媒体流和其他流共享信道的可用带宽(bw),例如信道的总带宽或者向它们分配的总带宽的一部分。

针对其他数据流的最大分组大小是基于传达音频或视频数据的播出速率(例如,帧速率r)的帧信息以及对可用带宽bw(其是端到端或进程到进程带宽估计)的确定两者确定的,以便防止其他数据流在媒体流中产生抖动(jitter)(见下文)。

“端到端”和“进程到进程”通信的概念是在网络化系统的上下文中公知的,特别是(但非排他地)在通过公共互联网的通信的上下文中,并且更加一般地在tcp/ip协议组的上下文中。

对端到端或进程到进程带宽估计的使用意味着视频分组大小是将发送设备与接收设备之间的完整通信路径考虑在内而调节的。

端到端或进程到进程带宽可能受到发送设备与接收设备之间的通信路径中任何地方的瓶颈的限制。例如,端到端或进程到进程带宽可以是经由多个较低层信道建立的,例如网络层(对应于osi模型的第3层)或链路层(例如,mac层,即osi模型的第二层,或者物理层,即osi模型的第1层)信道,例如,发送设备与中间节点(例如,路由器、交换机、或蜂窝基站)之间的一个或多个较低层信道,加上中间节点、任何其他中间节点、以及接收设备之间的一个或多个较低层信道。在该情况下,瓶颈例如可以出现在发送设备与例如蜂窝基站之间的通信路径的部分中,但等同地,其可以出现在蜂窝基站与接收设备之间的通信路径的部分中(例如,蜂窝网络中的其他地方,互联网或其他基于分组的网络内,诸如家庭或公司局域网之类的接收设备本地的网络内,或者在可用的情况下接收设备自身的网络)。使用端到端或进程到进程带宽估计意味着可以通过降低最大媒体分组大小而无论瓶颈出现在通信路径中的哪里而将瓶颈考虑在内。

视频数据例如可以是一系列视频帧(即,图像),其通过以播出速率r接连地显示以使得每一帧在显示下一帧之前被显示1/r的持续时间而被播出,播出速率r在该上下文中被称为帧速率。音频数据也可以采用要以播出速率(帧速率)被播出的一系列音频帧的形式,或者采用要以播出速率(采样速率)被播出的一系列个体音频数据采样的形式。音频帧是要在期望的持续时间(其是帧速率的相反数,即在r是帧速率的情况下为1/r)上播出的一组多音频数据采样。例如,有时音频数据被划分成帧以便以每帧为基础应用音频压缩。

在下文中,描述是在媒体帧及其帧速率方面表达的,然而如将理解的那样,关于帧速率的所有描述通常适用于其他类型的播出速率,例如,在可用的情况下个体音频采样的采样率(例如,不一定总要将音频数据划分成帧)。

本公开注意到,其他数据流的数据分组可能在接收设备处播出媒体帧时引起媒体帧中的“抖动”。抖动是在最后接收的媒体帧在已经接收了要播出的下一媒体帧之前已经在接收设备处完全被播出(即,被播出了超过其针对音频帧期望的持续时间(1/r),以及被显示了针对视频帧的期望的持续时间(1/r))时产生的效果。这进而会引起例如音频中的可感知的中断或者视频的可感知的冻结或减速,这会降低当音频/视频在接收设备处被播出时其的感知质量。

为了帮助说明,考虑以下示例。例如,其他数据流的数据分组在媒体流的两个数据媒体数据分组(即,音频或视频分组)之间(时间上)被发送,所述数据媒体数据分组包含在要被播出的帧的序列中相邻的媒体帧。示例在图5中被示出,其示出了其他数据流(其在该示例中是视频流)的视频数据分组vp在媒体流(其在该示例中是音频流)的两个音频数据分组ap之间被发送。

在以下情况下其他数据分组会在相邻的帧中引起抖动:

△to>1/r(1)

其中,to是其用来经由信道完全传输其他数据分组的最坏情况的时间。即,如果用来发送其他数据分组的时间超过最后接收的媒体帧的期望持续时间(1/r)。

方程(1)假定下一媒体帧的播出可以在其第一部分被接收之后立即开始,在其被完全接收之前。在下一媒体帧需要在其播出开始之前被完全接收的情况下,则抖动可能在以下情况下出现:

△to+△tm>1/r(2)

其中,△tm是其用来经由信道完全传输包含在媒体流的一个或多个媒体数据分组中的下一媒体帧的最坏情况的时间。即如果用来发送其他数据分组和下一媒体帧的时间超过最后接收的媒体帧的期望持续时间(1/r)。

注意,在图5的示例中,△to=△tv,并且△tm=△ta。

这仅仅是两个示例:准确地何时其他数据分组将引起抖动显然是依赖环境的。然而,本公开注意到,无论个体的环境如何,其他数据流是否会引起抖动将至少在某种程度上取决于与媒体流中的媒体数据的期望播出速率相比其他流中的数据分组的大小。

由此,本主题通过以下方法解决了该抖动问题:基于传达期望的帧速率r的帧信息来限制其他数据分组的大小,以使得针对其他数据流的最大分组大小具有对(分离的且不同的)媒体流中的帧的帧速率r的依赖性。帧信息可以例如包括期望的帧速率r以及期望的帧持续时间(1/r),或者以某一其他方式传达帧速率r。

最坏情况的传输时间△to和△tm由以下方程给出:

△to=mso/bw(3)

△tm=msm/bw(4)

其中,mso是其他数据分组的最大大小而msm是媒体分组的最大大小,例如,以位(bits)、字节(bytes)、千位(kilobits)、千字节(kilobytes)等为单位;bw是可用带宽,例如以位每秒、字节每秒、千位每秒、千字节每秒等为单位。即,相关分组大小除以可用信道带宽bw。

如上文所指示的,可用带宽bw是从发送设备到接收设备的整个通信路径的端到端或进程到进程带宽,因为这是决定每个数据分组花费多久能完全到达接收设备的东西。

在下文中详细描述了主题的实施例。首先,将描述其中可以有用地应用该主题的实施例的上下文。

图1示出了通信系统1的框图。通信系统1包括通信网络2,其上连接有第一用户设备6和第二用户设备10。网络2在该示例中是基于分组的互联网络(互联网),例如因特网(internet),并且由此包括将数据在互联网2中的个体网络间路由的多个路由器3。然而,网络2可以是诸如蜂窝网络或pstn之类的另一类型的网络。在用户设备6、10是移动设备的情况下,它们例如可以经由蜂窝网络连接至因特网。

用户设备6、10分别对第一用户4和第二用户8是可用的。每个用户设备6、10被示出为执行相应的通信客户端7、10。

每个客户端7、10是用于经由网络2来实现通信系统1内的通信事件的,所述通信事件例如用户4与其他用户8之间的音频和/或视频通话、和/或其他通信事件,例如白板、即时消息传送或屏幕共享会话。通信系统1可以是基于互联网协议语音或视频(voip)系统的。这些系统可以对用户有益,这是因为它们常常具有比传统固定线路或移动蜂窝网络显著更低的成本,特别是针对长距离通信。客户端软件7、10建立voip连接并且提供诸如注册和用户认证(例如,基于诸如用户名和相关联的密码之类的登录凭证)之类的其他功能。

为了实现通信事件,数据在其相应的设备处从用户中的每个用户捕获并且被发送至其他用户的设备以用于输出至其他用户。例如,在视频通话中,包含用户的话音(通话音频)的音频数据是经由相应的设备的麦克风捕获的,并且经由网络在音频数据流中被发送;体现该用户的移动的图像(通话视频)的视频数据是经由相应的设备的相机捕获的,并且经由网络2在视频流中被发送。通话音频/视频被捕获并且在发送前在发送设备处被编码,并且在被接收后在其他设备处被解码并输出。用户4、8可以因此经由通信网络2可听见地并且可看见地彼此进行通信。

在数据(例如,通话音频/视频)在其设备处从多个用户中的一个用户处被捕获到所捕获的数据在其设备处被输出给其他用户之间最多存在例如大约2秒或更少的短延迟的意义上来讲,通信事件可以是实时的。

在图1中仅示出了通信系统1中的两个用户4、8,但是如将容易理解的,可以存在通信系统1的更多用户,其中每个用户操作他们的设备和客户端以使其经由通信网络2来与其他用户通信。例如,诸如分组通话(例如,视频会议)之类的分组通信事件可以在通信系统1的三个或更多个用户之间执行。

图2示出了用户设备6的框图。用户设备6是可以采取多种形式的计算机设备,例如,台式或膝上型计算机设备、移动电话(例如,智能电话)、平板计算设备、可穿戴计算设备(耳机、智能手表等)、电视(例如,智能tv)或其他壁挂设备(例如,视频会议设备)、机顶盒、游戏控制台等的形式。用户设备6包括处理器22,其是由一个或多个处理器单元(例如,cpu、gpu、定制处理单元等)和连接至处理器22的以下组件形成:在一个或多个存储器单元(例如,ram单元、直接访问存储器单元等)上形成的存储器20;网络接口24;至少一个输入设备,例如,如图所示的相机27和麦克风28;至少一个输出设备,例如扬声器(26)和显示器25。用户设备6经由其网络接口24连接至网络2,以使得处理器22可以向网络2发送数据/从网络2接收数据。网络接口24可以是有线接口(例如,以太网、火线、thunderbolt、usb等)或者无线接口(例如,wi-fi、蓝牙、nfc等)。存储器保存通信客户端7的代码以在处理器22上执行。客户端7可以是例如独立通信客户端应用、诸如web浏览器等之类的另一应用的插件,其在由其他应用所提供的执行环境中的处理器上运行。客户端7具有用于从用户4接收信息并且向用户4输出信息的用户界面(ui)。例如,客户端7可以分别经由扬声器26和显示器25来输出经解码的音频/视频。显示器25可以包括触摸屏以使得该显示可以充当输入设备。客户端分别经由麦克风28和相机27来捕获音频/视频,其编码并发送至参与通话的其他用户的一个或多个其他用户设备。这些组件中的任何一个可以被集成在用户设备6或者经由合适的外部接口而连接至用户设备6的外部组件中。

图3示出了可以如何经由网络2在用户设备6、10之间建立信道12。网络2具有多个网络层,即就是链路层14(最低层)、链路层14之上的网络层15、网络层15之上的传输层16、以及传输层16之上的应用层17。网络层可以例如是根据tcp/ip组的。应用层17提供在不同主机上运行的进程之间的进程到进程通信,所述主机即连接至网络2的通用计算机设备,例如,用户设备6、8。传输层16提供不同主机之间的端到端通信,包括在多个主机之间提供端到端连接以由所述进程使用。互联网层15提供经由路由器3的路由,即互联网2的不同个体网络之间的通信。链路层14提供互联网2的个体网络中的相邻节点的物理网络地址(例如,mac“介质访问控制”地址)之间例如经由在链路层14处操作的网络交换机和/或集线器等的通信。

在该示例中,信道12是网络2的应用层17处的应用层信道,其在分别运行在用户设备6、10上的客户端7、11的实例之间被建立。即,两个用户设备6、10上的客户端实例之间的进程到进程信道。

应用层信道12进而可以经由设备6、10之间的一个或多个传输层信道来建立,所述信道常常被称为端到端或主机到主机信道。每个传输层信道进而是经由用户设备6、10中的一个与路由器3之间的信道或者多对路由器3之间的网络层信道建立的,所述网络层信道进而是经由互联网2的个体网络内的链路层信道建立的。

在下文中所描述的本主题的实施例适用于应用层12。然而,一般而言本主题可以被应用在任何网络层(例如,在传输层信道)处。

信道12在该示例中是从第一用户设备6上的客户端实例到第二用户设备17上的客户端实例的单向信道。可替代地,可替代地,信道12可以是双向的,例如,其总带宽的相应(固定的或可变的)部分被分配给每个方向上的通信。

所描述的实施例被应用在第一用户设备6处以实现从第一用户设备6到第二用户设备10的数据传输。显然的是,实施例可以等同地被应用在其他用户设备10处以实现在同一通话中另一方向上的传输。

例如,图4示出了发送设备6的媒体数据传输系统30。示出了媒体数据传输系统30的各种功能模块32-46,它们是客户端7的软件模块。即,功能模块32-46表示通过在发送设备6的处理器22上执行客户端7的相应代码来实现的功能。所述功能模块包括:音频帧模块32、音频编码器34、音频分组化模块36,它们构成了媒体数据传输系统30的音频数据分组化系统31a;流量整形(trafficshaping)模块39、带宽测量模块45、以及多路复用器40;视频编码器42、以及视频分组化模块44,它们构成媒体数据处理系统30的视频数据处理系统31b;以及视频分组大小确定模块46。还示出了音频和视频缓冲器50、52,它们是在存储器20中实现的,并且可以例如是先进先出缓冲器。

音频分组化系统31a将由麦克风28捕获的音频数据实时地分组化,以在用户4、8之间的通话期间经由信道12传输至接收设备10。

音频帧模块32接收由麦克风26所捕获的音频数据采样,并且使用所接收的音频采样来生成一系列音频帧af。每个音频帧af是由麦克风捕获的一组连续的音频采样。每个帧中的采样的数量在该示例中是能够基于在存储器20中电子地存储的帧信息23(见图2)来配置的。帧信息23传达针对音频帧的期望帧速率ra,并且可以例如是指定帧速率ra(例如,以帧每秒为单位)或者期望的音频帧持续时间(1/ra)(例如,以ms或音频采样为单位)的帧参数。典型的帧持续时间(1/ra)是20ms、40ms、60ms、80ms、或100ms,并且可以是依赖于音频编码解码器的。帧速率ra是期望在接收设备10处播出帧的速率,其应该与它们被实时生成的速率相匹配。

音频编码器34以每帧为基础将音频压缩应用于帧af,从而降低每一帧af的大小(以bit为单位)以供传输。

音频编码器34和音频帧模块32可以例如构成客户端7的音频编码解码器。

音频分组化模块36将经编码的音频帧af实时地封装到音频数据分组ap(其在该示例中是应用层分组)中以便生成音频数据流as。即,音频数据分组ap是音频流as的数据分组。

每个音频数据分组ap具有标头和有效负载,所述标头包括相关元数据,例如标识音频流as的流标识符,而有效负载包括音频帧af的音频数据。在该示例中,每个音频分组有效负载包括一个(且仅一个)整体音频帧af,以使得在音频帧af与音频数据分组ap之间存在直接的一对一对应。然而,显然的是,音频帧af可以以各种其他方式被组织成分组。

一旦音频流as的音频数据分组ap已经被生成,其就被存储在音频数据缓冲器50中以供经由信道12传输。

视频分组化系统31b将由相机27捕获的视频数据(图像数据)实时地分组化,以在用户4、8之间的通话期间经由信道12传输至接收设备10。

视频编码器42(例如,视频编码解码器)以视频帧速率rv从相机27接收视频帧,所述帧速率rv例如,15-20fps(帧每秒),或者更高,例如20-30fps,甚至为了高质量视频高至60fps。即,rv视频帧vf是每秒捕获的。每个视频帧vf是要在接收设备处显示的一个图像。所述图像期望在接收设备处以它们被捕获的相同速率接连地被显示,以便精确地复制由相机27所捕获的运动。视频解码器42将视频压缩应用至所接收的帧vf,以降低其大小(以bit为单位)。这可以涉及例如图像量化,由此像素值的范围被映射至单个值;降低帧的像素分辨率,即降低每一帧中的像素的数量;帧内编码,由此经编码的帧中的像素值相对于同一帧中的其他像素而被表达;帧间编码,由此每一帧中的像素值相对于同一帧或其他帧中的像素而被表达,等等。

视频分组化模块44将经编码的视频帧vf封装在视频数据流vs的视频数据分组vp中。每个视频数据分组vp具有标头和有效负载,所述标头包括相关元数据,例如将视频流vs与音频流as区分开的视频流vs的标识符,而所述有效负载包括经编码的帧中的经编码的视频数据。在该示例中,视频数据分组vp,并且特别是其有效负载具有可变的大小。特别地,每个视频数据分组vp的最大大小msv是由视频分组大小确定模块46动态地确定的,如将在适当时描述的。由此,每个视频数据分组vp可以取决于最大分组大小msv当前被如何设置而仅包括单个经编码的帧中的一些经编码的视频数据、整个经编码的帧、多个经编码的帧中的经编码的视频数据等。

一旦视频流vs的视频数据分组vp已经被生成,其就被存储在视频数据缓冲器52中以供经由信道12传输至接收设备10。

音频和视频分组vp、ap可以例如具有固定的相应大小的标头。视频分组vp至少可以具有大小可变的有效负载,其可以根据最大分组大小msv来变化。

多路复用器40使用时分多路复用将音频和视频流as、vs在信道12(即,同一信道)上多路复用。即,音频和视频数据分组ap、vp进而分别从缓冲器50、52选择性地取回,并且经由信道一个接一个地发送。

音频和视频数据分组ap、vp分别是专用音频和视频数据分组,即,分组中的每个分组仅包括音频数据和视频数据中的一个;即,音频数据和视频数据不在同一分组中混合。音频数据分组ap和视频数据分组vp两者都是顺序地生成的,即,音频分组是一个接一个地生成的,视频数据分组也一样。视频数据分组vp的生成与音频数据分组ap的生成是同时的;即,音频和视频数据分组ap、vp是彼此并列地生成的。

音频和视频分组ap、vp在它们被生成时由多路复用器40多路复用到流中。多路复用在该示例中使得任何两个相邻的音频分组ap彼此分隔最多一个视频数据分组vp,这受到流量整形模块39的影响。

带宽测量模块45确定信道12的可用带宽bw。即,可用于音频和视频流as、vs的带宽bw,其可以是信道的总带宽bw或者总带宽的一部分,例如被分配以由流as、vs共享的部分。在该示例中,所确定的带宽bw是应用层信道12的经确定的进程到进程带宽(但可以可替代地是例如,传输层信道的经确定的端到端带宽)。

通过在低带宽处降低最大视频分组大小msv,音频分组抖动可以被降低并且因此针对音频-视频通话的音频质量可以被改进。即,由视频分组vp的传输引入的音频分组抖动可以被降低或消除。

由此,分组大小确定模块46根据以下项来控制最大视频分组大小msv:(i)音频流as的帧速率ra以及(ii)信道12的可用带宽(bw)。

通过随着带宽减少来降低针对当前视频帧速率ra的最大视频分组大小msv,音频抖动可以被阻止或至少被降低。

换句话说,最大视频分组大小msv基于信道容量和音频帧速率ra来动态地调节。

在发送者端处创建的音频分组ap被直接置于线路上(即,直接多路复用到信道12上),大约针对50fps的音频帧速率ra每20ms,而视频分组vp步进通过流量整形模块39,以便避免在音频分组之间发送过大的视频数据突发脉冲。步进粒度限于一个视频分组,并且因此,通过在音频分组之间步进一个视频分组而引入的最大瞬时延迟△tv等于最大视频分组大小msv除以可用信道带宽bw。即:

△tv=msv/bw

如在图5中所示出的。

作为示例,针对例如1152字节(加上标头1200字节)的最大视频分组大小以及100kbps的可用信道带宽,这对应于△tv=100ms(1200字节/12.5字节每秒)的传输时间。这可能引起当在期望被间隔开仅20ms的音频分组之间插入时的显著音频抖动增加。

为了防止视频数据分组msv产生音频分组抖动,在一些情况下,最大视频分组大小msv可以被设置以使得:

msv=bw/ra(或者,更加一般地,msv≤bw/ra)

即,当不多于(例如,大体上等于)可用信道带宽bw除以音频帧速率ra时。这防止以上的方程(1)的情况产生。

在其他情况下,最大视频分组大小msv可以被设置以使得:

msv=(bw/ra)-msa(或者,更加一般地,msv≤(bw/ra)–msa)其中,msa是音频分组ap的大小(或最大大小),以使得传输一个音频分组ap所花费的时间为:

△ta=msa/bw

如也在图5中所示出的。这防止以上的方程(2)的情况产生。

使得视频分组尽可能大(即,在不产生音频抖动的情况下尽可能大)最高效地利用可用带宽bw,因为这意味着带宽bw的尽可能小的部分被用在分组标头数据上。最大视频分组大小msv可以是有上下限的,以使得:

其中,例如

或者

即,msv可以是音频帧速率ra和(在一些情况下)可用带宽bw的函数,即下限为第一预先确定值msmin而上限为第二预先确定值msmax。

例如,msmin=256字节而msmax=1152字节。例如,msv可以从100kbps处的256字节(及以下)线性地增加至460kbps处的1152字节(及以上)。

流量整形是通过流量整形模块39优先地将音频数据分组多路复用到视频数据分组之前的组合的流中来实现的。即,通过延迟将任何可用视频数据分组(即,当前保存在视频数据缓冲器中的任何视频分组)多路复用到组合的流中以允许当前可用的任何音频数据分组(即,当前保存在音频数据缓冲器中的任何音频数据分组)被首先多路复用到组合的流中。即,音频数据分组是从音频数据缓冲器取回的,并且优先于视频数据缓冲器中的视频数据分组而被并入到组合的流中,以使得视频数据分组只有在所有可用的音频数据分组已经被并入到组合的流中之后才被并入。

可替代地,服务器(例如,媒体中继服务器)可以接收流vs和/或as,即服务器可以取代图3中的第二用户设备10的位置。媒体中继服务器还在应用层17处操作,并且在该情况下,信道12是进程到进程的,即发送用户设备6与媒体中继服务器之间的应用层信道(或者端到端的,即,传输层信道)。媒体中继服务器可以例如在转码和/或音频混合(例如,在分组通话中)等之后执行诸如将音频和/或视频重新分组化成新的媒体数据分组之类的功能。新的媒体数据分组经由媒体中继服务器与第二用户设备10之间的分别的、额外的进程到进程或端到端信道而从媒体中继服务器被发送至第二用户设备10。在该情况下,媒体中继服务器可以将本技术包含到重新分组化过程中,其中,新的视频数据分组的最大分组大小基于播出速率以及对媒体中继服务器与第二用户设备6之间的额外信道的端到端或进程到进程带宽估计而被限制。

即,本技术可以在以下情况下实现,例如:

1、在发送用户设备处,基于发送用户设备与接收用户设备之间的信道的端到端或进程到进程带宽;或者

2、在发送用户设备处,基于发送用户设备与在应用层17处操作的服务器(或者在应用层17处操作的其他中间设备)之间的信道的端到端或进程到进程带宽;和/或

3、在服务器处(或者其他中间设备),基于服务器与接收用户设备之间的信道的端到端或进程到进程带宽。

尽管已经参考音频帧在上文中进行了描述,但相同的技术可以应用于视频帧。例如,在视频帧速率超过所述帧速率的情况下,视频分组抖动可能实际上比音频分组抖动更加能够感知到,因此适合于基于涉及视频帧速率rv的帧信息23来调节最大音频分组大小msa。此外,一般而言,分组中其最大大小被调节了的数据可能根本不是音频或视频数据,而是某一其他类型的数据,例如,被多路复用到同一信道上的控制数据流的控制数据。

应当注意,通常而言,帧信息23可以包括帧速率(r,例如以帧每秒为单位)或者帧持续时间(fd=1/r,例如以ms或在可用的情况下以音频采样为单位),例如,针对音频帧是帧在其内被播出的时间间隔,而针对视频帧是帧在改变至下一视频帧之前被显示的时间间隔。帧持续时间传达帧速率,因为帧速率是帧持续时间的倒数,即r=1/fd。

应当注意,尽管在上文中,带宽bw和帧速率r两者都用来计算最大分组大小ms,但这不是必须的,例如,在一些情况下,可以假设固定带宽。此外,最大分组大小ms不一定要在客户端处被确定——其可以例如在网络中的其他地方被确定,或者在固定带宽和固定帧速率的情况下甚至可以被提前确定并且被硬编码到客户7中。

通常而言,可以使用软件、固件、硬件(例如,固定逻辑电路)、或这些实现的组合来在本文中实现所描述的功能中的任何功能。如在本文中所使用的术语“模块”、“功能”、“组件”和“逻辑”通常表示软件、固件、硬件、或其组合(图4的功能块)。在软件实现的情况下,模块、功能、或逻辑表示当在处理器(例如,cpu或多个cpu)上被执行时,执行指定的任务的程序代码。可以将程序代码存储在一个或多个计算机可读存储器设备中。在下文中所描述的技术的特征是与平台无关的,这意味着可以在具有多种处理器的多种商业计算平台上实现所述技术。

例如,用户设备6、10(用户终端)还可以包括使得用户设备的硬件执行操作的实体(例如,软件),例如,处理器功能块等。例如,用户设备可以包括计算机可读介质,其可以被配置为保存使得用户设备,并且更加特别地使得操作系统和用户设备的相关联的硬件执行操作的指令。因此,指令用于配置操作系统和相关联的硬件以执行操作,并且以该方式引起操作系统的状态的转换并且使得相关联的硬件执行功能。可以由计算机可读介质通过多种不同的配置将指令提供至用户设备。

计算机可读介质的一种这样的配置是信号承载介质,并且因此被配置为将指令(例如,作为载波)发送至计算设备,例如,经由网络。计算机可读介质还可以被配置为计算机可读存储介质,并且因此不是信号承载介质。计算机可读存储介质的示例包括:随机存取存储器(ram)、只读存储器(rom)、光盘、闪速存储器、硬盘存储器、以及可以使用磁、光、和其他技术来存储指令和其他数据的其他存储器设备。

本主题的第一方面针对一种经由信道将多个数据流从发送设备发送至接收设备的方法,所述方法包括:在所述发送设备处生成媒体数据流,所述媒体数据流包括要在所述接收设备处以期望的播出速率播出的音频数据或视频数据;使用播出信息来确定针对另一数据流的最大分组大小,所述播出信息涉及所述媒体数据流的所述音频数据或视频数据并且传达所述音频数据或视频数据的所述期望的播出速率;在所述发送设备处基于所确定的最大分组大小生成所述另一数据流的多个数据分组,其中每个数据分组具有不超过所确定的最大值的分组大小;以及在所述发送设备处,将所述媒体数据流和所述另一数据流多路复用到所述端到端信道或所述进程到进程信道上,由此经由同一信道将所述媒体数据流和所述另一数据流两者从所述发送设备发送至所述接收设备。

在实施例中,所述媒体数据流可以是包括音频数据的音频数据流;其中,所述另一数据流可以是视频数据流,而所述数据分组是包括要在所述接收设备处播出的视频数据的视频数据分组。

所述最大分组大小还可以基于对所述媒体流和所述另一流可用的信道的带宽来确定。

所述最大分组大小可以不大于所述可用带宽除以所述期望的播出速率。

所述最大分组大小可以大体上等于所述可用带宽除以所述期望的播出速率。

所述另一数据流的所述最大分组大小可以不大于所述可用带宽除以所述期望的播出速率减去所述媒体流的媒体数据分组的最大分组大小。

所述另一数据流的所述最大分组大小可以大体上等于所述可用带宽除以所述期望的播出速率减去所述媒体流的媒体数据分组的最大分组大小。

所述发送设备可以是发送用户设备。

可替代地,所述发送设备可以是发送服务器。

所述接收设备可以是接收用户设备。

可替代地,所述接收设备可以是接收服务器。

针对所述媒体流和所述另一流的可用带宽可以是所述信道的总带宽,或者是由所述数据流共享的总带宽的一部分。

流量整形可以是这样在所述发送设备处实现的:通过延迟将所述另一数据流的可用数据分组多路复用到所述信道上以允许所述媒体数据流的可用数据分组被首先多路复用到所述信道上。

所述流的数据分组可以通过以下方式被呈现从而可用于多路复用到所述信道上:将它们分别存储在所述发送设备的第一数据缓冲器和第二数据缓冲器中。

可以执行步骤以在所述发送设备的用户与所述接收设备的用户之间实行通话。

所述最大分组大小可以由第一预先确定的值限定下限并由第二预先确定的值限定上限,并且可以至少根据所述第一预先确定的值与所述第二预先确定的值之间的播出速率来变化。

所述流可以被多路复用以使得经由所述信道发送的所述媒体流的数据分组的每个相邻的对最多分隔所述信道上的所述另一流的一个数据分组。

所述音频数据或视频数据可以采用一系列音频帧或视频帧的形式,所述期望的播出速率是所述帧的期望的帧速率。

所述一系列帧中的每一帧可以被实施在所述媒体数据流的单个相应数据分组中。

媒体数据流可以是包括视频数据的视频数据流;而所述另一数据流可以是音频数据流,并且所述数据分组可以是包括要在所述接收设备处播出的音频数据的音频数据分组。

所述信道可以是经由网络在所述网络的应用层建立的应用层信道。

所述信道可以是经由网络在所述网络的传输层建立的传输层信道。

本主题的第二方面涉及一种设备,其用于经由具有多个网络层的网络将多个数据流发送至接收设备,所述设备包括:网络接口;存储器,其保存流生成代码;以及处理器,其中,所述流生成代码被配置为当在所述处理器上被执行时,引起以下操作:生成媒体数据流,所述媒体数据流包括要在所述接收设备处以期望的播出速率播出的音频数据或视频数据;使用播出信息来确定针对另一数据流的最大分组大小,所述播出信息涉及所述媒体数据流的所述音频数据或视频数据并且传达所述音频数据或视频数据的所述期望的播出速率;基于所确定的最大分组大小生成所述另一数据流的多个数据分组,其中每个数据分组具有不超过所确定的最大值的分组大小;以及使用所述网络接口将所述媒体数据流和所述另一数据流多路复用到所述信道上,由此经由同一信道将所述媒体数据流和所述另一数据流两者从所述发送设备发送至所述接收设备。

本主题的第三方面涉及一种方法,其经由信道将音频数据和视频数据从发送设备发送至接收设备,所述方法包括:在所述发送设备处生成一组数据分组,其体现要在所述接收设备处以期望的帧速率播出的媒体帧的第一序列,帧的所述第一序列是音频帧或视频帧中的一个;使用涉及音频帧的媒体帧的第一序列的帧信息来确定媒体帧的第二序列的最大分组大小,所述帧信息传达期望的帧速率,其中,媒体帧的所述第二序列是音频帧或视频帧中的另一个;基于所确定的最大值在所述发送设备处生成第二组数据分组,其体现媒体帧的第二序列,所述第二组数据分组中的每个数据分组具有不大于所确定的最大值的分组大小;以及在所述发送设备处,将所述第一组数据分组和所述第二组数据分组多路复用到所述信道上,由此经由同一信道将所述媒体数据流和所述另一数据流两者从所述发送设备发送至所述接收设备。

本主题的第四方面针对一种设备,其用于将音频数据和视频数据发送至至少一个其他设备,所述设备包括:网络接口;存储器,其保存流生成代码;处理器,其中,所述流生成代码被配置为当在所述处理器上被执行时,实现第三方面所述的方法。

本主题的第五方面针对一种包括代码计算机程序产品,所述代码被存储在计算机可读介质上并且被配置为当在发送设备的处理器上被执行时,实现以上方面或其实施例所述的方法中的任何一项。

尽管已经用特定于结构特性和/或方法行为的语言描述了本主题,但应当理解的是,在所附权利要求中所定义的主题并非必须局限于在上文中所描述的具体的特征或行为。相反,在上文中所描述的具体的特征和行为是作为实现权利要求的示例性方式而公开的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1