流媒体快速流间同步机制的制作方法

文档序号:7873213阅读:200来源:国知局
专利名称:流媒体快速流间同步机制的制作方法
技术领域
本发明属于计算机多媒体同步技术。
背景技术
多媒体同步技术是流媒体技术中一项关键的技术,其目的是向用户展示多媒体信息时,保持多媒体对象内和对象间固有的时域约束关系。多媒体同步包含两类同步一类是流内同步,其主要任务是保证媒体流内部的相对时态关系,也就是按一定的时间要求传送每一个多媒体对象,并在客户端能够进行连续的展现。另一类是流间同步,主要任务是维护媒体对象间的时间关系,如音频和视频之间的时间关系(即唇同步)、音视频与文字之间的时间关系等等。RTP/RTCP协议是流媒体协议栈中一个重要的组成部分,它承担了媒体数据的传送任务,RTSP协议则在流媒体协议栈中负责控制媒体数据的有效传输,RTSP和RTP/RTCP协议是整个流媒体协议栈的核心部分。

发明内容
本发明主要针对IP网络环境,并基于RTP/RTCP协议和RTSP协议,利用RTP时间戳、RTCP包中RTP时间戳和NTP (Network Time Protocol)时间戳的映射关系并结合RTSP 的PLAY方法应答消息中的Range头域和RTPHnfo头域的映射关系,快速地确定媒体流间的同步关系,同时还可以消除各媒体流间的同步依赖关系,使得流间同步的复杂度与媒体流的数目无关。该方案的有如下几个优点1)流媒体客户端在会话开始时便可以建立RTP时间戳与NTP时间戳的对应关系, 从而可以提前媒体对象的回放起始时间。2)具有抗丢包能力。由于媒体间的同步关系的是通过RTSP控制信道来建立的,因此即使在RTP会话中有RTCP SR包的丢失,也不会影响到媒体的第一回放时间。3)当会话中有多条媒体流存在时,各媒体流间的同步无依赖关系,从而使得流间同步的复杂性与媒体流的数目无关。4)由于此方案将RTP时间戳映射到的本地虚拟NTP时间戳的起始值为0,因此, 该虚拟NTP时间戳可直接作为该媒体流的绝对显示时间戳,从而减少了流媒体客户端计算量。
具体实施例方式流媒体客户端在接收到PLAY方法的应答消息后,将RTPHnf0头域中各流的 rtptime参数提取出来,并分别与NTP时间戳格式的0对应,即将各媒体流的第一个包的 RTP时间戳映射到一个虚拟的NTP时间戳0上,在接下来RTP会话过程中,利用收到的第一个RTCP SR包计算出实际的NTP时间戳与NTP时间戳0的差值diff,而且随后的RTCP SR 包的NTP时间戳都需要先减去该diff再与RTP时间戳建立映射关系。也就是说在会话开始时,流媒体客户端首先利用RTP-hfo头域中的rtptime参数建立RTP时间戳与本地虚拟NTP时间戳之间的对应关系,然后利用随后收到的第一个RTCP SR包,建立服务器端实际 NTP时间戳与该虚拟NTP时间戳的映射关系,从而间接地建立起RTP时间戳与服务器端实际NTP时间戳的映射关系,后续的RTCP SR包则用于校准该映射关系,如图2所示,图中给出了两条媒体流的同步过程,多条流的情况与此类似。下面叙述流媒体客户端对媒体流实施各种VCR控制后实现流间同步的详细步骤。1、第一次发送RTSP PLAY请求当流媒体客户端利用RTSP协议的DESCRIBE、SETUP等方法完成会话协商后,会向流媒体服务器发送RTSP PLAY方法请求流媒体服务器开始发送媒体数据,为了实现流间同步,在流媒体客户端接收到该PLAY方法的成功响应(即状态码为^cx)后,应该顺序执行如下操作(1)提取该PLAY响应的RTPHnfo头域中各流的rtptime参数;(2)将各流的rtptime参数值对应到NTP时间戳0上;(3)收到各流的第一个RTCP SR包时计算出实际的NTP时间戳与NTP时间戳0的差值diff ;(4)收到各流的第η (η > 1)个的RTCP SR包时,先该SR包的实际的NTP时间戳减去diff,然后与该SR包的RTP时间戳建立对应关系;如果不考虑流间同步的问题,流媒体客户端在执行完第2步操作后,便可以开始媒体对象的解码和回放,第3步和第4步操作则用于校准RTP时间戳与NTP时间戳的映射关系。2、播放过程中发送携带有Range头域的RTSP PLAY请求在节目播放过程中,如果流媒体客户端请求选时播放,则会向流媒体服务器发送携带有Range头域的RTSP PLAY请求,其中Range头域中携带有请求发送的媒体数据的时间范围,为了实现选时后媒体数据的流间同步,在流媒体客户端接收到该PLAY方法的成功响应后,应该顺序执行如下操作(1)清空RTP会话中各流的socket缓冲区;(2)提取该PLAY响应的RTPHnfo头域中各流的rtptime参数和seq参数;(3)将各流的rtptime参数值对应到NTP时间戳0上;(4)收到各流的第一个RTCP SR包时计算出实际的NTP时间戳与NTP时间戳0的差值diff ;(5)收到各流的第二个以及随后的RTCP SR包时,先该SR包的实际的NTP时间戳减去diff,然后与该SR包的RTP时间戳建立对应关系;其中第1步操作的目的是丢弃在选时播放前流媒体客户端已经接收到但尚未处理的RTP包和RTCP包,第2步操作中所提取的各流的seq参数则用于区分选时前后的RTP 包(因为可能有部分滞留在网络中的选时前的RTP包,在收到该PLAY响应后才到达流媒体客户端)。如果不考虑流间同步的问题,流媒体客户端在执行第3步操作以后,便可以开始媒体对象的解码和回放,第4步和第5步操作的作用同1小节。3、RTSP PAUSE请求后发送无Range头域的RTSP PLAY请求流媒体客户端在发送了暂停请求后,如果希望恢复播放,则会发送一个无Range头域的RTSP PLAY请求,正常情况下,流媒体服务器端会回复一个该PLAY请求的成功响应, 而且其中会携带一个Range头域,用于指示随后的媒体流的播放时间范围。在这种情况下, 为了不影响暂停前媒体客户端已经接收但尚未处理的媒体数据的回放,且实现暂停后媒体数据的同步,应该顺序执行如下操作(1)提取该PLAY响应的RTPHnfo头域中各流的rtptime参数;(2)提取该PLAY响应的Range头域中的NPT起始时间戳,并将其转换为NTP时间戳格式,记为ntp_start ;(3)将各流的rtptime参数值对应到NTP时间戳ntp_start上;(4)收到各流的第一个RTCP SR包时计算出实际的NTP时间戳与NTP时间戳0的差值diff ;(5)收到各流的第二个以及随后的RTCP SR包时,先该SR包的实际的NTP时间戳减去diff,然后与该SR包的RTP时间戳建立对应关系;如果不考虑流间同步的问题,流媒体客户端在执行完第3步操作后,便可以开始媒体数据的解码和回放,第4步和第5步操作的作用同1小节。4、RTSP PAUSE请求后发送携带有Range头域的RTSP PLAY请求流媒体客户端在发送了暂停请求后,如果接下来希望进行选时播放,则需要发送一个携带有Range头域的RTSP PLAY请求,其中Range头域中携带有待播放的时间范围,正常情况下,流媒体服务器端会回复一个该PLAY请求的成功响应,此时,为了实现选时后媒体数据的流间同步,所执行的操作应该与2小节中的完全相同,在此不再赘叙。
权利要求
1.在RTSP流媒体会话开始时,流媒体客户端首先利用RTP-hfo头域中的rtptime参数建立RTP时间戳与本地虚拟NTP时间戳之间的对应关系,然后利用随后收到的第一个 RTCP SR包,建立服务器端实际NTP时间戳与该虚拟NTP时间戳的映射关系,从而间接地建立起RTP时间戳与服务器端实际NTP时间戳的映射关系,后续的RTCP SR包则用于校准该映射关系。
全文摘要
多媒体同步技术是流媒体技术中一项关键的技术,在通常的流媒体客户端设计中,同步信息的建立依赖于典型地承载在UDP协议之上RTCP包,导致媒体对象的第一回放时间具有不可预测性。为了缩短回放前的等待时间,本发明基于RTP/RTCP协议和RTSP协议,提出了一种快速确定媒体流间同步关系的机制。本发明不仅可以简化流媒体客户端进行流间同步的复杂度,而且可以加快媒体对象的第一回放时间,使用户可以尽快地观看到节目的内容,从而提供良好的用户体验。
文档编号H04L29/06GK102202070SQ20101012978
公开日2011年9月28日 申请日期2010年3月23日 优先权日2010年3月23日
发明者冯思雅, 卢日 申请人:冯思雅
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1