用于实时视频流式传输系统的缓冲区感知发射速率控制的方法和设备与流程

文档序号:16065586发布日期:2018-11-24 12:37阅读:112来源:国知局

本发明大体上涉及视频发射系统,且确切地说但非排它地,涉及实时视频通信系统。

背景技术

经由不可靠通信网络的实时视频发射可能会引起各种图像质量问题,例如,帧缺失或失真、冻结、暂停、中断,等。这些问题可能由带宽波动、不充分带宽、丢包和/或发送器侧或接收器侧缓冲区下溢/溢位造成。举例来说,如果发送装置的瞬时发射速率大于可用网络带宽,则许多数据包可能会晚于最后期限到达目的地,这会诱发质量下降。此外,在长距离发射的情况下,带宽消耗可能增大,这会导致不必要的数据包重新发射。此外,缓冲区下溢/溢位可能由异常发射速率引起,且可能影响视频的质量。尽管多年来已提出许多尝试来缓解此类问题,但仍尚未实现有效的解决方案。因此,可能需要实时发射速率和调度方案来解决此类问题。



技术实现要素:

在一个方面中,本申请案提供一种方法,所述方法包括:至少部分地基于缓冲区的缓冲区填充比率而以一发射速率发射第一视频数据包,其中所述发射速率响应于所述缓冲区填充比率的改变而调整;响应于否定确认(nak)数据包而选择性地重新发射第二视频数据包,其中选择性地重新发射所述第二视频数据包是至少基于所述第二视频数据包先前是否已重新发射、所述缓冲区的缓冲区水平和重新发射速率;以及响应于在重新发射逾时内未接收到确认(ack)数据包而选择性地重新发射第三视频数据包,其中选择性地重新发射所述第三视频数据包是至少基于所述第三视频数据包先前是否已重新发射、所述缓冲区的所述缓冲区水平和所述重新发射速率。

在另一方面中,本申请案提供一种包含指令的非暂时性计算机可读存储媒体(crm),所述指令在由处理器执行时致使所述处理器:至少部分地基于缓冲区的缓冲区填充比率而以一发射速率发射第一视频数据包,其中所述发射速率响应于所述缓冲区填充比率的改变而调整;响应于否定确认(nak)数据包而选择性地重新发射第二视频数据包,其中选择性地重新发射所述第二视频数据包是至少基于所述第二视频数据包先前是否已重新发射、所述缓冲区的缓冲区水平和重新发射速率;以及响应于在重新发射逾时内未接收到确认(ack)数据包而选择性地重新发射第三视频数据包,其中选择性地重新发射所述第三视频数据包是至少基于所述第三视频数据包先前是否已重新发射、所述缓冲区的所述缓冲区水平和所述重新发射速率。

附图说明

参考以下图式描述本发明的非限制性且非穷尽性的实例,其中除非另外指定,否则遍布各图的相同的参考标号指代相同的部分。

图1是根据本发明的实施例的实例视频发射系统。

图2是根据本发明的实施例的发送器和接收器的实例说明。

图3是根据本发明的实施例的实例基于nak的视频数据包重新发射算法。

图4是根据本发明的实施例的实例基于ack的视频数据包重新发射算法。

图5是根据本发明的实施例的发送器的功能框图。

对应参考标号在图式的若干视图中始终指示对应组件。所属领域的技术人员应了解,图中的元件仅为简单和清晰起见而进行说明,但不一定按比例绘制。举例来说,图中的一些元件的尺寸可能相对于其它元件夸示以有助于改进对本发明的各种实施例的理解。并且,通常未描绘在商业可行的实施例中有用或必需的常见但众所周知的元件,以便促进本发明的这些各种实施例的遮挡较少的视图。

具体实施方式

本文中描述用于实时视频发射系统的设备和方法的实例,所述实时视频发射系统基于发送器侧缓冲区的填充水平调整发射速率,且进一步基于各种重新发射方案降低带宽消耗。在以下描述中,陈述众多特定细节以提供对特定实例的透彻描述。然而,相关领域的技术人员将认识到,可在没有所述特定细节中的一个或多个的情况下和使用其它方法、组件、材料等实践本文所述的技术。在其它情况下,未展示或详细描述众所周知的结构、材料或操作以免混淆某些方面。

在本说明书通篇中参考“一个实例”或“一个实施例”指的是结合所述实例描述的特定特征、结构或特性包含于本发明的至少一个实例中。因此,贯穿本说明书在不同位置中出现短语“在一个实例中”或“在一个实施例中”未必都是指同一个实例。此外,在一个或多个实例中,特定特征、结构或特性可以任何合适方式组合。

在整个本说明书中,使用若干技术术语。这些术语将采用其在它们所出现的领域中的普通含义,除非本文明确定义或其使用情境将明显表明其它含义。应注意,元件名称与符号在本文中可互换使用(例如,si对硅);然而,两者具有相同含义。

图1是根据本发明的实施例的实例视频发射系统100。视频发射系统100(简称为系统100)可提供从发送器102到接收器104的实时视频。系统100可实施发射速率控制以使用最小带宽实现高质量视频。在一些实施例中,系统100可至少部分地基于发送器102的缓冲区的填充百分比来调整发射速率。此外,系统100可实施一个或多个重新发射方案来以不会不利地影响带宽使用率的方式限制数据包的重新发射。重新发射方案可为基于确认(例如,基于逾时)的重新发射速率控制方案和/或基于否定确认的选择性重新发射方案。在一些实施例中,两个重新发射方案将同时实施。在其它实施例中,所实施的重新发射方案可取决于发送器与接收器之间的距离。举例来说,系统100可由提供实时视频的应用实施,例如经由有线和/或无线通信系统将视频从远程摄像机提供到观看者的点到点系统。通信系统可包含因特网、wi-fi和/或蜂窝发射媒体。

系统100的所说明实施例包含发送器102、接收器104、两个或更多个wi-fi点106、蜂窝网络点108和因特网110。发送器102可将视频数据包发射到接收器104。视频数据包可经过各种路径从发送器102传播到接收器104。举例来说,视频数据包可首先提供到wi-fi点106a,随后传播到且经过因特网110。在视频数据包在其途中退出因特网到接收器104时,视频数据包可经过wi-fi点106b或蜂窝网络(例如,lte、hsdpa、3g,等)点108。在一些实施例中,蜂窝网络点108为4g基于lte的协议。响应于所述视频数据包,接收器104可将确认(ack)数据包和/或否定确认(nak)数据包发射到发送器102。分别基于接收到或未接收到nak和ack数据包,发送器102可重新发射视频数据包。

nak数据包向发送器102通知未接收到特定视频数据包,接收器104可从所接收数据包确定所述特定视频数据包。更特定地说,每一视频数据包可具有唯一识别符,例如序号,其嵌入于视频数据包标头中。序号可为按顺序的(例如链接的)列表,其允许接收器104通过审阅所接收视频数据包的序号而快速地确定是否存在任何缺失的视频数据包。任何缺失的编号将指示损失的视频数据包。在一些实施例中,接收器104可将视频数据包暂时存储在缓冲区中。因此,在视频数据包由接收器104接收到时,接收器104可基于视频数据包的序号对视频数据包进行排序(在一些情况下,视频数据包可能无序地接收),且进一步审阅所述序列以发现缺失的序号。作为响应,接收器104可基于缺失的序号来发射请求重新发射缺失的视频数据包的nak数据包。

在一些实施例中,序号可针对每一视频帧重设。举例来说,帧内编码的帧,例如i(内)-帧,可编码到大量数据包中,且用于i-帧的数据包可例如从零到255依次编号。一旦i-帧已成功地发射且任何损失的数据包已重新发射,下一帧可准备好发射,此时,序号可重设且从头开始。

ack数据包可由接收器104响应于每一所接收视频数据包而提供。响应于接收到ack数据包,发送器102可基于序号从发送器102的缓冲区移除那一所识别的视频数据包。此外,对于发送器缓冲区中的每一视频数据包,可在发射视频数据包时起动定时器,其中定时器设定预期将从接收器104接收到ack数据包的时间量,例如逾时周期。实例逾时周期为500毫秒。如果发送器102在特定视频数据包的相关联逾时内未接收到针对所述特定视频数据包的ack数据包,则发送器102可重新发射所述特定视频数据包。

响应于nak数据包或响应于未接收到ack数据包,发送器102可确定何时或是否重新发射视频数据包。发送器102可评估视频数据包先前是否已重新发射、已针对特定视频数据包出现多少次nak数据包或多少次未接收到ack数据包、缓冲区充满度水平的状态和/或重新发射水平,随后确定是否重新发射视频数据包。通过评定这些各种因素,发送器102可以不会不利地影响实时视频发射期间的带宽使用率的方式调节重新发射速率。

图2是根据本发明的实施例的发送器202和接收器204的实例说明。发送器202与接收器204可分别仅为发送器102与接收器104的一个实例。发送器202的所说明实施例包含发送器缓冲区212和用户数据报协议(udp)插口216。接收器204的所说明实施例包含接收器缓冲区214。尽管发送器202和接收器204可包含用于发射和接收数据包的其它硬件,例如视频编码器、解码器、mac层、物理层、无线电和控制器,但为论述的容易性和清晰性,未展示此类已知特征。图2的论述可用以进一步说明系统100。

发送器缓冲区212与接收器缓冲区214可大小类似。举例来说,发送器缓冲区212和接收器缓冲区214两者皆可能够持有64个视频数据包。每一视频数据包可为1024字节的长度,且至少包含标头和有效载荷区段。标头可包含关于视频数据包的有效载荷的信息和各种识别信息。在一些实施例中,标头包含视频数据包的序号,其可供发送器202和接收器202用于实施基于ack和nak的重新发射方案。

udp插口216可用以使用udp发射视频数据包和ack/nak数据包。尽管udp插口未在接收器204中展示,但包含udp插口。udp插口216可提供视频、ack和nak数据包在发送器202与接收器204之间的无连接发射。

使用发送器102/202和接收器104/204,系统100可实施发射速率控制和两个重新发射方案用于使用udp插口/协议发射实时视频。一般来说,视频帧数据经由udp插口216连续推送到发送器缓冲区212且发送到接收器204。在试图确保可靠视频数据递送时,系统100实施基于nak和ack的重新发射方案。因此,如果发送器102/202在逾时内未接收到缓冲区212中的特定视频数据包的ack数据包,则视频数据包在先前未重新发射的情况下可重新发射,否则发送器102/202可执行ack特定算法以确定视频数据包至少在那时是否应重新发射。此外,如果发送器102/202接收到特定视频数据包的nak数据包,则发送器可执行nak特定算法以确定视频数据包至少在那时是否应重新发射。

发送器102/202可确定递送视频数据包的瞬时发射速率,其可调整以防止或限制发送器缓冲区212的溢位。此外,可将发射速率调整为网络友好的,例如,以符合网络的所建立界限。一般来说,可基于发送器缓冲区212的充满度水平调整发射速率。举例来说,发射速率r可为(经缓冲视频数据包的数目/最大缓冲区大小)*rnetwork,其中rnetwork为针对tcp协议观察到的输贯量,其也适用于udp协议。在一些实施例中,rnetwork如下:

其中s为数据包大小,rtt为从发送器到接收器的往返时间,rto为重新发射逾时,且p为丢包率。尽管标准发射速率rnetwork不考虑发送器侧缓冲区,但本发明的发射速率基于发送器侧缓冲区的充满度水平调整发射速率,这可具有改善用户感知质量同时最小化带宽消耗的效果。发射速率r可供发送器102/202用于将新提供到发送器缓冲区212的视频数据包发射到接收器104,但可能并不影响系统100的重新发射速率。实际上,基于nak和ack的重新发射方案可能影响重新发射速率,且将在下文进一步详细论述。

图3是根据本发明的实施例的实例基于nak的视频数据包重新发射算法320。算法320可为由例如包含在系统100中的发送器102和/或202实施的否定确认选择性重新发射方案的实例。发送器可从例如接收器104和/或204等接收器接收nak数据包。如由发送器实施的算法320可基于接收到相关联nak数据包而确定重新发射什么视频数据包以及在何时重新发射,其中nak数据包使用视频数据包识别符(例如序号)识别视频数据包。

算法320可在过程框321处开始,其包含接收如由序号识别的特定视频数据包的nak数据包。nak数据包由发送器针对发送器先前已发射到接收器的视频数据包而接收。过程框321之后可为过程框323,其确定视频数据包先前是否已重新发射。在一些实施例中,发送器可基于使用视频数据包的相关联序号跟踪每一视频数据包的重新发射数目的计数器来确定视频数据包先前是否已重新发射。举例来说,发送器可查阅计数器以确定视频数据包先前是否已重新发射。如果视频数据包尚未重新发射,则算法320进行到过程框325,且立即重新发射视频数据包。然而,如果视频数据包已经重新发射,则算法320进行到过程框327,其基于视频数据包的序号确定视频数据包是否为例如发送器缓冲区212等发送器缓冲区中的最旧视频数据包。最旧数据包也可被称作发送器缓冲区的下界,例如,发送器缓冲区中的最低序号。

如果由nak数据包识别的视频数据包为发送器缓冲区中的最旧视频数据包,则所述算法进行到过程框337。过程框337确定发送器缓冲区是否高于阈值水平,例如,变满。阈值水平也可被称作第一阈值。在一些实施例中,阈值水平可为最大缓冲区大小减去某值,例如10。在一些实施例中,阈值水平为80%,但其可高达85%。如果发送器缓冲区高于阈值水平,则算法320进行到过程框339,其包含重新发射视频数据包。然而,如果发送器缓冲区小于阈值水平,则算法320进行到过程框341。

如果由nak数据包识别的视频数据包不为如由过程框327确定的发送器缓冲区中的最旧视频数据包,则算法320进行到过程框329。过程框329确定发送器缓冲区的充满度水平是否高于高水平,例如第二阈值。高水平或第二阈值可例如为发送器缓冲区容量的60%。如果发送器缓冲区水平高于高水平,则算法320进行到过程框331。然而,如果发送器缓冲区水平小于高水平,则算法320进行到过程框335,其包含不重新发射视频数据包。

过程框331包含确定重新发射速率是否小于最低限度。最低限度可基于最低限度乘数乘以发送器缓冲区中的经缓冲数据包的数目与所发送数据包的总数目的比率。举例来说,最低限度可定义为lower_rate_limit*(经缓冲视频数据包的数目/总的所发送视频数据包),其中实例lower_rate_limit为0.15。如果重新发射速率小于最低限度,则算法320进行到过程框333,其包含重新发射视频数据包,否则所述算法进行到过程框335。

返回到图3的右侧,如果发送器缓冲区水平不高于阈值水平,例如其并未变满,则算法320进行到过程框341。过程框341确定发送器是否已接收到三个重复的nak数据包。举例来说,是否已接收到针对相同的视频数据包的三个nak数据包。如果已接收到三个重复的nak数据包,则算法320进行到过程框343,其确定发送器缓冲区水平是否高于高水平,例如高于60%满。如果尚未接收到三个重复的nak数据包,则算法320进行到过程框347。如果过程框343进行的确定为是,例如,发送器缓冲区高于高水平,则算法进行到过程框345,否则所述算法进行到过程框347。

过程框345进行重新发射速率是否小于最大限度的额外确定。最大限度可基于最大限度乘数乘以重新发射的视频数据包的数目与所发送视频数据包的总数目的比率。举例来说,最大限度可定义为higher_rate_limit*(重新发射的视频数据包的数目/所发送视频数据包的总数目),其中实例higher_rate_limit为0.35。如果重新发射速率小于最大限度,则算法320进行到过程框339,且重新发射视频数据包。然而,如果重新发射速率不小于最大限度,则算法320进行到过程框347。

过程框347确定发送器缓冲区水平是否小于高水平,例如第二阈值。如果否,则所述算法进行到过程框351,其包含不重新发射视频数据包。然而,如果发送器缓冲区水平小于高水平,则所述算法进行到过程框349,其确定重新发射速率是否小于最低限度。如果是,则所述算法进行到过程框339,且重新发射视频数据包,否则所述算法进行到过程框351。

算法320可允许发送器以可限制不必要的重新发射和带宽消耗的方式选择性地重新发射视频数据包。算法320的选择性可允许接收器有时间重新组织无序接收的视频数据包,且允许在不必要地重新发射视频数据包之前考虑采用从发送器到接收器的不同路径的视频数据包。

图4是根据本发明的实施例的实例基于ack的视频数据包重新发射算法460。算法460可为由例如包含在系统100中的发送器102和/或202实施的确认(例如,逾时)重新发射方案的实例。发送器可不从例如接收器104和/或204等接收器接收ack数据包。如由发送器实施的算法460可基于未接收到ack数据包而确定重新发射什么视频数据包以及何时重新发射。在基于ack的重新发射方案中,发送器可能期望来自接收器的ack数据包,随后从发送器缓冲区移除视频数据包。作为此确定的部分,发送器可使发送器预期在逾时内接收ack数据包的每一视频数据包的逾时相关联。实例逾时可为500毫秒。如果在逾时内未接收到ack数据包,则发送器可执行算法460以确定是否应发射视频数据包。

算法460可在过程框461处开始,其确定与逾时(例如,未接收到相关联ack数据包)相关联的视频数据包先前是否已重新发射。如果否,则可通过过程框463立即重新发射视频数据包。如果视频数据包先前已重新发射,则所述算法进行到过程框465。过程框465进行基于视频数据包的序号确定视频数据包是否为发送器缓冲区中的最早视频数据包的另一确定,例如,其是否为发送器缓冲区的下界。如果是,则所述算法进行到过程框475,否则所述算法进行到过程框467。

过程框467确定发送器缓冲区的充满度水平是否高于高水平,例如高于第二阈值。高水平或第二阈值可例如为60%满。如果发送器缓冲区水平高于第二阈值,则所述算法进行到过程框469。然而,如果发送器缓冲区水平小于第二阈值,则所述算法进行到过程框473,其包含不重新发射视频数据包。过程框469包含确定重新发射速率是否小于最低限度。最低限度可基于最低限度乘数乘以发送器缓冲区中的经缓冲数据包的数目与所发送数据包的总数目的比率。举例来说,最低限度为lower_rate_limit*(经缓冲视频数据包的数目/总的所发送视频数据包),其中实例lower_rate_limit为0.15。如果重新发射速率小于最低限度,则所述算法进行到过程框471,其包含重新发射视频数据包,否则所述算法进行到过程框473。

返回参考图4的右侧,如果基于视频数据包的序号,视频数据包为发送器缓冲区中的最早视频数据包,则所述算法进行到过程框475,其确定是否已针对视频数据包出现三次逾时。如所提到,逾时为在相关联逾时内未接收到ack的情况。如果尚未出现三次逾时,则所述算法进行到过程框483,其包含不重新发射视频数据包。然而,如果已出现三次逾时,则所述算法进行到过程框477。过程框477确定发送器缓冲区水平是否高于第一阈值,例如80%,且如果是则进行到过程框479,否则所述算法进行到过程框483。

过程框479进行重新发射速率是否小于最大限度的另一确定。最大限度可基于最大限度乘数乘以重新发射的视频数据包的数目与所发送视频数据包的总数目的比率。举例来说,最大限度为higher_rate_limit*(重新发射的视频数据包的数目/所发送视频数据包的总数目),其中实例higher_rate_limit为0.35。如果重新发射速率小于最大限度,则所述算法进行到过程框481,且重新发射视频数据包。然而,如果重新发射速率不小于最大限度,则所述算法进行到过程框483。

发送器可同时实施基于nak和基于ack的重新发射方案两者。由此,发送器可针对每一视频数据包设定定时器,且相应地对任何逾时作出响应,但也可另外接收用于已递送和未递送的视频数据包的ack和nak数据包。由此,根据上文论述的ack和nak算法,对于每一视频数据包,如果接收到nak数据包或如果未接收到ack数据包,发送器可重新发射数据包。

图5是根据本发明的实施例的发送器502的功能框图。发送器502可为发送器102和/或202的实例。发送器502可以硬件、软件、固件或其组合加以实施,且可实施如本文中所公开的发射速率控制和算法320和460。在一些实施例中,发送器502可将视频数据包实时地发射到接收器,例如接收器104和/或204。作为响应,接收器可响应于所述视频数据包而提供nak和ack数据包。

发送器502的所说明实施例包含处理器518、存储装置522和输入/输出524。处理器518可为通用处理器、微控制器或专用集成电路。在一些实施例中,处理器518可经过执行存储在存储装置522中的代码来控制视频数据包从发送器502的发射和重新发射。所述代码可包含用于使用上文所论述的发射速率来发射视频数据包的指令,且还包含用于实施如由算法320和460所说明的基于ack和基于nak的重新发射方案的指令。处理器518可经由输入/输出524发射视频数据包且接收ack和nak数据包。

可为易失性或非易失性存储装置的存储装置522可包含发送器缓冲区526和计数器528。发送器缓冲区526可为存储装置522的经分割区域,且足够大以暂时存储高达64个视频数据包。同样,计数器528可为存储装置522的区域,且可用以跟踪重新发射视频数据包的次数。此外,计数器528还可用以建立视频数据包的逾时定时器,且对其未接收到相关联ack数据包的运行次数进行计数。

对本发明的所说明的实例的以上描述(包含摘要中所描述的内容)无意为穷尽性的或将本发明限于所公开的精确形式。虽然本文中出于说明性目的描述了本发明的特定实例,但在本发明的范围内,各种修改是可能的,如相关领域的技术人员将认识到。

可鉴于以上详细描述对本发明作出这些修改。所附权利要求书中使用的术语不应解释为将本发明限于本说明书中公开的特定实例。确切地说,本发明的范围应完全由所附权利要求书确定,应根据权利要求解释的已确立的原则来解释所附权利要求书。

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