发明名称 一种基于RTP封装的AVS音视频预同步方法
摘要 本发明提供一种基于RTP封装的AVS音视频预同步方法。主要过程如下:音视频缓冲区接收RTP音视频包;根据RTP音视频包的序列号判断包的迟到性并做相应处理;利用RTP音视频包包头字段携带的时间戳、数据类型、帧数量等信息计算出该包所表示的绝对回放时间区间;根据绝对回放时间区间建立RTP音视频包的映射;根据RTP音视频包的映射关系确定出RTP音视频的失步情况;根据不同的失步情况做出相应的调整。本发明可有效改善AVS媒体间的失步情况,同时,实现了AVS媒体内的快速同步,达到了总体的音视频同步效果。
申请公布号 CN102665141B 申请公布日期 2014.04.09
申请号 CN201210151664.9 申请日期 2012.05.16
申请人 哈尔滨工业大学深圳研究生院 发明人 张钦宇;吴伟强;王磊;张常键
分类号 H04N21/6437(2011.01)I;H04N21/8547(2011.01)I 主分类号 H04N21/6437(2011.01)I
代理机构 深圳市科吉华烽知识产权事务所(普通合伙) 44248 代理人 胡吉科;邓扬
主权项 一种基于RTP封装的AVS音视频预同步方法,其特征在于:其包括以下步骤:步骤1.接收RTP音视频包:启动接收RTP音视频包的线程,打开音频缓冲区,设其初始值大小为Am;打开视频缓冲区,设其初始值大小为Vm,准备接收新来的RTP音频包和RTP视频包;步骤2.分析包迟到性并处理:启动解析RTP包包头字段信息的线程,解析出RTP音频包或RTP视频包的序列号,将该RTP包的序列号与侦听端口的表中的序列号按从小到大的顺序逐一比较,若该序列号与表中的序列号都不相同且小于表中最小的,则说明该包是迟到且不能实现同步的包,直接将该包丢弃,不再进入缓冲区排队;若该序列号与表中的序列号都不相同且大于表中最小的,则说明该包是没有迟到的包,该包进入缓冲区,解析包头字段信息,准备形成新的映射块;若与表中序列号相同,则说明该包是迟到但还可能实现同步的RTP包,该包进入缓冲区,准备快速确定在队列中的位置;对迟到但还可能实现同步的RTP包,首先找到含有缺失序列号标记的映射块,然后将该包的序列号与该映射块缺失标记出的序列号进行比较,若相同,则说明该包属于该映射块,即确定位置;若都不相同,则与下一个含有缺失序列号标记的映射块缺失标记出的序列号进行比较,直到确定位置;步骤3.计算绝对回放时间区间:(1)解析出RTP音频包或RTP视频包的RTP时间戳,并获取SR包的RTP时间戳和NTP时间戳,计算出该RTP包所表示的绝对回放起始时间;SR:Sender Report,发送者报告,NTP:Network Time Protocol,网络时间协议;(2)解析RTP音频包或RTP视频包所携带的数据类型,即音频帧或视频帧,若是音频帧,则该RTP包中全为完整音频帧,解析出其帧数量;若是视频帧,则该RTP包不一定全为完整视频帧,解析出其帧头数量;并据此利用插值方法得出所对应的绝对回放时间区间长度;(3)根据步骤(1)和(2),计算出RTP音频包或RTP视频包所表示的绝对回放时间区间[x,y],x是绝对回放起始时间,y是绝对回放结束时间;步骤4.建立RTP音视频包映射:启动映射线程,因为音频和视频在同一个绝对时间轴上回放,把绝对时间轴做为桥梁,建立起该RTP包的一个媒体相对另一媒体的映射,同时该RTP包形成一个新的映射块或加入一个已存在的映射块,建立起RTP包映射;步骤5.判断媒体失步情况:启动判断失步的线程,根据已经建立的RTP音频包和RTP视频包关于绝对回放时间的的映射,开始检测RTP音频包和RTP视频包的失步情况并做出相应的调整;对所有的失步情况分析,将失步分为三种情况:第一种情况是其中一种媒体相对另一媒体出现整体性RTP包迟到,第二种情况是在某个媒体内出现个别RTP包来迟,第三种情况是第一种和第二种同时发生的情况;步骤6.处理不同失步情况:对第一种失步情况,即媒体间失步,处理步骤如下:将没有迟到的媒体整体延迟时间t再解RTP包;同时,该媒体缓冲区仍然接收新来的RTP包,对新来的RTP包做上述步骤2的判断处理,只要该包不是迟到且不能同步的RTP包,就开始向内存提交请求以增大该缓冲区容量来容纳更多RTP包;整体性RTP包迟到的媒体则在时间t内等待迟到的RTP包群到来,同时向发送端发送反馈信息,通知发送端降低该媒体发包频率;对第二种失步情况,即媒体内失步,处理步骤如下:该媒体缓冲区内RTP包不做整体延时处理,也不向发送端发送反馈信息,其侦听端口一旦侦听到来迟但还可能实现同步的包,立即按照步骤2中所述的方法,进行媒体内快速同步;对第三种混合情况,即混合失步,首先将没有迟到的媒体延迟时间t再解RTP包;同时,该媒体缓冲区仍然接收新来的RTP包,对新来的RTP包做上述步骤2的判断处理,只要该包不是迟到且不能同步的RTP包,就开始向内存提交请求以增大该缓冲区容量来容纳更多RTP包;整体性RTP包迟到的媒体则在时间t内等待迟到的RTP包群,并且向发送端发送反馈信息,通知发送端降低该媒体发包频率;同时,其侦听端口一旦侦听到个别来迟但还可能实现同步的包,立即按照步骤2中所述的方法,进行媒体内快速同步。
地址 518000 广东省深圳市南山区西丽镇深圳大学城哈工大校区