CN102665141B - 一种基于rtp封装的avs音视频预同步方法 - Google Patents
一种基于rtp封装的avs音视频预同步方法 Download PDFInfo
- Publication number
- CN102665141B CN102665141B CN201210151664.9A CN201210151664A CN102665141B CN 102665141 B CN102665141 B CN 102665141B CN 201210151664 A CN201210151664 A CN 201210151664A CN 102665141 B CN102665141 B CN 102665141B
- Authority
- CN
- China
- Prior art keywords
- rtp
- bag
- video
- audio
- media
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明提供一种基于RTP封装的AVS音视频预同步方法。主要过程如下:音视频缓冲区接收RTP音视频包;根据RTP音视频包的序列号判断包的迟到性并做相应处理;利用RTP音视频包包头字段携带的时间戳、数据类型、帧数量等信息计算出该包所表示的绝对回放时间区间;根据绝对回放时间区间建立RTP音视频包的映射;根据RTP音视频包的映射关系确定出RTP音视频的失步情况;根据不同的失步情况做出相应的调整。本发明可有效改善AVS媒体间的失步情况,同时,实现了AVS媒体内的快速同步,达到了总体的音视频同步效果。
Description
技术领域
本发明涉及流媒体同步领域,尤其涉及到RTP封装传输的AVS音视频媒体同步领域。
背景技术
AVS(Audio Video coding Standard,音视频编码标准)是数字音视频编解码技术标准工作组制定的数字音视频编码标准。AVS标准包括系统、视频、音频、数字版权管理、移动视频等9个部分。AVS多媒体通信系统多在不保证QoS(Quality of Service,服务质量)的分组交换网络上进行实时多媒体数据的传输,它们的用户都希望有很好的服务质量保证,但由于网络的不可靠性和传输时延等因素,实时数据通信过程中经常会遇到诸如分组丢失、乱序、抖动、重复等一系列问题。为了能在网络中有效地传输实时数据,IETF(Internet Engineering Task Force,Internet工程任务组)开发了RTP(Real-time Transport Protocol,实时传输协议)。RTP为交互式音频、视频等具有实时特性的数据提供端到端的传送服务,包括两个关系密切的协议RTP和RTCP(Real-time Transport Control Protocol,实时传输控制协议)。
RTP是用于Internet上针对多媒体数据流的一种传输协议,但RTP本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。RTCP和RTP一起提供流量控制和拥塞控制服务。服务器利用RTCP信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网上的实时数据。
为了解决AVS音视频在网络传输中时延抖动产生的同步问题,通常采用的方法是在接收端添加抖动缓冲区。但是无论添加的是接收RTP包的缓冲区,解码缓冲区,图像显示缓冲区,还是最近提出的双缓冲区,虽然都能在一定程度上降低时延抖动,但多是单一性地通过改变缓冲区大小来消除媒体内的时延抖动,然后在图像显示缓冲区,根据音视频回放时间是否一致进行丢帧或重复显示一帧图像,但实际的同步效果并不理想。所以本发明提出了一种更为有效的方法来解决由于时延抖动所产生的同步问题,不再单纯依赖于调整缓冲区的大小来实现媒体的同步回放。该方法是在解RTP包之前进行一次预同步,从而保证了整体的音视频同步。
发明内容
本发明提供了一种基于RTP封装的AVS音视频预同步方法。用于在AVS系统本身进行音视频同步之前进行一次预同步,通过建立RTP音视频包基于绝对回放时间区间的映射,迅速确定出音视频的媒体间和媒体内的失步情况,并做出相应调整,从而达到音视频同步效果。
本发明的目的在于对经过RTP封装发送的AVS音视频进行同步。由此,本发明针对AVS系统和RTP包,RTCP包的特点,在AVS系统对音视频进行精确同步前,充分利用RTP包包头字段的时间戳、数据类型、帧数量和RTCP包包头的时间戳信息对音视频进行一次预同步,保证达到总体的音视频同步效果。
需要说明的是,AVS的音频和视频都是经RTP封装发送的,对应地分别封装成RTP音频包和RTP视频包,文中不具体指出是哪种包时,我们说成RTP音视频包或RTP包。接收RTP音频包的缓冲区叫做音频缓冲区,接收RTP视频包的缓冲区叫做视频缓冲区,文中不具体指出哪种缓冲区时,我们说成音视频缓冲区或缓冲区。音频缓冲区的RTP音频包相对于某一个RTP视频包形成的映射块叫做音频映射块,视频缓冲区的RTP视频包相对于某一个RTP音频包形成的映射块叫做视频映射块,文中不具体指出是哪种映射块时,我们统一说成映射块。还需指出的是映射块就是由一个或多个RTP包和一个缺失序列号标记(若映射块没有缺失包,则不做缺失序列号标记)组成。文中要处理的是音频媒体和视频媒体,在没有具体指出哪种媒体时,统一用媒体表示。SR包是一种RTCP包。本发明需要RTP打包时在包头字段扩展一字节,用于标识该RTP包封装的帧数量(视频帧用帧头代表帧数量)。如不特别指出,文中出现的符号单位都是毫秒。
一种基于RTP封装的AVS音视频预同步方法,其包括以下步骤:
步骤1.接收RTP音视频包:
启动接收RTP音视频包的线程,打开音频缓冲区,设其初始值大小为Am;打开视频缓冲区,设其初始值大小为Vm,准备接收新来的RTP音频包和RTP视频包;
步骤2.分析包迟到性并处理:
启动解析RTP包包头字段信息的线程,解析出RTP音频包或RTP视频包的序列号,将该RTP包的序列号与侦听端口的表中的序列号按从小到大的顺序逐一比较,若该序列号与表中的序列号都不相同且小于表中最小的,则说明该包是迟到且不能实现同步的包,直接将该包丢弃,不再进入缓冲区排队;若该序列号与表中的序列号都不相同且大于表中最小的,则说明该包是没有迟到的包,该包进入缓冲区,解析包头字段信息,准备形成新的映射块;若与表中序列号相同,则说明该包是迟到但还可能实现同步的RTP包,该包进入缓冲区,准备快速确定在队列中的位置;
对迟到但还可能实现同步的RTP包,首先找到含有缺失序列号标记的映射块,然后将该包的序列号与该映射块缺失标记出的序列号进行比较,若相同,则说明该包属于该映射块,即确定位置;若都不相同,则与下一个含有缺失序列号标记的映射块缺失标记出的序列号进行比较,直到确定位置;
步骤3.计算绝对回放时间区间:
(1)解析出RTP音频包或RTP视频包的RTP时间戳,并获取SR(Sender Report,发送者报告)包的RTP时间戳和NTP(Network TimeProtocol,网络时间协议)时间戳,计算出该RTP包所表示的绝对回放起始时间;
(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中所述的方法,进行媒体内快速同步。
作为本发明的进一步改进,步骤3中的(1)中,计算RTP包绝对回放起始时间To的公式是To=Ts+1000(to-ts)/K,其中Ts是SR包中的64位NTP时间戳,ts是SR包中的32位RTP时间戳,to是该RTP包的32位时间戳,K是音频或视频帧的采样频率。
作为本发明的进一步改进,步骤3中的(2)中,所述的插值方法是对于音频,已知帧的采样频率K和帧的数量m,利用公式Ta=m/K,得出区间长度,其中Ta为音频绝对回放时间区间长度,对于视频,若该RTP包只封装了完整的视频帧,则按照计算音频帧的方法计算出Tv,Tv为视频绝对回放时间区间长度;若只封装了一个视频帧的宏块或条带且不包含帧头,则该时间区间Tv=0;同理,若封装了视频帧帧头,则每个帧头表示为一个完整视频帧的时间,其计算Tv的公式也与计算音频帧的公式相同,帧数量m就是视频帧帧头数,K仍为视频帧的采样率。
作为本发明的进一步改进,步骤3中的(3)中,计算RTP音频包绝对回放结束时间的方法是利用公式Tae=to+Ta,其中Tae表示该RTP音频包的绝对回放结束时间,to表示该RTP音频包的绝对回放起始时间,Ta表示该RTP音频包的绝对回放时间区间长度。
作为本发明的进一步改进,计算RTP视频包绝对回放结束时间的方法是利用公式Tve=to+Tv,其中Tve表示该RTP视频包的绝对回放结束时间,to表示该RTP视频包的绝对回放起始时间,Tv表示该RTP视频包的绝对回放时间区间长度;则RTP音频包的绝对回放时间区间[To,Tae],RTP视频包的绝对回放时间区间[To,Tve]。
作为本发明的进一步改进,其中等待时间t,由以下两种情况确定:若没有迟到的媒体持续接收新来的RTP包,且经过时间t1达到该缓冲区的上限H时,整体性RTP包迟到的媒体仍未完成媒体块映射同步,则此时t=t1;若没有迟到的媒体尚未达到缓冲区上限H时,整体性RTP包迟到的媒体经过时间t2已经完成媒体块映射同步,则此时t=t2;媒体块映射同步,是指进入该缓冲区的每个RTP包,都能找到对应的另一媒体映射,但并不保证每个映射块都没有个别RTP包的缺失。
作为本发明的进一步改进,在缓冲区中,主要包括侦听端口和映射块两个模块,这两个模块协同工作的机制如下:侦听端口模块主要包含一张迟到但还可能实现同步的RTP包的包序列号的表,这些序列号在表中按照从小到大的顺序存放;每当接收一个新的RTP包,就将该包的序列号与表中的序列号按从小到大的顺序逐一比较,若该序列号与表中的序列号都不相同且小于表中最小的,则说明该包是迟到且不能实现同步的包,直接将该包丢弃,不再进入缓冲区排队;若该序列号与表中的序列号都不相同且大于表中最小的,则说明该包是没有迟到的包,则该包进入缓冲区,解析包头字段信息,准备形成新的映射块;若该序列号与表中某个序列号相同,则说明该包是迟到但还可能实现同步的RTP包,该包进入缓冲区。
作为本发明的进一步改进,迟到但还可能实现同步的RTP包快速确定在队列中的位置的方法如下:首先找到含有缺失序列号标记的映射块,然后将该包的序列号与该映射块缺失标记出的序列号进行比较,若相同,则说明该包属于该映射块,即确定位置;若都不相同,则与下一个含有有缺失序列号标记的映射块缺失标记出的序列号进行比较,直到确定位置。
作为本发明的进一步改进,该表由两种情况进行实时更新:一是每当形成一个新的映射块,该映射块就检测是否块内或相邻块间有缺失的RTP包序列号,同时查询是否其相邻映射块已经做出缺失序列号标记;若没有,将该序列号添加到缺失序列号标记中,同时将该序列号发送到侦听端口模块的表中进行更新,即在表中增加一个该缺失包序列号;若有,则不做缺失序列号标记,也不向侦听端口模块的表发送该缺失序列号;二是每当一个映射块要进行解RTP包时,且该映射块仍有缺失序列号标记,则将该缺失标记的序列号发送到侦听端口的表中进行更新,即删除表中与该缺失序列号相同的序列号。
本发明的有益效果是:RTP音视频包经过预同步处理之后,消除了由于在网络传输中产生的媒体内抖动和媒体间的时延差。换言之,在解RTP包时音视频媒体已经完成了初步的同步,保证了后续的AVS系统对音视频解码后进行精确同步回放。
该发明方法最显著的特点是充分利用RTP音视频包包头字段携带的时间戳信息和在发送端进行RTP打包时标识在RTP包头字段上的数据类型、帧数量等信息,预先进行一次较为完整有效的同步处理,保证了后续的AVS系统进行精确的音视频同步回放。该方法能够对媒体内失步,媒体间失步,以及混合失步做出有效调整,以达到AVS音视频总体的同步效果,同时,由于采取动态申请缓冲区的方法,避免了内存资源的浪费。
附图说明
图1接收RTP音视频包的音视频缓冲区结构图示;
图2RTP音视频包建立关于时间的映射图示;
图3RTP音视频包出现媒体内失步图示;
图4RTP音视频包出现媒体间失步图示;
图5RTP音视频包出现混合失步图示;
图6RTP音视频包有效同步后的图示;
图7RTP音视频包预同步的流程图示。
具体实施方式
下面结合附图说明及具体实施方式对本发明进一步说明。
具体实施方式如下:
1.接收RTP音视频包:
启动接收RTP音视频包的线程,打开音频缓冲区,设其初始值大小为Am;打开视频缓冲区,设其初始值大小为Vm,准备接收新来的RTP音频包和RTP视频包。图1中的A1,A2,---,An是RTP音频包的序列号,V1,V2,---,Vm是RTP视频包的序列号,且所代表的实际序列号并不一定是连续的。除图1之外,其他图中都没有画出音频侦听端口,视频侦听端口和缺失标记,但实际都是有的,只是为了后续的清楚说明,没有画出来。
2.分析包迟到性并处理:
启动解析出RTP包包头字段信息的线程,解析出RTP音频包或RTP视频包的序列号,将该RTP包的序列号与侦听端口的表中的序列号按从小到大的顺序逐一比较。若该序列号与表中的序列号都不相同且小于表中最小的,则说明该包是迟到且不能实现同步的包,直接将该包丢弃,不再进入缓冲区排队;若该序列号与表中的序列号都不相同且大于表中最小的(一般大于最大的),则说明该包是没有迟到的包,该包进入缓冲区,解析包头字段信息,准备形成新的映射块;若与表中序列号相同,则说明该包是迟到但还可能实现同步的RTP包,该包进入缓冲区,准备快速确定在队列中的位置。其中音视频缓冲区结构如图1所示。
对迟到但还可能实现同步的RTP包,首先找到含有缺失序列号标记的映射块,然后将该包的序列号与该映射块缺失标记出的序列号进行比较,若相同,则说明该包属于该映射块,即确定位置;若都不相同,则与下一个含有缺失序列号标记的映射块缺失标记出的序列号进行比较,直到确定位置。由此,实现了音频媒体内的快速同步。
3.计算绝对回放时间区间:
继续解析线程并启动计算线程。
(1)解析出RTP音频包或RTP视频包的RTP时间戳,并获取任一SR包的RTP时间戳和NTP时间戳。计算出该RTP包所表示的绝对回放起始时间,其中计算RTP包绝对回放起始时间To的公式是To=Ts+1000(to-ts)/K,其中Ts是SR包中的64位NTP时间戳,ts是SR包中的32位RTP时间戳,to是该RTP包的32位时间戳,K是音频或视频帧的采样频率。
(2)解析RTP音频包或RTP视频包所携带的数据类型,即音频帧或视频帧,若是音频帧,则该RTP包中全为完整音频帧,解析出其帧数量;若是视频帧,则该RTP包不一定全为完整视频帧,解析出其帧头数量;并据此利用插值方法得出所对应的绝对回放时间区间长度;并据此利用插值方法得出所对应的绝对回放时间区间长度,这里的插值方法是,对于音频,已知帧的采样频率K和帧的数量m,利用公式Ta=m/K得出区间长度,其中Ta为音频绝对回放时间区间长度。对于视频,若该RTP包只封装了完整的视频帧,则按照计算音频帧的方法计算出Tv,Tv为视频绝对回放时间区间长度;若只封装了一个视频帧的宏块或条带且不包含帧头,则该时间区间Tv=0;同理,若封装了视频帧帧头,则每个帧头表示为一个完整视频帧的时间,其计算Tv的公式也与计算音频帧的公式相同,帧数量m就是视频帧帧头数,K仍为视频帧的采样率。
(3)根据步骤(1)和(2),计算出RTP音频包或RTP视频包所表示的绝对回放时间区间[x,y],x是绝对回放起始时间,y是绝对回放结束时间。
计算RTP音频包绝对回放结束时间的方法是利用公式Tae=to+Ta,其中Tae表示该RTP音频包的绝对回放结束时间,to表示该RTP音频包的绝对回放起始时间,Ta表示该RTP音频包的绝对回放时间区间长度。
计算RTP视频包绝对回放结束时间的方法是利用公式Tve=to+Tv,其中Tve表示该RTP视频包的绝对回放结束时间,to表示该RTP视频包的绝对回放起始时间,Tv表示该RTP视频包的绝对回放时间区间长度。以RTP音频包为例,设一个音频包装有150个音频帧,帧速率8K,即采样间隔时间1/8ms,我们可以算出区间长度18.75ms。对装有完整帧的RTP视频包做同样处理,对于装有条带或宏块的包,我们通过判断RTP装有帧头的数量来计算区间长度。
据此,RTP音频包的绝对回放时间区间[To,Tae],RTP视频包的绝对回放时间区间[To,Tve]。
4.建立RTP音视频包映射:
启动映射线程,因为音频和视频在同一个绝对时间轴上回放,把绝对时间轴做为桥梁,建立起该RTP包的一个媒体相对另一媒体的映射,同时该RTP包形成一个新的映射块或加入一个已存在的映射块,RTP包建立起映射,并形成映射块如图2所示。
5.判断媒体失步情况:
启动判断失步的线程,根据已经建立的RTP音频包和RTP视频包关于绝对回放时间的的映射,开始检测RTP音频包和RTP视频包的失步情况并做出相应的调整,对所有的失步情况分析,将失步分为三种情况,第一种情况是其中一种媒体相对另一媒体出现整体性RTP包迟到(这些RTP包叫做RTP包群),例如媒体出现连续3个及以上RTP包序列号缺失,我们就可以判为第一种情况失步,如图3所示;第二种情况是在某个媒体内出现个别RTP包来迟,例如媒体出现连续2个及以下的RTP包迟到时我们就可以判断为第二种情况失步,如图4所示;第三种情况是第一种和第二种同时发生的情况,例如媒体同时出现连续3个及以上RTP包迟到和连续2个及以下RTP迟到时我们可以判为第三种情况失步,如图5所示。
6.处理不同失步情况:
启动同步线程。
对第一种失步情况,即媒体间失步,处理步骤如下:将没有迟到的媒体整体延迟时间t再解RTP包。同时,该媒体缓冲区仍然接收新来的RTP包,对新来的RTP包做上述步骤2的判断处理,只要该包不是迟到且不能同步的RTP包,就开始向内存提交请求以增大该缓冲区容量来容纳更多RTP包。整体性RTP包迟到的媒体则在时间t内等待迟到的RTP包群到来,同时向发送端发送反馈信息,通知发送端降低该媒体发包频率。
对第二种失步情况,即媒体内失步,处理步骤如下:该媒体缓冲区内RTP包的不做整体延时处理,也不向发送端发送反馈信息,其侦听端口一旦侦听到来迟但还可能实现同步的包,立即按照步骤2中所述的方法,进行媒体内快速同步。
对第三种混合情况,即混合失步,首先将没有迟到的媒体延迟时间t再解RTP包。同时,该媒体缓冲区仍然接收新来的RTP包,对新来的RTP包做上述步骤2的判断处理,只要该包不是迟到且不能同步的RTP包,就开始向内存提交请求以增大该缓冲区容量来容纳更多RTP包。整体性RTP包迟到的媒体则在时间t内等待迟到的RTP包群,并且向发送端发送反馈信息,通知发送端降低该媒体发包频率。同时,其侦听端口一旦侦听到个别来迟但还可能实现同步的包,立即按照步骤2中所述的方法,进行媒体内快速同步。
针对以上三种情况做出同步后处理后如图6所示。
其中等待时间t,由以下两种情况确定:若没有迟到的媒体持续接收新来的RTP包,且经过时间t1达到该缓冲区的上限H时,整体性RTP包迟到的媒体仍未完成媒体块映射同步,则此时t=t1;若没有迟到的媒体尚未达到缓冲区上限H时,整体性RTP包迟到的媒体经过时间t2已经完成媒体块映射同步,则此时t=t2。媒体块映射同步,是指进入该缓冲区的每个RTP包,都能找到对应的另一媒体映射,但并不保证每个映射块都没有个别RTP包的缺失(点对点的映射是一种特殊情况,很少出现)。
RTP音视频包经过预同步处理之后,消除了由于在网络传输中产生的媒体内抖动和媒体间的时延差,换言之,在解RTP包时音视频媒体已经完成了初步的同步,保证了后续的AVS系统解码后进行精确同步回放。
以上操作过程,随着新的RTP包到来时刻进行处理,从而迅速处理可能的不同情况的失步。
在音频缓冲区中,主要包括音频侦听端口和音频映射块两个模块。这两个模块协同工作的机制如下:
音频侦听端口模块主要包含一张迟到但还可能实现同步的RTP音频包的包序列号的表,这些序列号在表中按照从小到大的顺序存放。每当接收一个新的RTP音频包,就将该包的序列号与表中的序列号按从小到大的顺序逐一比较。若该序列号与表中的序列号都不相同且小于表中最小的,则说明该包是迟到且不能实现同步的包,直接将该包丢弃,不再进入缓冲区排队;若该序列号与表中的序列号都不相同且大于表中最小的(一般大于最大的),则说明该包是没有迟到的包,则该包进入缓冲区,解析包头字段信息,准备形成新的音频映射块;若该序列号与表中某个序列号相同,则说明该包是迟到但还可能实现同步的RTP音频包,该包进入缓冲区,准备快速确定在队列中的位置。
迟到但还可能实现同步的RTP音频包快速确定在队列中的位置的方法:首先找到含有缺失序列号标记的映射块,然后将该包的序列号与该映射块缺失标记出的序列号进行比较,若相同,则说明该包属于该映射块,即确定位置;若都不相同,则与下一个含有有缺失序列号标记的映射块缺失标记出的序列号进行比较,直到确定位置。由此,实现了音频媒体内的快速同步。
该表由两种情况进行实时更新:一是每当形成一个新的音频映射块,该映射块就检测是否块内或相邻块间有缺失的RTP音频包序列号,同时查询是否其相邻映射块已经做出缺失序列号标记;若没有,将该序列号添加到缺失序列号标记中,同时将该序列号发送到音频侦听端口模块的表中进行更新,即在表中增加一个该缺失包序列号;若有,则不做缺失序列号标记,也不向侦听端口模块的表发送该缺失序列号。二是每当一个音频映射块要进行解RTP音频包时,且该映射块仍有缺失序列号标记,则将该缺失标记的序列号发送到音频侦听端口的表中进行更新,即删除表中与该缺失序列号相同的序列号。由此完成表的更新。
与此对应,在视频缓区也有相应的两个模块,如图1所示,并与音频有相同的工作机制。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (9)
1.一种基于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中所述的方法,进行媒体内快速同步。
2.根据权利要求1所述的一种基于RTP封装的AVS音视频预同步方法,其特征在于:步骤3中的(1)中,计算RTP包绝对回放起始时间To的公式是To=Ts+1000(to-ts)/K,其中Ts是SR包中的64位NTP时间戳,ts是SR包中的32位RTP时间戳,to是该RTP包的32位时间戳,K是音频或视频帧的采样频率。
3.根据权利要求1所述的一种基于RTP封装的AVS音视频预同步方法,其特征在于:步骤3中的(2)中,所述的插值方法是,对于音频,已知帧的采样频率K和帧的数量m,利用公式Ta=m/K,得出区间长度,其中Ta为音频绝对回放时间区间长度,对于视频,若该RTP包只封装了完整的视频帧,则按照计算音频帧的方法计算出Tv,Tv为视频绝对回放时间区间长度;若只封装了一个视频帧的宏块或条带且不包含帧头,则该时间区间Tv=0;同理,若封装了视频帧帧头,则每个帧头表示为一个完整视频帧的时间,其计算Tv的公式也与计算音频帧的公式相同,帧数量m就是视频帧帧头数,K仍为视频帧的采样率。
4.根据权利要求1所述的一种基于RTP封装的AVS音视频预同步方法,其特征在于:步骤3中的(3)中,计算RTP音频包绝对回放结束时间的方法是利用公式Tae=To+Ta,其中Tae表示该RTP音频包的绝对回放结束时间,To表示该RTP音频包的绝对回放起始时间,Ta表示该RTP音频包的绝对回放时间区间长度。
5.根据权利要求4所述的一种基于RTP封装的AVS音视频预同步方法,其特征在于:计算RTP视频包绝对回放结束时间的方法是利用公式Tve=To+Tv,其中Tve表示该RTP视频包的绝对回放结束时间,To表示该RTP视频包的绝对回放起始时间,Tv表示该RTP视频包的绝对回放时间区间长度;则RTP音频包的绝对回放时间区间[To,Tae],RTP视频包的绝对回放时间区间[To,Tve]。
6.根据权利要求1所述的一种基于RTP封装的AVS音视频预同步方法,其特征在于:其中等待时间t,由以下两种情况确定:若没有迟到的媒体持续接收新来的RTP包,且经过时间t1达到该缓冲区的上限H时,整体性RTP包迟到的媒体仍未完成媒体块映射同步,则此时t=t1;若没有迟到的媒体尚未达到缓冲区上限H时,整体性RTP包迟到的媒体经过时间t2已经完成媒体块映射同步,则此时t=t2;媒体块映射同步,是指进入该缓冲区的每个RTP包,都能找到对应的另一媒体映射,但并不保证每个映射块都没有个别RTP包的缺失。
7.根据权利要求1所述的一种基于RTP封装的AVS音视频预同步方法,其特征在于:在缓冲区中,主要包括侦听端口和映射块两个模块,这两个模块协同工作的机制如下:侦听端口模块主要包含一张迟到但还可能实现同步的RTP包的包序列号的表,这些序列号在表中按照从小到大的顺序存放;每当接收一个新的RTP包,就将该包的序列号与表中的序列号按从小到大的顺序逐一比较,若该序列号与表中的序列号都不相同且小于表中最小的,则说明该包是迟到且不能实现同步的包,直接将该包丢弃,不再进入缓冲区排队;若该序列号与表中的序列号都不相同且大于表中最小的,则说明该包是没有迟到的包,则该包进入缓冲区,解析包头字段信息,准备形成新的映射块;若该序列号与表中某个序列号相同,则说明该包是迟到但还可能实现同步的RTP包,该包进入缓冲区。
8.根据权利要求7所述的一种基于RTP封装的AVS音视频预同步方法,其特征在于:迟到但还可能实现同步的RTP包快速确定在队列中的位置的方法:首先找到含有缺失序列号标记的映射块,然后将该包的序列号与该映射块缺失标记出的序列号进行比较,若相同,则说明该包属于该映射块,即确定位置;若都不相同,则与下一个含有有缺失序列号标记的映射块缺失标记出的序列号进行比较,直到确定位置。
9.根据权利要求8所述的一种基于RTP封装的AVS音视频预同步方法,其特征在于:该表由两种情况进行实时更新:一是每当形成一个新的映射块,该映射块就检测是否块内或相邻块间有缺失的RTP包序列号,同时查询是否其相邻映射块已经做出缺失序列号标记;若没有,将该序列号添加到缺失序列号标记中,同时将该序列号发送到侦听端口模块的表中进行更新,即在表中增加一个该缺失包序列号;若有,则不做缺失序列号标记,也不向侦听端口模块的表发送该缺失序列号;二是每当一个映射块要进行解RTP包时,且该映射块仍有缺失序列号标记,则将该缺失标记的序列号发送到侦听端口的表中进行更新,即删除表中与该缺失序列号相同的序列号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210151664.9A CN102665141B (zh) | 2012-05-16 | 2012-05-16 | 一种基于rtp封装的avs音视频预同步方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210151664.9A CN102665141B (zh) | 2012-05-16 | 2012-05-16 | 一种基于rtp封装的avs音视频预同步方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102665141A CN102665141A (zh) | 2012-09-12 |
CN102665141B true CN102665141B (zh) | 2014-04-09 |
Family
ID=46774531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210151664.9A Active CN102665141B (zh) | 2012-05-16 | 2012-05-16 | 一种基于rtp封装的avs音视频预同步方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102665141B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103945371B (zh) * | 2013-01-17 | 2018-07-06 | 中国普天信息产业股份有限公司 | 一种端到端加密同步的方法 |
JP2015023575A (ja) * | 2013-07-19 | 2015-02-02 | パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America | 送信方法、受信方法、送信装置及び受信装置 |
CN103414957A (zh) * | 2013-07-30 | 2013-11-27 | 广东工业大学 | 一种音视频数据同步的方法和装置 |
CN103561260A (zh) * | 2013-10-31 | 2014-02-05 | 北京邮电大学 | 一种基于rtsp的网络侧音视频流间失步测量方法及装置 |
CN103607664B (zh) * | 2013-11-22 | 2016-09-14 | 天津市北海通信技术有限公司 | 一种嵌入式多媒体播放系统的音视频同步方法 |
CN103826084A (zh) * | 2014-02-17 | 2014-05-28 | 宁波公众信息产业有限公司 | 一种音频编码方法 |
CN106598884B (zh) * | 2016-11-21 | 2019-06-14 | 黄安祥 | 一种多级仿真平台桥接的时频差补偿方法 |
CN109565466B (zh) * | 2017-03-23 | 2020-11-06 | 华为技术有限公司 | 多设备间唇音同步方法及设备 |
CN108200481B (zh) * | 2017-12-07 | 2020-12-15 | 北京佳讯飞鸿电气股份有限公司 | 一种rtp-ps流处理方法、装置、设备及存储介质 |
CN110225385B (zh) * | 2019-06-19 | 2021-09-10 | 鼎桥通信技术有限公司 | 一种音视频同步调整方法和装置 |
CN110446113A (zh) * | 2019-07-23 | 2019-11-12 | 广州易方信息科技股份有限公司 | 回放ppt与视频流的方法 |
CN112564837B (zh) * | 2019-09-25 | 2022-05-06 | 杭州海康威视数字技术股份有限公司 | 多路数据流同步方法及多路数据流同步的逐级传输系统 |
CN113207021B (zh) * | 2021-04-01 | 2023-04-18 | 深圳康佳电子科技有限公司 | 一种音视频同步方法、装置、终端设备及存储介质 |
CN113115080A (zh) * | 2021-04-08 | 2021-07-13 | 刘文平 | 移动媒体间实时视频音频高精度同步平台 |
CN113099310A (zh) * | 2021-04-08 | 2021-07-09 | 李蕊男 | 基于安卓平台的实时媒体内视音频协调法 |
CN113225598B (zh) * | 2021-05-07 | 2023-01-20 | 上海一谈网络科技有限公司 | 移动端音视频同步的方法、装置、设备及存储介质 |
CN115460454A (zh) * | 2021-06-08 | 2022-12-09 | 腾讯科技(北京)有限公司 | 传输数据的解复用方法、装置、存储介质和电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101272383A (zh) * | 2008-05-08 | 2008-09-24 | 中兴通讯股份有限公司 | 一种实时音频数据传输方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7221660B1 (en) * | 2000-08-08 | 2007-05-22 | E.F. Johnson Company | System and method for multicast communications using real time transport protocol (RTP) |
JP5086285B2 (ja) * | 2009-01-22 | 2012-11-28 | 株式会社日立製作所 | 映像配信システム,映像配信装置,及び同期補正処理装置 |
-
2012
- 2012-05-16 CN CN201210151664.9A patent/CN102665141B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101272383A (zh) * | 2008-05-08 | 2008-09-24 | 中兴通讯股份有限公司 | 一种实时音频数据传输方法 |
Non-Patent Citations (4)
Title |
---|
任时珍等.基于RTP/RTCP协议的实时数据传输与同步控制策略.《计算机工程与应用》.2003,全文. |
基于AVS的嵌入式音视频同步传输系统设计;郭尧;《中国优秀硕士学位沦为全文数据库 信息科技辑》;20090915;全文 * |
基于RTP/RTCP协议的实时数据传输与同步控制策略;任时珍等;《计算机工程与应用》;20031031;全文 * |
郭尧.基于AVS的嵌入式音视频同步传输系统设计.《中国优秀硕士学位沦为全文数据库 信息科技辑》.2009,全文. |
Also Published As
Publication number | Publication date |
---|---|
CN102665141A (zh) | 2012-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102665141B (zh) | 一种基于rtp封装的avs音视频预同步方法 | |
CN100568971C (zh) | 一种mpeg-4的传输码流到互联网流媒体联盟流的实时转换方法 | |
CN105376613B (zh) | 一种快速频道切换方法、服务器及iptv系统 | |
US7869420B2 (en) | Method and system for in-band signaling of multiple media streams | |
CN101873482B (zh) | 实时流媒体集群转码系统 | |
US9621682B2 (en) | Reduced latency media distribution system | |
US20150181003A1 (en) | Method and apparatus for transmitting and receiving packets in hybrid transmission service of mmt | |
CN102742249A (zh) | 用于媒体流同步的方法、系统和装置 | |
BRPI0706826A2 (pt) | método de controle de buffer, aparelho relé e sistema de comunicação | |
JP2010512688A5 (zh) | ||
CN101371488A (zh) | 一种不同媒体流间的同步方法及系统 | |
CN103414957A (zh) | 一种音视频数据同步的方法和装置 | |
MXPA04007663A (es) | Senalizacion con estado temporal para una difusion digital de banda ancha. | |
CN113115080A (zh) | 移动媒体间实时视频音频高精度同步平台 | |
AU2005259240B2 (en) | Method for transmitting packets in a transmission system | |
RU2634206C2 (ru) | Устройство и способ коммутации медиапотоков в режиме реального времени | |
CN101674486A (zh) | 一种流媒体音视频同步方法及系统 | |
KR100916505B1 (ko) | 정상 재생 타임을 이용한 스케일러블 비디오 코딩 정보와어드밴스드 오디오 코딩 정보의 동기화 지원 방법 및 장치 | |
CN106790044B (zh) | Ts码流转换为rtp码流的方法和装置 | |
WO2015117355A1 (zh) | 一种实现终端多媒体广播的方法及装置 | |
CN1972453A (zh) | 一种移动多媒体广播系统的数据流封装方法 | |
CN101123611B (zh) | 一种流媒体数据的发送方法 | |
US20120084453A1 (en) | Adjusting audio and video synchronization of 3g tdm streams | |
CN101193290A (zh) | 一种mpeg-4的传输码流到互联网流媒体联盟流的实时转换系统 | |
Seo et al. | A new timing model design for MPEG Media Transport (MMT) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |