一种用于多路实时视频的帧同步方法与流程

文档序号:12011727阅读:2038来源:国知局
一种用于多路实时视频的帧同步方法与流程
本发明涉及视频技术领域,更具体地讲,涉及一种对网络流媒体进行帧同步的方法。

背景技术:
在网络多路视频应用中,往往会遇到播放时有的视频因为网络延时等一些原因播放落后于其它视频,出现多路视频播放不同步的现象。在一些专用视频应用中对多路视频播放的精确同步有较高要求,例如全景视频应用和跨相机跟踪应用等。全景视频应用中,经常在同一时刻需要显示多路视频,这些视频可能属于同一全景相机的不同摄像头,也有可能是属于不同相机。视频在网络传输会因为网络环境不同产生时延,同时各个相机内部时钟可能不一致,从而导致多路视频直接接收播放可能出现不同步的现象,严重影响到用户的观看体验。跨相机跟踪应用中,如果各个相机之间的视频不同步,则会造成跟踪目标出现在多个相机的情况,对跟踪效果有严重影响。目前多路视频同步的方法一般都是按视频帧的时间戳进行同步。本发明前,中国发明专利“多路音视频数据网络传输与同步播放的方法”,申请号为200510017131.1,公开号为CN1933594,该专利公开了一种多路视频网络传输后同步播放的方法,该方法在服务器端对视频帧标记时间戳进行网络传输并在客户端利用时间戳进行同步播放。这种方法固定了时间戳的记时单位,但无法根据需要调整同步精度。同时,在实时视频服务中,时间戳不能只以服务器时间为标准,需要综合考虑相机采集时间与服务器时间来标记时间戳。中国发明专利“多路视频同步传输方法、装置及系统”,申请号201010159842.3,公开号为CN102238421A,该专利公开了一种多路视频网络传输后同步播放的方法,该方法对视频帧添加水印,同一时段内获取的多路视频中的多帧图像暣添加的水印相同,客户端进行播放时多路视频水印相同的一起播放,达到同步播放的效果。这种方法由于将水印嵌入图像中,修改了图像原本的信息,同时对于已编码的视频流,水印添加需要对图像解码后添加再编码,处理时间较长。同样此方法在做实时视频服务时,没有考虑到采集设备到服务器之间的传输时延。针对上述方法的不足,本发明提出了一种服务器和客户端相互配合的多路视频同步方法,可以有效地解决由服务器与客户端之间由网络延迟、各相机内部时间不同、相机与服务器之间的传输延时等因素引起的同步问题,并可以配置相关参数达到适应不同同步精度的要求,无需修改图像信息达到多路视频精确同步的目的。

技术实现要素:
本发明的目的是:提供了一种用于多路实时视频的帧同步方法,使多路视频在客户端进行播放时各路视频时间同步,解决因网络传输时延和不同相机时钟不一致所引起的多路视频播放不同步的情况,提高用户的观看体验。本发明的技术解决方案:根据相机时间与服务器时间,调节相机与服务器之间的时间偏移量,以此对相机视频帧的时间戳进行校准,根据服务器配置的基准帧率确定的时间轴区间与校准后的时间戳计算出一个与时间和基准帧率相关的序号做为同步信息添加至视频帧中进行传输,客户端使用这个序号判断多路视频中各帧是否是同一时刻的帧。并且本方法还引入了超时忽略播放机制、缓冲机制和追赶机制等来提高多路视频同步的精确性。服务器提取出从相机得到的原始视频流中的视频帧以及对应的时间戳,根据相机时间与服务器时间的时间偏移量对视频流进行时间校准。服务器配置一个基准帧率用于对时间轴进行区间分割,区间长度为基准帧率的倒数。服务器根据校准后的时间计算出帧同步序号作为该帧的同步信息添加到视频帧中,帧同步序号为该帧校准后的时间戳的分、秒以及在一秒之中所在的区间号计算得出。同步信息携带于视频帧中长度固定,根据具体的视频编码方式携带方式有所不同。客户端在收到来自服务器的视频流之后,首先提取视频流中帧所附带的长度固定的同步信息,并对帧数据进行解码。客户端会为每一路视频建立一个缓冲队列,解码后的视频帧会被放入该队列。客户端维护一个定时器,定时器每隔一段时间间隔会检查缓冲队列。若缓冲队列的第一帧的帧同步序号为当前应该播放的序号,则出队播放;若缓冲队列的第一帧的帧同步序号比当前应该播放的序号小,则丢弃该帧与之后所有帧同步序号小于当前应该播放序号的帧;若队列为空则暂时忽略该队列;若队列被忽略,则检查是否恢复正常;若半数以上队列视频流长度小于一定阈值,则等待一段时间后继续;若半数以上队列视频流长度大于一定阈值,则在之后一段时间每个定时器周期执行两次检查。附图说明图1为本多路视频同步方法的总体示意图;图2为服务器端对视频流的帧添加同步信息的流程图;图3为帧时间戳与帧同步序号对应示意图。具体实施方法下面结合附图并以H.264编码的视频流为例对本发明作进一步详细的描述,在介绍本发明的具体实施方法之前,首先对一些基本概念进行说明:(1)相机时间:相机内部系统的时间,各个相机内部时间可能不一致;(2)服务器时间:流媒体服务器的时间,以该时间为标准进行帧同步;(3)基准帧率:在服务器运行前配置;此帧率应该大于任何相机的帧率;此帧率越大,同步精度越高;此帧率用于对时间轴进行区间分割,每个区间对应该一个编号;(4)帧同步序号:根据服务器时间对每帧生成的序号,该序号为该帧落在时间轴上由基准帧率分割而成的区间的编号;该序号作为同步信息添加到NAL单元中,用于客户端进行同步处理;(5)原始视频流:来自相机的未添加帧同步序号的视频流;(6)缓冲队列:客户端对视频流解码后的帧放入缓冲队列中等待播放;(7)缓冲时间:客户端设置一个缓冲时间,该时间初始为缓冲队列中队头与队尾帧的间隔时间;在播放时,尽量保证缓冲队列队头与队尾间隔时间长度等于缓冲时间;(8)参考播放序号:客户端开放播放后,维护一个参考播放序号,用于同步播放控制;参考序号决定了当前应该播放的视频帧的帧同步序号;(9)循环标志:帧同步序号和参考播放序号包含一个循环标志;帧同步序号或参考播放序号之间可直接比较当且仅当循环标志相同;(10)忽略、播放状态:当视频处于忽略状态时,不播放该视频直到视频恢复播放状态。本发明的总体示意图如图1所示,服务器对来自多个相机的原始视频流添加同步信息;客户端接收来自服务器的多路视频流,并从中提取同步信息,根据同步信息与缓冲队列通过定时器进行同步播放。服务器对视频流的帧添加同步信息的流程如图2所示,由于服务器与相机之间存在传输时延,所以首先调节相机与服务器之间的时间偏移量,该时间偏移量应该考虑相机与服务器之间的时延和相机时间系统与现实时间的误差两个方面。服务器从相机获得原始视频流,其中每一帧数据包括视频帧的图像数据与该帧的时间戳,通过时间偏移量对该时间戳进行校准。设在T时刻,视频帧时间戳为tc,服务器时间为ts,时间偏移量为Δt,那么:tc=ts+Δt通过Δt可以对来自相机的帧的时间戳进行校准,从而得到在服务器的时间系统下该帧以及后续帧的采集时间。服务器需要在每一个相机接入并开始工作前配置时间偏移量。在得到时间偏移量之后,服务器对每一帧视频数据根据时间偏移量计算出该帧校准后的时间戳,并通过校准后的时间戳计算帧同步序号作为该帧的同步信息。帧同步序号的计算方法如下:(1)配置基准帧率。基准帧率应该大于所有相机的帧率,才能保证使用基准帧率对时间轴进行区间分割时,同一路视频连续两帧不会出现在同一时间区间中。为了方便编号,基准帧率应能整除1000。(2)利用基准帧率计算得到一个基准时间区间。设基准帧率为F,则基准时间区间δ等于1000/F。对时间轴进行区间分割,区间长度等于δ,并对区间进行递增编号。如图3所示,若视频流stream3的某帧的校准后的时间戳落在第26635号区间里,那么这个26635即为该帧的帧同步序号。根据时间戳的分、秒以及在一秒内的第几个区间来计算帧同步序号,这样就保证了帧同步序号有限且在一小时内不重复出现。帧同步序号的具体计算公式如下:其中SN为帧同步序号;tm表示时间戳的分钟值;t′s表示时间戳的秒钟值;δ为区间长度;floor(x)表示对x向下取整,即返回小于或等于x的最大整数;tms表示时间戳的毫秒值。由该公式可以保证计算得到的帧同步序号在一个小时之内不会重复出现。在基准帧率为25时,通过公式可以得出帧同步序号的最大值为143984,用一个四字节的整型数据保存即可。帧同步序号作为同步信息被添加至NAL单元的尾部。客户端部分示意图如图1的客户端部分所示,客户端为每一路视频建立一个缓冲队列。首先对从服务器来的视频流中提取出同步信息,再进行解码,解码后得到的图像数据每一帧与该帧的同步信息一一对应放入缓冲队列中。若缓冲队列满,则新到达的帧被抛弃。缓冲队列会在初始时会等待队列中视频流长度为缓冲时间(缺省为2秒)之后才开始进行下面的步骤。客户端由一个参考播放序号来驱动同步播放工作。参考播放序号的初始值为某一路视频第一帧的帧同步序号。参考播放序号按基准帧率确定的时间间隔进行递增。具体实现时使用一个定时器来对参考播放序号进行递增。定时器除了递增参考播放序号外,每次执行会检查各路视频的缓冲队列并取帧,可能出现如下几种情况:(1)若缓冲队列的第一帧的序号与参考播放序号相同则从缓冲队列中取出该帧并等待播放;(2)若缓冲队列的第一帧的帧同步序号小于参考播放序号,则丢弃该帧以及其后所有帧同步序号小于参考播放序号的帧;(3)若半数以上缓冲队列中的视频流长度小于缓冲时间的一半,则等待半个缓冲时间后继续;(4)若一路视频的缓冲队列连续一定次数(缺省为3次)为空,则将该路视频的状态置为忽略;(5)若一路视频的状态为忽略,检查该路视频的缓冲队列是否为空;若队列不为空,检查队头帧的帧同步序号,若大于等于参考播放序号则将该路视频的状态置为正常,若小于参考播放序号则丢弃该帧及队列中其它小于参考播放序号的帧,直到缓冲队列的第一帧的帧同步序号大于等于参考播放序号则将该路视频的状态置为播放,或直到队列为空则该路视频状态为忽略;(6)若半数以上缓冲队列中的视频流长度大于一定阈值ta(缺省为4秒),设tb为缓冲时间,则在接下来的(ta-tb)/δ个定时器周期中每次参考播放序号递增两个并且按上述(1)和(2)步骤检查两次队列;此时不进行上述(3)、(4)和(5)三个步骤。本发明中未详细阐述的部分属于本领域技术人员的公知技术。最后所应说明的是,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明在服务器对视频帧进行帧同步序号编号,并在客户端对视频按帧同步序号进行同步播放的前提下,还可以做出若干改进或等同替换,这些改进和等同替换也应视为本发明的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1