一种网络带宽自适应的流媒体传输选择性丢帧方法

文档序号:7967084阅读:267来源:国知局
专利名称:一种网络带宽自适应的流媒体传输选择性丢帧方法
技术领域
本发明涉及互联网流媒体传输领域,特别是关于一种流媒体服务器和网络中间应用层节点处的网络带宽自适应的流媒体传输选择性丢帧方法。
背景技术
近年来,随着互联网与多媒体压缩等技术的快速发展,互联网流媒体应运而生。流媒体技术使得音视频等媒体数据可以在基于IP协议的互联网中以一种“流”的形式实时、连续和稳定地传播,即接收方几乎可以在发送方发送数据的同时便立即开始一边接收数据一边进行播放,而不必等待所有数据全部下载到本地存储介质之后再从头开始播放。
典型的流媒体系统由一个流媒体服务器,一个IP互联网络和一个流媒体客户端所组成,并允许在传输链中添加其它的中间应用层节点,例如代理服务器或P2P(对等网络)中间节点等。如图1所示,在一个典型的流媒体服务器中,接收(读)线程从实时视频编码器或预编码存储好的视频文件中,接收/读取媒体数据并打包成RTP(实时传输协议)格式的数据包后,放入RTP循环缓冲区;发送线程从RTP循环缓冲区中读取RTP包,并通过互联网将其发送至客户端(或中间节点)。在一个典型的网络中间应用层节点中,发送线程从上游流媒体服务器(或其它中间节点)接收RTP包并放入RTP循环缓冲区;发送线程从RTP循环缓冲区中读取RTP包并通过互联网将其发送至客户端(或其它中间节点)。
流媒体传输具有实时性、连续性和数据依赖性等特点。实时性要求网络中传输的各视频帧数据必须在特定的播放时限之前到达接收方;连续性要求各视频帧数据必须按照一定的顺序进行播放。压缩的视频数据具有两种类型的数据依赖性帧间依赖要求接收方在解码一个优先级较低的视频帧之前必须已解码它所依赖的其它优先级较高的视频帧;帧内依赖要求接收方最好在全部接收到组成一帧的所有数据包之后再进行解码,否则会引起解码错误从而导致显示画面图像破碎等现象,甚至可能引起解码器程序崩溃。
一个好的流媒体传输系统应能够满足上述这些特性所带来的相应要求。然而目前的互联网还主要是一个“尽力而为”的网络,其信道行为如带宽、时延和丢包率等具有一定的动态性和不可预测性,无法提供流媒体传输所需要的服务质量(QoS)保证。其中一个突出的问题就是存在于流媒体服务器和网络中间应用层节点的RTP循环缓冲区处的上下两侧带宽(码率)不匹配。由于互联网中不同子网带宽的异构性以及网络带宽的动态波动,当流媒体服务器或中间节点处的接收线程向RTP循环缓冲区中写入数据的码率大于发送线程向下游节点转发数据的码率时,可能会导致在该节点处随机性的RTP数据包丢失。如图2所示,当开始向下游节点发送第25号RTP包时,当前节点正在接收从上游节点发来的第34号RTP包;如图3所示,当向下游节点发送第25号RTP包结束时,从上游节点接收到的RTP包已经循环一圈后开始接收第44号RTP包,将紧随当前RTP包之后尚未发送的第26号和第27号RTP包覆盖,从而导致这两个RTP包无法正确发送至下游节点。此时如何选择下一个需要发送的分组有两种方案一是直接递增循环缓冲队列的指针并发送新近接收到的第42号RTP分组;二是向后搜索并找到当前尚未被覆盖的最小序号(第28号)RTP分组进行发送。然而无论采用哪种方案,都会导致下游节点接收到的分组序列号不再连续,在方案一中丢失了第26-41号分组,在方案二中丢失了第26号和第27号分组,即出现随机性的RTP数据包丢失。
上述随机性的RTP数据包丢失会给客户端解码器带来严重后果。例如一个I帧或P帧中若干RTP包数据的丢失不仅会使得当前帧解码后的画面中出现马赛克、图像破碎等现象,而且会导致当前GOP(帧组)中后续所有P帧和B帧的解码都出现类似情况,甚至可能导致解码器进程崩溃。为了解决这个问题,需要引入适当的适应性传输控制机制。
常见的针对带宽不匹配问题的适应性传输控制机制主要有联播、转码和可伸缩编码等。然而联播仅适用于服务器而无法用于中间节点,且无法实现任意码率的切换;实时转码的计算复杂度较高,且涉及到对RTP包的重新组包和拆包等,大大增加了应用程序管理的复杂性;可伸缩编码需要采用新的编码技术和标准,无法适用于现有大量存在的非可伸缩性编码标准。

发明内容
针对上述问题,本发明的目的是提供一种网络带宽自适应的流媒体传输选择性丢帧方法,使用本发明方法,实时性好且简单易行,即使在网络带宽不匹配且随时间动态变化的情况下,客户端也能够取得连贯、流畅和完整清晰画面的播放效果。
为实现上述目的,本发明采取以下技术方案一种网络带宽自适应的流媒体传输选择性丢帧方法,其特征在于在流媒体服务器或网络中间应用层节点中发送一个视频序列的每一个GOP之前,根据GOP的播放时间间隔为其计算一个固定的发送时间窗口,每个GOP时间窗口由一个起始点和一个结束点所确定;采用TCP传输协议在一个GOP时间窗口内有选择地仅可靠传输该GOP所包含的部分或全部视频帧数据,其中被选择的视频帧的所有RTP包全部被传输,而未被选择的视频帧RTP包全部被丢弃。
在准备发送当前的GOP的第一个RTP包之前,首先根据上一个GOP的发送情况来预测并初步确定当前GOP的选择性丢帧策略,如果当前时间未超过当前GOP时间窗口的起始点,则设置不丢弃当前GOP中的任一视频帧;如果当前时间超过了当前GOP时间窗口的起始点,且刚刚发送完毕的视频帧是一个I帧,则设置丢弃当前GOP中的所有视频帧,如果当前时间超过了当前GOP时间窗口的起始点且刚刚发送完毕的视频帧不是I帧,则设置丢弃当前GOP中的所有B帧。
当使用TCP协议可靠发送当前GOP中每一个被选择视频帧的所有RTP包完成之后,根据当前时间决定是否对当前GOP的选择性丢帧策略进行调整,如果当前时间未超过当前GOP时间窗口的结束点,则不调整丢帧策略并按原定丢帧策略继续发送下一个视频帧;如果当前时间超过了当前GOP时间窗口的结束点,则设置丢弃当前GOP中后续所有的P帧和B帧,直接转入对下一个GOP中视频帧数据包的发送。
本发明由于采取以上技术方案,因此其与其它解决网络带宽不匹配的流媒体传输适应性控制机制相比,具有以下优点1、本发明所提出的网络带宽自适应选择性丢帧方法复杂度低,实时性好,可以实现任意码率的切换,且不需要改变流媒体服务器和网络中间应用层节点中原有的缓冲区数据结构,简单易行,便于推广使用。2、本发明由于按照GOP的播放时间约束和GOP内各视频帧的优先级进行选择性丢帧,因此能够保证每一个视频帧所包含的所有RTP包要么全部安全送达接收端要么全部被丢弃,且客户端所接收到的每一个视频帧都完整且能够正确解码,而不需要依赖于任何已被选择丢弃的帧。3、本发明可以确保在带宽不匹配的情况下,虽然客户端所观察到的播放帧率可能有所下降,但仍可以连续、流畅地继续播放,且每一帧画面都仍然完整无损。本发明方法适用于MPEG系列和AVS等视频编码标准,可以广泛用于各种互联网流媒体服务器或网络中间应用层节点处的数据传输中。


图1是典型的流媒体系统结构示意2是流媒体服务器或网络中间应用层节点发送和接收RTP包示意3是流媒体服务器或网络中间应用层节点RTP包随机丢失示意4是本发明提供的网络带宽自适应选择性丢帧方法的流程图具体实施方式
下面结合附图和实施例,对本发明进行详细的描述。
本发明方法包括以下内容当上下游网络带宽(码率)不匹配时,发送线程可以有选择地丢弃部分优先级较低的视频帧不发送,从而保证能够利用有限的带宽资源将其它具有较高优先级的视频帧在规定的时间内顺利发送至下游节点。被选择丢弃的数据应该对已发送数据的正确解码不构成任何影响,从而使得客户端在仅接收到部分数据的情况下也能够连续、顺畅地以完整、清晰的画面进行播放,虽然在部分时间段帧率可能会有所下降。
本发明适用于以GOP(帧组)结构编码的视频编码标准,例如MPEG1、MPEG2、MPEG4、H.264和AVS等。在基于GOP结构的视频编码标准中,每个GOP必须以一个I帧开始,其后紧随一系列P帧和B帧。I帧为帧内编码,解码时不需要参考其它任何帧;P帧为前向预测编码,解码时需要参考位于它之前的I帧或P帧;B帧为双向预测编码,解码时需要参考位于它前后两侧的I帧或P帧。对于显示顺序为“IBBPBBP…”形式的GOP,其传输和解码顺序为“IPBBPBB…”。当决定丢弃某个帧时,该GOP中所有直接或间接依赖于该帧的其它帧也都必须被丢弃,否则会导致解码器错误或失败。根据上述丢帧原则和帧间依赖关系,每一个B帧都可以随时丢弃;当丢弃一个P帧时,当前GOP中按解码顺序位于该P帧之后的所有其它P帧和B帧都应该丢弃;当丢弃一个I帧时,当前GOP中的所有其它帧也都应该丢弃。
在一个流媒体传输系统中,媒体数据在网络中的传输码率应尽可能与播放器消耗这些数据的速率相一致。由于在流媒体系统中当客户端启动播放之后每一个视频帧都必须在一个固定的时间点完成播放,因此播放器消耗(播放)一个GOP的时间间隔是可以确定的。为此本发明选择让网络在一个GOP播放时间间隔内完成对该GOP中所有视频帧数据的传输。如果由于带宽限制在规定时间内无法完成所有这些帧的传输,则应选择丢弃部分帧,并在规定期限到达之后跳过当前GOP而直接进入对下一个GOP的传输。
为了保证所有被选择发送的RTP包能够按顺序安全可靠到达接收端,本发明选择采用TCP协议(传输控制协议)来发送这些分组。
本发明所提基于TCP传输协议和GOP时间窗口约束的网络自适应选择性丢帧方法主要根据上一GOP的发送情况来预测当前GOP中的丢帧策略,并在发送当前GOP中的每一帧之后再根据实际网络带宽吞吐量情况对当前GOP的丢帧策略进行适当调整。如图3所示,该选择性丢帧方法的具体实施步骤如下S1.通过带外信号指令或检查相邻两个I帧的时间戳等方式来获取当前视频码流的GOP播放时间间隔值。
S2.以当前时间为基准点,根据GOP播放时间间隔值计算后续各个GOP的发送时间窗口的起始点和结束点。
S3.在准备发送一个GOP的I帧的第一个RTP分组之前,判断当前时间是否已超过该GOP的时间窗口起始点S3.1.如果未超过,则采用TCP协议依次发送该GOP中的所有帧,包括I帧、P帧和B帧的各个RTP包;S3.2.否则进一步判断上一次刚发送完毕的帧是否I帧S3.2.1.如果是,则设置丢弃本GOP中所有帧,包括I帧、P帧和B帧;S3.2.2.否则设置丢弃该GOP中所有B帧,采用TCP协议仅依次发送该GOP中的I帧和后续所有P帧。
S4.在发送当前GOP中每一视频帧的所有RTP包结束之后,判断当前时间是否已经超过该GOP的时间窗口结束点S4.1.如果未超过,则继续按步骤S3中所确定的丢帧策略采用TCP协议依次发送下一个应该发送的视频帧;S4.2.否则丢弃该GOP中后续所有的P帧和B帧,直接进入对下一个GOP的发送。
权利要求
1.一种网络带宽自适应的流媒体传输选择性丢帧方法,其特征在于在流媒体服务器或网络中间应用层节点中发送一个视频序列的每一个GOP之前,根据GOP的播放时间间隔为其计算一个固定的发送时间窗口,每个GOP时间窗口由一个起始点和一个结束点所确定;采用TCP传输协议在一个GOP时间窗口内有选择地仅可靠传输该GOP所包含的部分或全部视频帧数据,其中被选择的视频帧的所有RTP包全部被传输,而未被选择的视频帧RTP包全部被丢弃。
2.如权利要求1所述的网络带宽自适应的流媒体传输选择性丢帧方法,其特征在于在准备发送当前的GOP的第一个RTP包之前,首先根据上一个GOP的发送情况来预测并初步确定当前GOP的选择性丢帧策略,如果当前时间未超过当前GOP时间窗口的起始点,则设置不丢弃当前GOP中的任一视频帧;如果当前时间超过了当前GOP时间窗口的起始点,且刚刚发送完毕的视频帧是一个I帧,则设置丢弃当前GOP中的所有视频帧,如果当前时间超过了当前GOP时间窗口的起始点且刚刚发送完毕的视频帧不是I帧,则设置丢弃当前GOP中的所有B帧。
3.按权利要求1或2所述的网络带宽自适应的流媒体传输选择性丢帧方法,其特征在于当使用TCP协议可靠发送当前GOP中每一个被选择视频帧的所有RTP包完成之后,根据当前时间决定是否对当前GOP的选择性丢帧策略进行调整,如果当前时间未超过当前GOP时间窗口的结束点,则不调整丢帧策略并按原定丢帧策略继续发送下一个视频帧;如果当前时间超过了当前GOP时间窗口的结束点,则设置丢弃当前GOP中后续所有的P帧和B帧,直接转入对下一个GOP中视频帧数据包的发送。
全文摘要
本发明涉及一种网络带宽自适应的流媒体传输选择性丢帧方法,其特征在于在流媒体服务器或网络中间应用层节点中发送一个视频序列的每一个GOP之前,根据GOP的播放时间间隔为其计算一个固定的发送时间窗口,每个GOP时间窗口由一个起始点和一个结束点所确定;采用TCP传输协议在一个GOP时间窗口内有选择地仅可靠传输该GOP所包含的部分或全部视频帧数据,其中被选择的视频帧的所有RTP包全部被传输,而未被选择的视频帧RTP包全部被丢弃。本发明方法复杂度低,实时性好,即使在网络带宽不匹配且随时间动态变化的情况下客户端也能够取得连贯、流畅和完整清晰画面的播放效果。本发明方法适用于MPEG系列和AVS等视频编码标准,可以广泛用于各种互联网流媒体服务器或网络中间应用层节点处的数据传输中。
文档编号H04L29/02GK1946079SQ20061011423
公开日2007年4月11日 申请日期2006年11月2日 优先权日2006年11月2日
发明者霍龙社, 高文 申请人:北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1