移动媒体间实时视频音频高精度同步平台

著录项
  • CN202110379906.9
  • 20210408
  • CN113115080A
  • 20210713
  • 刘文平
  • 刘文平;王程
  • H04N21/242
  • H04N21/242 H04N21/43 H04N21/6437 H04N21/8547

  • 浙江省台州市三门县广场路14号
  • 浙江(33)
摘要
本发明指出现有技术的视频音频发包策略中,并没有对视频音频包的同步发送进行有效的控制,采用根据视频音频包间的对应关系来同步发送媒体包,在发送端达到了视频音频媒体间的同步,通过分析在接收端利用RTCP包提供的时间戳对进行视频音频的同步,以及基于音频时间戳同步控制播放的传统方法中时间戳同步技术的特点及不足,针对安卓设备性能的局限性,采用间隔对比时间戳的方式,分别在视频音频帧时间戳对比的时间和次数上进行改进,本发明提出的安卓实时视频音频同步策略,极大的改善了用户体验,有利于推动移动终端上实时视频音频同步的发展,对于移动端实时视频音频的发展有着重大的实际意义和应用价值。
权利要求

1.移动媒体间实时视频音频高精度同步平台,其特征在于,采用间隔对比时间戳的方式,分别在视频音频帧时间戳对比的时间和次数上进行改进,采用在发送端使视频音频包同步发送,到达接收端的数据包进行解包、组帧、解码后传入所设置的二级缓存区,视频音频帧在二级缓冲区内每收到一个RTCP包,就根据时间戳对到相同时间戳的视频音频帧,进行完全同步,其后按照视频音频原有的采样速率顺序播放,针对时间戳对比次数过多的弊端,采用间隔一定帧数的音频帧进行一次同步检测,如果时间戳差值在同步范围内,则继续正常播放,否则分别基于视频超前音频或滞后音频,进行快速定位比对时间戳,使之达到同步允许的范围,然后同步播放;

针对视频音频时间戳的对比和丢包解决视频音频媒体间的同步问题,为避免在播放后续的视频帧时,视频帧的丢包导致重复播放上一个视频帧的次数过多,接收端在检测到视频帧有连续丢掉3帧,即连续丢包数量n>12的现象时,通过RR包反馈给发送端,发送端再来调整发送速率,从根本上改善后续视频帧连续丢包现象;

针对如果视频帧的丢包率较小,很可能因为新视频帧的到达也符合同步范围,而播放下一个的视频帧的弊端,本发明根据RTCP包,使第一个音频帧与相同时间戳的视频帧同步播放后,音频和视频均按各自的采样频率正常播放,在间隔播放几帧音频后,视频帧再与音频帧的时间戳进行对比,调整同步;

针对如果视频帧的丢包率较大,那么视频帧为了达到同步,与音频帧时间戳的对比次数会明显增多的弊端,本发明分别对视频音频间丢包的情况采取不同的改进:

第一,视频存在丢包时,会发生视频超前于音频的现象,本发明采用跳过前半段的比对,直接从后半段开始依次比较,计算出失步状况下视频音频在NTP时间轴上相隔多少个视频帧,直接跳到同步可能性大的音频帧去进行比较,减少对比的时间次数;

第二,音频存在丢包时,会发生视频滞后于音频的现象,本发明通过计算出视频滞后于音频的帧数,再直接跳过相应的视频滞后帧数,达到同步。

2.根据权利要求1所述的移动媒体间实时视频音频高精度同步平台,其特征在于,视频音频包同步发送方法:为了使同一时刻采集的视频音频数据能够同步发送,本发明给同一时刻采集的视频音频数据帧打上相应的时间戳,同时将这个时刻视频音频的时间戳和NTP时间戳信息分别封装到RTCP包里,在发送时对应视频音频包的时间戳信息来同步发送,间隔发送RTCP包,一帧的媒体数据包有一个时间戳,视频数据在分片分包的情况下,多个分片包有相同的一个时间戳,采用AMR压缩方式的音频,采样频率为8000Hz,帧率是每帧20毫秒,那么时间戳增量为:8000*0.02=160;采用H264压缩方式的视频,采用频率为90000Hz,在帧率为10fps,即100毫秒一帧的情况下,时间戳增量为:90000*0.1=9000,帧率为20fps和25fps时,时间戳增量分别为4500和3600,同一时间所采集的视频音频帧的时间戳对应关系为音频是20ms一帧,视频帧率分别是10fps、20fps、25fps时的对应关系;

根据音频帧和视频帧对应的时间关系,得出在视频码率选择为10fps时,1个视频帧对应5个音频帧;码率为20fps时,2个视频帧对应5个音频帧;码率为25fps时,1个视频帧对应2个音频帧,而发送端会分别为视频音频包设置一定的缓存用于数据包的发送,在最开始发送视频音频数据包时,在发送端的缓存区中参照这个对应关系进行发送,保证视频音频包在发送端的媒体间同步,使前期网络状况好的情况下,以较小的开销使音频媒体间在接收端达到同步。

3.根据权利要求1所述的移动媒体间实时视频音频高精度同步平台,其特征在于,基于时间戳的视频音频同步:引入时间戳机制,在播放时还原视频音频流之间的同步关系,本发明已经在发送端把同一时间采集的视频音频包打上了时间戳信息,在接收端设置跟一级缓冲区一样结构的二级缓冲区,在二级缓冲区内通过对比视频音频之间的时间戳差值关系,控制视频音频流的播放速率,达到媒体间同步的效果;

实现根据视频音频时间戳达到同步,首先通过RTCP包提供的时间戳对还原时间轴,把接收端处的视频音频RTP包内的时间戳均映射到同一个NTP时间轴上,在发送端曾根据视频音频间的映射关系,将视频音频包同步发送出去,第一个音频帧和第一个视频帧不论时间戳的初始值是多少,它们都应该是对应到同一个时间点上,随后根据它们帧间的关系,控制视频音频帧的同步发送,需要RTCP协议中的SR包协助映射视频音频间的时间关系,发送端在采集到视频音频数据后给打上RTP时间戳的同时,也会将相同的RTP时间戳写入SR包中,并将当前的绝对时间通过计算形成NTP时间戳,NTP时间戳和RTP时间戳形成一个时间戳对,时间戳对通过SR包发送给接收端后,发送端发送的数据包和SR包都使用同一个绝对时钟,接收端根据SR包中的把视频音频帧正确的映射到NTP时间轴上。

4.根据权利要求1所述的移动媒体间实时视频音频高精度同步平台,其特征在于,安卓时间戳视频音频同步改进方法,同步允许范围THR为80ms,进行对比视频帧的帧率为10fps时的情况为:在根据RTCP包使第一个音频帧与相同时间戳的视频帧同步播放后,视频帧率为10pfs,5个音频帧对应1个视频帧,在音频帧每播放5个之后,检查视频音频同步状况,如果不在同步范围则进行同步调整,在没有丢包时,视频帧只需与音频帧时间戳对比一次,比改进前的5次对比次数要少。

5.根据权利要求1所述的移动媒体间实时视频音频高精度同步平台,其特征在于,在音频帧基本不存在丢包,视频偶尔丢弃1个帧时,在上一次同步播放后,音频帧播放完5帧进行同步检查,18000时间戳的视频帧丢失,时间戳为27000的视频帧和1600的音频帧一起检测同步,但它们在NTP时间轴上的差值为100ms,不在同步范围内,需要进行同步调整,根据改进方法,首先计算出差值100ms相当于间隔了1帧的视频帧,那么就在1600的音频帧比较完之后,再跟1760的音频帧进行比较,刚好在同步范围内,则进行播放,这种方式要优于改进前的10次对比次数。

6.根据权利要求1所述的移动媒体间实时视频音频高精度同步平台,其特征在于,在音频帧基本不存在丢包,视频连续丢弃2个帧时,在上一次同步播放后,同步检测时,时间戳为18000和27000的视频帧丢失,时间戳为36000的视频帧和1600的音频帧进行比较,它们在NTP时间轴上的差值为200ms,超出了同步范围,200ms相当于2帧的视频帧,10帧的音频帧,依据改进方法,进行视频音频时间戳的比较时,直接跳过前5帧的音频帧,从第6帧的音频帧开始与36000的视频帧进行比较,直到它们之间差值在同步范围内,将会同步播放,这里2560的音频帧与36000的视频帧刚好进行同步播放,只进行了一次对比,在收到下一个RTCP包时,根据视频音频相等的时间戳,调整到完全同步,而如果音频帧之前有丢包,那么视频音频时间戳间的对比次数也不会超过9次,比改进前的15次还是次数要少。

7.根据权利要求1所述的移动媒体间实时视频音频高精度同步平台,其特征在于,在音频帧基本不存在丢包,视频连续丢弃n个帧的情况下,改进后的对比次数要比改进前的对比次数少很多,在n越大的时候,对比次数的差距越明显,由于改进后的方法,在视频丢包发生时,当前的视频帧要先与丢失视频帧相对应的音频帧进行比较,跳过丢失视频帧对应的音频帧,直接与当前视频帧所对应的音频帧比较,节省大量的对比时间,这种方式的对比次数,基本不受连续丢包个数的影响,也不会因为视频帧率的不同,使视频音频间帧个数的对应关系严重影响到时间戳对比次数;

改进后在音频帧基本不存在丢包,视频会连续丢n个帧的现实情况中,当n=0时,接收端只需进行一次时间戳对比来保持同步;当n≠0时,接收端最少进行二次,最多进行九次的对比,就能达到同步,并且RTCP包所提供的,间隔的调整视频音频帧的完全同步。

8.根据权利要求1所述的移动媒体间实时视频音频高精度同步平台,其特征在于,根据时间戳具体的实时视频音频高精度同步方法为:

假设音频帧率是20毫秒一帧,视频帧率为mfps,视频音频帧的同步允许范围THR为80ms,超过同步允许范围则要进行同步调整,而视频音频帧间时间戳差值的对比,均为参照NTP时间轴映射后的值来进行对比;

在接收端开始播放前,保证二级缓存里有一定预存量的音频帧能够连续的进行播放,但二级缓存的量不能太多以至于影响播放的实时性,网络时延抖动均为200ms,而播放N帧的时间大于网络时延抖动的时间,就能对音频帧连贯的播放,音频每帧的播放时间为20毫秒,采取缓存到10帧的音频帧就准备输出播放,此时,视频帧也在二级缓存里等待播放,首先,等待第一个RTCP包到达接收端,根据准备输出的第一个音频帧的时间戳,在视频的二级缓存里到相同时间戳的视频帧同时播放,然后,每播放50/m个音频帧,就通过比对音频帧的时间戳NTPA和视频帧的时间戳NTPV来调整同步,具体的比对以及同步调整为:

第一,如果|NTPA-NTPV|≤80ms,在视频音频帧同步允许的范围内,则不需要同步处理,继续进行播放;

第二,如果|NTPA-NTPV|>80ms,说明视频音频帧的播放处于临界同步甚至可能是失步的状态,则需要进行同步处理。

9.根据权利要求8所述的移动媒体间实时视频音频高精度同步平台,其特征在于,视频音频帧的时间戳差值存在两种情况,先分别判断后再根据不同情况来进行同步处理,记|NTPA-NTPV|=R:

第一,若NTPA<NTPV,表明视频超前于音频,此时,重复播放上一个视频帧,将超前的视频帧挂起等待,直到音频帧播放到与等待视频帧的时间戳达到同步范围,再播放视频帧,为快速到与之对应的音频帧,直接从第个音频帧开始对比,至多对比50/m次就能同步播放;

第二,若NTPA>NTPV,表明视频滞后于音频,需要跳过R*m/1000个视频帧,使视频音频帧的播放再次达到同步,在视频音频流播放期间,为保证音频播放的连贯性,采取对视频播放速率的控制,但接收端每收到一个RTCP包,就根据新获取的时间戳对调整音频帧和视频帧在NTP时间轴上的时间关系,维护NTP时间轴的基准。

说明书
技术领域

本发明涉及一种实时视频音频高精度同步平台,特别涉及一种移动媒体间实时视频音频高精度同步平台,属于实时视频音频同步技术领域。

伴随网络通信技术的快速发展,移动终端特别是智能手机大量普及,单一的文字图片的交流方式已不能满足需求,视频音频多媒体通信方式已融入人们的生活,它使得面对面的交流不再受地域的限制,同时也提高了工作效率,极大的降低了成本,已经与人们的日常生活密不可分,如在视频教学、视频会议、视频监控、游戏视频、协同工作等领域。随着移动设备的普及,高速数字网络的大面积建设,人们已经可以更加便捷简单的接入互联网,随时随地的利用手机等移动设备进行交流,而无线通信技术日益成熟,视频音频压缩编码也极大的降低了对网络带宽的需求,这些都极大的推动了移动多媒体视频音频通信的发展。

人们对视频音频通信质量的要求也随之越来越高,尤其是无线移动场景下对实时视频音频质量的要求,对于移动视频音频媒体数据流,除了要求传输的实时性,更要求播放时的视频音频质量高、各个媒体流的同步性好,延时和延时抖动小。但多年以来,对于实时视频音频同步的研发和应用还集中在专业的视频设备和PC端,而传统的视频音频传输及同步一般是在固定设备和场合下进行,有着视频设备成本高、移动不方便、限制多的弊端。而随着移动网络技术的发展和智能手机的普及,移动端的视频音频同步正好有着便携性、成本低等特点。

在复杂的无线网络环境下,多媒体数据的丢包现象又可能是因为无线丢包或拥塞丢包所造成的,不能完全采取原来PC端上发送视频音频丢包情况时,统一通过改变发送速率来对流量和拥塞进行控制。现有技术对RTP/RTCP的视频音频同步策略主要是通过在接收端对已经丢包的现象,视频帧采取重复或丢弃的方式,使之恢复媒体间的同步,但在视频帧严重滞后的时,还是不能达到同步效果。后来又提出了一种安卓视频会议播放器,采用SIP视频协议标准,但在网络不稳定的情况下,音频播放正常,视频并不能实现同步。

播放终端用户都希望尽可能的看到高质量的多媒体流,但由于复杂的网络传输环境,发送端并不能完全保证数据顺序准确、无误的交付给接收端,网络拓扑结构不同或无线环境信号不稳定等原因都会造成时延或时延抖动,导致媒体流在接收端播放时因丢包、掉帧、延时等原因而播放不平滑,乃至视频音频流不同步,影响视频音频同步的因素包括:

一是发送端处理数据偏差,发送端在采样完视频音频流后,进行编码打包,但由于音频和视频的采样频率和数据量不同,压缩编码的算法复杂度也不同,造成在发送时产生了时间差,引起了不同步,现有技术的解决办法主要是严格控制发送端上视频音频帧的发送,同一时刻采集的视频音频帧同时打上相同的时间戳,并且同时发送具有相同时间戳的视频音频帧,在网络条件好的情况下,能够对接收端的同步起到作用,但在时延抖动严重时,单纯依靠该方法难以起到较好的同步;

二是时延和时延抖动,时延是从发送端到接收端,数据单元所经历的时间长度,由于传输网络环境不稳定,导致时延的不恒定,产生了时延抖动,时延抖动反映了时延的变化程度,在发生网络拥塞时,单个媒体流可能并不能以连续流的形式在网络中传输,这将导致各个媒体单元之间到达接收端的时间间隔不均等,同时媒体流间原本的时间关联可能也被打乱颠倒,造成不同步;

三是时钟漂移,由于给视频音频数据包打上时间戳、播放等都是根据各自系统时钟控制,如果系统没有统一的全局时钟,各自的时钟频率会因长时间没有校准而产生偏移,如果发送端和接收端的时钟频率不一样,会导致接收端的缓冲区发生溢出,造成因数据丢失而引起的播放不连续,同步质量不好;

四是数据包的丢失,在网络质量不好的环境下,使用UDP协议传输的数据包丢失情况较严重,而在无线网络的环境下传输,视频音频数据包很可能因为无线干扰等问题不能按时到达接收端,或直接丢失,这些都会导致接收端不能及时解码而造成视音频不同步。

五是播放端处理数据的偏差,接收端在接收到视频音频包后,对其进行解码和播放时,由于音频和视频包的数据量和解码的算法复杂度不同,导致即使是在良好网络环境下同时到达的视频音频帧,也会使播放时的同步产生偏差。

媒体流间同步是不同的媒体流在经过网络传输后,依旧保证其间的原本时间关联,从感知上表现为在视频音频的同步点上同时播放,即通过传输的视频音频必须保持声音和口型的同步播放。现有技术媒体流间同步技术主要有以下几种。

一是时间戳同步法,通过给同一时刻采集的多个不同媒体流打上相同时间戳,接收端根据对比时间戳标记,同时播放相同时间戳的多个媒体流。由于发送端和接收端的时钟频率不同,为使视频音频流通过投影到统一时间轴而调节同步播放;。

二是基于RTP/RTCP协议的同步方法,封装成RTP的媒体数据多采用UDP的方式来传输实时多媒体流,因此主要是依靠RTP包里提供序列号,时间戳,同步源以及编解码等信息来同步。采用基于RTP/RTCP协议的优点是能通过对不同的网络服务质量来动态的调整,提高同步性,且实时性好,时延也较低,也适用于有多个发送端和多个接收端的多对多情况,但要考虑参与传输的各终端发送RTCP包的时间间隔。

三是多路复用同步法,多路复用的主要方式是将由发送端同一时刻所采集到的多个媒体流,用一个信道进行传输,在接收端出正确的分离出各个媒体流数据。这种方法控制简单,不需要额外同步控制信息和全网同步时钟,以较小的系统开销达到同步效果,也提高了信道的利用率,缺点是不能对已经多路复用的单个流数据再进行操作处理,并且音频流和视频流数据量不同,对信道带宽的要求也不一样,分配同一信道会造成带宽不够或带宽浪费,在评定多媒体流的质量时,也难以确定以哪个多媒体为标准;

四是同步信道法,需要在各媒体流传输数据包的通道外,额外添加一条信道用来传输同步控制信息,优点是不用改变原有的传输模式,与现有协议兼容性好,也不需要全网同步时钟,但由于额外开辟信道增加了系统开销,在有多个发送端的情况下,每个源头都要增加一个信道控制同步,控制同步也更加复杂,并且传输同步控制信息的信道必须有较高优先级和实时性,在网络不好时,如果同步控制信息丢失或比数据单元晚到接收端,将不能控制同步;

五是同步标记方法,利用在给同时采集的各个媒体数据单元打上同步标记,不同数据单元经过不同的链路到达到接收端后,根据数据单元的同步标记恢复它们媒体间的时间关系,这种方法不用额外的同步信道开销,没有改变单个媒体流的传输过程,但因改变了媒体单元的固定格式后通用性不好,并且也不能用在多个发送端的情况下;

六是音频嵌入视频同步机制,将同时采集到的音频流信息,通过DCT嵌入视频流里,再同时把混合后的视频音频信息一起压缩打包,在接收端再从混合流中分离出音频流信息,通过重构来恢复同步。这种方法的优点是同步性高,受网络环境的干扰小,也没有增加额外的视频音频流传输数据量,缺点是音频嵌入视频增大了算法的复杂度,分离重构视频音频流也加大了系统开销和端到端的时延,对终端设备要求高,也改变了单个媒体流单元结构和传输过程,移植性不好,不适用于有多个发送端的情况,也不能对单个媒体流处理。

现有技术缺少移动媒体间实时视频音频高精度同步平台,现有技术的难点和本发明解决的问题主要集中在以下方面:

第一,人们对视频音频通信质量的要求越来越高,尤其是无线移动场景下对实时视频音频质量的要求,对于移动视频音频媒体数据流,除了要求传输的实时性,更要求播放时的视频音频质量高、各个媒体流的同步性好,延时和延时抖动小,但多年以来,对于实时视频音频同步的研发和应用还集中在专业的视频设备和PC端,而现有技术的视频音频传输及同步一般是在固定设备和场合下进行,有着视频设备成本高、移动不方便、限制多的弊端,随着移动网络技术的发展和智能手机的普及,移动端的视频音频同步正好有着便携性、成本低等特点,当前亟需一种移动媒体间实时视频音频高精度同步平台;

第二,无线网络环境下实时视频音频通信过程中,影响到实时视频音频播放质量的重要因素主要是数据包的传输质量与视频音频的同步效果,而安卓平台与原有PC端上的视频音频同步不同的是,它还要面临安卓设备的性能局限性、无线网络环境下的干扰丢包、带宽不足不稳定等问题。一方面,由于移动智能手机和移动网络的局限性,导致相比于专业的视频设备和PC端,移动手机有着处理能力相对低、内存小等限制,以及移动网络有限且不稳定性的特点,都将会严重的影响视频音频流的传输和解码效率,引起视频音频不同步。另一方面,传统的视频音频同步方面的研发存在明显短板,由于传输协议和平台的不同,均存在移植性不好、同步效果不理想的问题,而对安卓设备上实时视频音频同步的研发还主要停留在移动端的视频播放器和媒体传输框架上,在安卓移动端上的实时视频音频同步还很少;

第三,媒体流之间可能因为发送端的发送不同步、视频音频的传输数据量不同、网络环境等原因导致视频音频媒体间并未达到同步要求,在实时播放时并不能做到唇音同步,现有技术对实时媒体间的视频音频同步处理并没有涉及到对发送端媒体间的发包进行控制,而在网络环境良好的情况下,如果采用同步发送视频音频包的方式,接收端只用消耗较小的代价就能达到视频音频同步效果,基于音频时间戳同步控制播放的传统方法在接收端上,将音频流作为主流,按照采样频率顺序播放,然后每到达一个视频帧,就依次与正在播放的音频帧时间戳来对比,如果两者之间的时间戳差达到同步定义的标准内,则进行播放;如果不在,则将视频帧丢弃或挂起等待,再进行下一轮的时间戳对比,直至同步播放,这种每到达一个视频帧就进行对比的方式,会造成对比次数过多,系统消耗较大,影响视频音频的同步效果;

第四,现有技术对实时媒体间的同步处理并没有涉及到对发送端媒体间的发包进行控制,随着不断发送视频音频数据包,发送媒体包数据量增大,网络环境和服务质量逐渐变差,产生了网络拥塞,导致媒体数据包的丢包率逐渐上升,由于通常不针对丢包严重时,对发送速率进行调整,达到缓解网络拥塞,减少视频包的丢包措施,随着实时视频音频播放时间的推移,网络负载数据量的逐步增大,视频丢包情况比刚开始传输时更加严重,视频音频帧的时间戳对比次数会越来越多,同步效果也会越来越差,甚至不能保证单个视频媒体流内的同步;

第五,现有技术基于音频时间戳同步控制播放的传统方法在网络环境良好、几乎不存在视频音频丢包的情况下,视频音频帧间能通过较少的对比次数,达到同步播放范围;在网络环境较差时,对视频帧丢包率的影响较大,会导致视频帧的丢包率明显增大,而每多丢一个视频帧,时间戳的对比次数就要成倍的增加,在同步播放前要消耗过多的时间用于时间戳的比对,反而降低了同步效果,同时也消耗了过多的系统资源,并且随着网络带宽的减少,视频包的丢包问题并没有得到缓解,单一通过比对媒体间的时间戳,依靠丢包来达到同步的方式,会使原本所剩不多的视频音频包,还要面临继续丢包来满足同步播放,这种方式只会更加影响媒体间的同步质量,甚至是单个媒体内的连贯播放,安卓移动设备在处理性能上有局限性,不能浪费过多的系统资源去达到并不好的播放效果;

第六,现有技术基于音频时间戳同步控制播放方法中,音频帧为主流,按照频率顺序播放,视频帧的播放采取事件驱动的方式,即只要有视频帧到达,就跟当前准备播放的音频帧时间戳进行比较,一直要比较到在同步允许的范围内再进行播放,这种方法的弊端有两点:一是如果视频帧的丢包率较小,很可能因为新视频帧的到达也符合同步范围,而播放下一个的视频帧;二是如果视频帧的丢包率较大,那么视频帧为了达到同步,与音频帧时间戳的对比次数会明显增多。

针对现有技术的不足,本发明首先对未采用视频音频同步发包和同步发包时,对接收端和同步效果的影响进行分析,然后详细解析视频音频包同步发送策略,再通过分析基于音频时间戳同步控制播放方法的弊端,针对安卓设备性能的局限性,采用间隔对比时间戳的方式,在发现视频音频不同步时,根据计算得出视频音频帧相隔的帧数快速定位到应与之同步的帧,再进行时间戳的对比,到达同步范围则进行播放,分别在视频音频帧时间戳对比的时间和次数上进行改进,最后,通过实验验证了安卓实时媒体间采用改进后视频音频同步策略的效果。

为达到以上技术效果,本发明所采用的技术方案如下:

移动媒体间实时视频音频高精度同步平台,采用间隔对比时间戳的方式,分别在视频音频帧时间戳对比的时间和次数上进行改进,采用在发送端使视频音频包同步发送,到达接收端的数据包进行解包、组帧、解码后传入所设置的二级缓存区,视频音频帧在二级缓冲区内每收到一个RTCP包,就根据时间戳对到相同时间戳的视频音频帧,进行完全同步,其后按照视频音频原有的采样速率顺序播放,针对时间戳对比次数过多的弊端,采用间隔一定帧数的音频帧进行一次同步检测,如果时间戳差值在同步范围内,则继续正常播放,否则分别基于视频超前音频或滞后音频,进行快速定位比对时间戳,使之达到同步允许的范围,然后同步播放;

针对视频音频时间戳的对比和丢包解决视频音频媒体间的同步问题,为避免在播放后续的视频帧时,视频帧的丢包导致重复播放上一个视频帧的次数过多,接收端在检测到视频帧有连续丢掉3帧,即连续丢包数量n>12的现象时,通过RR包反馈给发送端,发送端再来调整发送速率,从根本上改善后续视频帧连续丢包现象;

针对如果视频帧的丢包率较小,很可能因为新视频帧的到达也符合同步范围,而播放下一个的视频帧的弊端,本发明根据RTCP包,使第一个音频帧与相同时间戳的视频帧同步播放后,音频和视频均按各自的采样频率正常播放,在间隔播放几帧音频后,视频帧再与音频帧的时间戳进行对比,调整同步;

针对如果视频帧的丢包率较大,那么视频帧为了达到同步,与音频帧时间戳的对比次数会明显增多的弊端,本发明分别对视频音频间丢包的情况采取不同的改进:

第一,视频存在丢包时,会发生视频超前于音频的现象,本发明采用跳过前半段的比对,直接从后半段开始依次比较,计算出失步状况下视频音频在NTP时间轴上相隔多少个视频帧,直接跳到同步可能性大的音频帧去进行比较,减少对比的时间次数;

第二,音频存在丢包时,会发生视频滞后于音频的现象,本发明通过计算出视频滞后于音频的帧数,再直接跳过相应的视频滞后帧数,达到同步。

移动媒体间实时视频音频高精度同步平台,进一步的,视频音频包同步发送方法:为了使同一时刻采集的视频音频数据能够同步发送,本发明给同一时刻采集的视频音频数据帧打上相应的时间戳,同时将这个时刻视频音频的时间戳和NTP时间戳信息分别封装到RTCP包里,在发送时对应视频音频包的时间戳信息来同步发送,间隔发送RTCP包,一帧的媒体数据包有一个时间戳,视频数据在分片分包的情况下,多个分片包有相同的一个时间戳,采用AMR压缩方式的音频,采样频率为8000Hz,帧率是每帧20毫秒,那么时间戳增量为:8000*0.02=160;采用H264压缩方式的视频,采用频率为90000Hz,在帧率为10fps,即100毫秒一帧的情况下,时间戳增量为:90000*0.1=9000,帧率为20fps和25fps时,时间戳增量分别为4500和3600,同一时间所采集的视频音频帧的时间戳对应关系为音频是20ms一帧,视频帧率分别是10fps、20fps、25fps时的对应关系;

根据音频帧和视频帧对应的时间关系,得出在视频码率选择为10fps时,1个视频帧对应5个音频帧;码率为20fps时,2个视频帧对应5个音频帧;码率为25fps时,1个视频帧对应2个音频帧,而发送端会分别为视频音频包设置一定的缓存用于数据包的发送,在最开始发送视频音频数据包时,在发送端的缓存区中参照这个对应关系进行发送,保证视频音频包在发送端的媒体间同步,使前期网络状况好的情况下,以较小的开销使音频媒体间在接收端达到同步。

移动媒体间实时视频音频高精度同步平台,进一步的,基于时间戳的视频音频同步:引入时间戳机制,在播放时还原视频音频流之间的同步关系,本发明已经在发送端把同一时间采集的视频音频包打上了时间戳信息,在接收端设置跟一级缓冲区一样结构的二级缓冲区,在二级缓冲区内通过对比视频音频之间的时间戳差值关系,控制视频音频流的播放速率,达到媒体间同步的效果;

实现根据视频音频时间戳达到同步,首先通过RTCP包提供的时间戳对还原时间轴,把接收端处的视频音频RTP包内的时间戳均映射到同一个NTP时间轴上,在发送端曾根据视频音频间的映射关系,将视频音频包同步发送出去,第一个音频帧和第一个视频帧不论时间戳的初始值是多少,它们都应该是对应到同一个时间点上,随后根据它们帧间的关系,控制视频音频帧的同步发送,需要RTCP协议中的SR包协助映射视频音频间的时间关系,发送端在采集到视频音频数据后给打上RTP时间戳的同时,也会将相同的RTP时间戳写入SR包中,并将当前的绝对时间通过计算形成NTP时间戳,NTP时间戳和RTP时间戳形成一个时间戳对,时间戳对通过SR包发送给接收端后,发送端发送的数据包和SR包都使用同一个绝对时钟,接收端根据SR包中的把视频音频帧正确的映射到NTP时间轴上。

移动媒体间实时视频音频高精度同步平台,进一步的,安卓时间戳视频音频同步改进方法,同步允许范围THR为80ms,进行对比视频帧的帧率为10fps时的情况为:在根据RTCP包使第一个音频帧与相同时间戳的视频帧同步播放后,视频帧率为10pfs,5个音频帧对应1个视频帧,在音频帧每播放5个之后,检查视频音频同步状况,如果不在同步范围则进行同步调整,在没有丢包时,视频帧只需与音频帧时间戳对比一次,比改进前的5次对比次数要少。

移动媒体间实时视频音频高精度同步平台,进一步的,在音频帧基本不存在丢包,视频偶尔丢弃1个帧时,在上一次同步播放后,音频帧播放完5帧进行同步检查,18000时间戳的视频帧丢失,时间戳为27000的视频帧和1600的音频帧一起检测同步,但它们在NTP时间轴上的差值为100ms,不在同步范围内,需要进行同步调整,根据改进方法,首先计算出差值100ms相当于间隔了1帧的视频帧,那么就在1600的音频帧比较完之后,再跟1760的音频帧进行比较,刚好在同步范围内,则进行播放,这种方式要优于改进前的10次对比次数。

移动媒体间实时视频音频高精度同步平台,进一步的,在音频帧基本不存在丢包,视频连续丢弃2个帧时,在上一次同步播放后,同步检测时,时间戳为18000和27000的视频帧丢失,时间戳为36000的视频帧和1600的音频帧进行比较,它们在NTP时间轴上的差值为200ms,超出了同步范围,200ms相当于2帧的视频帧,10帧的音频帧,依据改进方法,进行视频音频时间戳的比较时,直接跳过前5帧的音频帧,从第6帧的音频帧开始与36000的视频帧进行比较,直到它们之间差值在同步范围内,将会同步播放,这里2560的音频帧与36000的视频帧刚好进行同步播放,只进行了一次对比,在收到下一个RTCP包时,根据视频音频相等的时间戳,调整到完全同步,而如果音频帧之前有丢包,那么视频音频时间戳间的对比次数也不会超过9次,比改进前的15次还是次数要少。

移动媒体间实时视频音频高精度同步平台,进一步的,在音频帧基本不存在丢包,视频连续丢弃n个帧的情况下,改进后的对比次数要比改进前的对比次数少很多,在n越大的时候,对比次数的差距越明显,由于改进后的方法,在视频丢包发生时,当前的视频帧要先与丢失视频帧相对应的音频帧进行比较,跳过丢失视频帧对应的音频帧,直接与当前视频帧所对应的音频帧比较,节省大量的对比时间,这种方式的对比次数,基本不受连续丢包个数的影响,也不会因为视频帧率的不同,使视频音频间帧个数的对应关系严重影响到时间戳对比次数;

改进后在音频帧基本不存在丢包,视频会连续丢n个帧的现实情况中,当n=0时,接收端只需进行一次时间戳对比来保持同步;当n≠0时,接收端最少进行二次,最多进行九次的对比,就能达到同步,并且RTCP包所提供的,间隔的调整视频音频帧的完全同步。

移动媒体间实时视频音频高精度同步平台,进一步的,根据时间戳具体的实时视频音频高精度同步方法为:

假设音频帧率是20毫秒一帧,视频帧率为mfps,视频音频帧的同步允许范围THR为80ms,超过同步允许范围则要进行同步调整,而视频音频帧间时间戳差值的对比,均为参照NTP时间轴映射后的值来进行对比;

在接收端开始播放前,保证二级缓存里有一定预存量的音频帧能够连续的进行播放,但二级缓存的量不能太多以至于影响播放的实时性,网络时延抖动均为200ms,而播放N帧的时间大于网络时延抖动的时间,就能对音频帧连贯的播放,音频每帧的播放时间为20毫秒,采取缓存到10帧的音频帧就准备输出播放,此时,视频帧也在二级缓存里等待播放,首先,等待第一个RTCP包到达接收端,根据准备输出的第一个音频帧的时间戳,在视频的二级缓存里到相同时间戳的视频帧同时播放,然后,每播放50/m个音频帧,就通过比对音频帧的时间戳NTPA和视频帧的时间戳NTPV来调整同步,具体的比对以及同步调整为:

第一,如果|NTPA-NTPV|≤80ms,在视频音频帧同步允许的范围内,则不需要同步处理,继续进行播放;

第二,如果|NTPA-NTPV|>80ms,说明视频音频帧的播放处于临界同步甚至可能是失步的状态,则需要进行同步处理。

移动媒体间实时视频音频高精度同步平台,进一步的,视频音频帧的时间戳差值存在两种情况,先分别判断后再根据不同情况来进行同步处理,记|NTPA-NTPV|=R:

第一,若NTPA<NTPV,表明视频超前于音频,此时,重复播放上一个视频帧,将超前的视频帧挂起等待,直到音频帧播放到与等待视频帧的时间戳达到同步范围,再播放视频帧,为快速到与之对应的音频帧,直接从第个音频帧开始对比,至多对比50/m次就能同步播放;

第二,若NTPA>NTPV,表明视频滞后于音频,需要跳过R*m/1000个视频帧,使视频音频帧的播放再次达到同步,在视频音频流播放期间,为保证音频播放的连贯性,采取对视频播放速率的控制,但接收端每收到一个RTCP包,就根据新获取的时间戳对调整音频帧和视频帧在NTP时间轴上的时间关系,维护NTP时间轴的基准。

与现有技术相比,本发明的贡献和创新点在于:

第一,本发明针对视频音频时间戳的对比和丢包解决视频音频媒体间的同步问题,为避免在播放后续的视频帧时,视频帧的丢包导致重复播放上一个视频帧的次数过多,接收端在检测到视频帧有连续丢掉3帧,即连续丢包数量n>12的现象时,通过RR包反馈给发送端,发送端再来调整发送速率,从根本上改善后续视频帧连续丢包现象,本发明的视频音频同步策略运用在复杂的移动网络上安卓端的传输,能充分保证低抖动时延、高视频音频同步质量要求;

第二,针对如果视频帧的丢包率较小,很可能因为新视频帧的到达也符合同步范围,而播放下一个的视频帧的弊端,本发明根据RTCP包,使第一个音频帧与相同时间戳的视频帧同步播放后,音频和视频均按各自的采样频率正常播放,在间隔播放几帧音频后,视频帧再与音频帧的时间戳进行对比,调整同步;针对如果视频帧的丢包率较大,那么视频帧为了达到同步,与音频帧时间戳的对比次数会明显增多的弊端,本发明分别对视频音频间丢包的情况采取不同的改进,通过计算出视频滞后于音频的帧数,再直接跳过相应的视频滞后帧数,达到同步;弥补了视频音频同步的各种问题提高移动端的视频质量,极大的改善了用户体验;

第三,实验验证安卓实时媒体间视频音频同步的改进情况,检验发送端同步发送视频音频包对最终同步效果的影响,以及改进后时间戳同步策略的同步效果。实验结果显示,发送端采用同步发送视频音频包,在网络环境良好或发送数据包的前期,会改善视频音频时间戳同步效果;而采用传统的时间戳同步策略虽然也能在网络环境较好时,使时间差在同步范围内,但整体的同步效果比采用改进后的时间戳同步策略的同步效果差很多,证明了本发明极大的提高了移动媒体间实时视频音频高精度同步质量;

第四,本发明指出现有技术的视频音频发包策略中,并没有对视频音频包的同步发送进行有效的控制,采用根据视频音频包间的对应关系来同步发送媒体包,在发送端达到了视频音频媒体间的同步,通过分析在接收端利用RTCP包提供的时间戳对进行视频音频的同步,以及基于音频时间戳同步控制播放的传统方法中时间戳同步技术的特点及不足,针对安卓设备性能的局限性,采用间隔对比时间戳的方式,分别在视频音频帧时间戳对比的时间和次数上进行改进,本发明提出的安卓实时视频音频同步策略,极大的改善了用户体验,有利于推动移动终端上实时视频音频同步的发展,对于移动端实时视频音频的发展有着重大的实际意义和应用价值。

图1是本发明的视频音频帧的时间戳对应关系映射图。

图2是本发明基于遗传算法的网络服务组合方法应用示意图。

图3是本发明无丢包情况下的视频音频同步判断示意图。

图4是本发明视频丢一个帧的视频音频同步判断示意图。

图5是本发明视频丢两个帧的视频音频同步判断示意图。

图6是本发明同步前的视频音频时间差关系图。

图7是本发明同步后的视频音频时间差关系图。

图8是WiFi下不同策略视频音频同步后的时间差关系图。

下面结合附图,对本发明提供的移动媒体间实时视频音频高精度同步平台的技术方案进行进一步的描述,使本领域的技术人员能够更好的理解本发明并能予以实施。

本发明采用在发送端使视频音频包同步发送,到达接收端的数据包进行解包、组帧、解码后传入所设置的二级缓存区,视频音频帧在二级缓冲区内每收到一个RTCP包,就根据时间戳对到相同时间戳的视频音频帧,进行完全同步,其后按照视频音频原有的采样速率顺序播放,针对时间戳对比次数过多的弊端,采用间隔一定帧数的音频帧进行一次同步检测,如果时间戳差值在同步范围内,则继续正常播放,否则分别基于视频超前音频或滞后音频,进行快速定位比对时间戳,使之达到同步允许的范围,然后同步播放。

一、视频音频包同步发送策略

(一)视频音频包同步发包解析

在整个流媒体数据包的发送过程中,影响视频音频媒体间的同步因素包括:从采集、编码压缩、数据包发送到网络传输、接收、解码播放,每个环节都可能导致媒体流间的不同步,而对用户来说,要最终在接收端看到视频音频的同步播放,达到唇音同步的效果,视频音频的同步控制分为采集同步、发送同步、接收同步、解码播放同步这几部分来进行控制,减少各个环节中的视频音频数据的偏移量,最终达到视频音频的同步范围。

现有技术对实时媒体间的同步处理并没有涉及到对发送端媒体间的发包进行控制,而在网络环境好的情况下,数据传输的时延和时延抖动小,丢包率小,只需保证发送端同步采集视频音频数据并同步发送出去,接收端几乎不用其它的控制机制,就能达到较好的同步效果。而在发送视频音频数据流的前期,尤其是最开始发送视频音频时,网络带宽良好资源充足,发送端采用同步发送音频数据包就能基本达到媒体间同步,随着不断发送视频音频数据包,发送媒体包数据量增大,网络环境和服务质量逐渐变差,产生了网络拥塞,导致媒体数据包的丢包率逐渐上升,此时再通过调节发送端的发送速率控制流量和网络拥塞,减少丢包率,逐步恢复视频音频媒体间同步关系。

(二)视频音频包同步发送方法

导致媒体数据包发送不同步的主要因素包括两点:一是由于视频音频流的采集方式不同,音频流是连续采集,AMR的采集是固定的20毫秒一帧,而视频流是间隔采集;二是因为对采集到的视频音频进行压缩时,音频压缩算法的复杂度和视频压缩算法的复杂度不一致,导致压缩所消耗的时间不一样,视频音频间的偏移量最终使同一时刻采集的视频音频数据,不能同步发送。

为了使同一时刻采集的视频音频数据能够同步发送,本发明给同一时刻采集的视频音频数据帧打上相应的时间戳,同时将这个时刻视频音频的时间戳和NTP时间戳信息分别封装到RTCP包里,在发送时对应视频音频包的时间戳信息来同步发送,间隔发送RTCP包,一帧的媒体数据包有一个时间戳,视频数据在分片分包的情况下,多个分片包有相同的一个时间戳,由于视频音频的采用频率和帧率不一样,所以它们每个包的时间戳增量也不一样。采用AMR压缩方式的音频,采样频率为8000Hz,帧率是每帧20毫秒,那么时间戳增量为:8000*0.02=160;采用H264压缩方式的视频,采用频率为90000Hz,在帧率为10fps,即100毫秒一帧的情况下,时间戳增量为:90000*0.1=9000,帧率为20fps和25fps时,时间戳增量分别为4500和3600,同一时间所采集的视频音频帧的时间戳对应关系如图1所示为音频是20ms一帧,视频帧率分别是10fps、20fps、25fps时的对应关系。

根据图1中音频帧和视频帧对应的时间关系,得出在视频码率选择为10fps时,1个视频帧对应5个音频帧;码率为20fps时,2个视频帧对应5个音频帧;码率为25fps时,1个视频帧对应2个音频帧,而发送端会分别为视频音频包设置一定的缓存用于数据包的发送,在最开始发送视频音频数据包时,在发送端的缓存区中参照这个对应关系进行发送,保证视频音频包在发送端的媒体间同步,使前期网络状况好的情况下,以较小的开销使音频媒体间在接收端达到同步。

二、基于时间戳的视频音频同步

(一)时间戳同步方法解析

导致视频音频媒体间不同步的主要因素是网络环境的影响,多媒体数据包在进行网络传输时,网络环境的不稳定和拥塞等都会造成数据包的时延和时延抖动,恶劣的网络环境下,尽管是在发送端同步发送同一时刻采集的视频音频包,可能也会破坏它们之间的同步关系。

因此,本发明引入时间戳机制,在播放时还原视频音频流之间的同步关系,本发明已经在发送端把同一时间采集的视频音频包打上了时间戳信息,在接收端设置跟一级缓冲区一样结构的二级缓冲区,在二级缓冲区内通过对比视频音频之间的时间戳差值关系,控制视频音频流的播放速率,达到媒体间同步的效果。

实现根据视频音频时间戳达到同步,首先通过RTCP包提供的时间戳对还原时间轴,把接收端处的视频音频RTP包内的时间戳均映射到同一个NTP时间轴上,在发送端曾根据视频音频间的映射关系,将视频音频包同步发送了出去,但跟发送端同时发送视频音频包时默认的时间轴不一样的是,第一个音频帧和第一个视频帧不论时间戳的初始值是多少,它们都应该是对应到同一个时间点上,随后根据它们帧间的关系,控制视频音频帧的同步发送。但视频音频进行网络传输后,每个视频音频包经历不同的网络延时甚至存在丢包情况,此时,无法确定音频帧的时间戳就是在发送时所对应的视频帧时间戳,在恶劣的网络环境下,视频音频包在到达接收端后仅仅根据各自独立的RTP时间戳,无法确定音频帧和视频帧之间的时间对应关系,需要RTCP协议中的SR包来协助映射视频音频间的时间关系,发送端在采集到视频音频数据后给打上RTP时间戳的同时,也会将相同的RTP时间戳写入SR包中,并将当前的绝对时间通过计算形成NTP时间戳,NTP时间戳和RTP时间戳形成一个时间戳对,时间戳对通过SR包发送给接收端后,由于发送端发送的数据包和SR包都使用同一个绝对时钟,接收端就能根据SR包中的把视频音频帧正确的映射到NTP时间轴上。

NTP时间戳和RTP时间戳都使用的是同一个发送端的绝对时钟生成,虽然视频音频流之间并没有时间上的参考关系,但通过SR包提供的时间戳对和自身的RTP时间戳,视频音频流之间就能基于NTP时间轴进行时间上的参考,音频帧和视频帧全都映射到NTP时间轴上的结果如图2所示,其中Y表示音频帧,S表示视频帧,Y/S表示音频帧和视频帧应该同步播放的情况,在按照NTP时间轴顺序播放完60ms和80ms的音频帧后,此时根据NTP时间轴应该同时播放第100ms的音频帧和视频帧,但在实际情况中,视频音频数据包因为时延和丢包的存在,不可能每次都恰好在NTP参考时钟达到相应的时间时,刚好进行播放,此时就要分别对视频音频数据晚到或丢包的情况进行同步处理。

由于人对声音不连续的现象比视频播放时的不连续更敏感,并且比起需要传输大数据量的视频帧来说,音频帧的数据量小,丢包率也较小,因此,在基于音频时间戳同步控制播放的传统处理方法中,把音频流作为主流,视频流作为从流,即无论音频帧的丢包率是多少,都将音频流以采样频率进行顺序播放,而视频流的播放采用事件驱动的方式,即取出一个已经到达的视频帧,以正准备播放的音频时间戳为参考时间,将取出的视频帧时间戳与参考时间对比,若音频帧和视频帧的时间偏差在同步允许的时间范围内,则直接同时输出播放;若是音频帧超前视频帧的情况,说明视频帧已经滞后,则丢弃当前视频帧,继续取出下一个视频帧与下一个时刻的参考时间再进行新一轮对比;若是视频帧超前音频帧的情况,说明视频帧提早被取出,则对此视频帧进行挂起,等到当前音频帧播放完后,获取下一个音频帧时,视频帧再跟准备播放的音频帧时间戳对比,如果还是视频帧超前,则继续挂起等待,这样循环反复直到视频音频帧的时间戳偏差在同步允许的范围内。

这种方法的特点是每播放一个视频帧,都要不停的跟当前准备播放的音频帧时间戳进行对比,直到二者之间达到同步范围视频帧才能播放,必须在当前音频帧播放完时,取下一个音频帧的同时去取下一个到达的视频帧进行时间戳的对比。

由以上分析可以得出,使用基于音频时间戳同步控制播放的传统方法,在音频帧基本不存在丢包,视频帧会连续丢n个包的现实情况中,为了进行视频音频帧的同步播放,视频音频时间戳的平均对比次数为:

第一,如果视频帧率为10fps,接收端要进行5n次左右的时间戳对比;

第二,如果视频帧率为20fps,接收端要进行5+2.5(n-1)次的时间戳对比;

第三,如果视频帧率为25fps,接收端要进行2n次的时间戳对比;

在实际进行视频音频包的传输时,由于音频包比视频包的单帧数据量小,在采取AMR方式压缩后的音频帧单帧封成一个RTP包时,音频数据包的大小仅为87字节,几乎不存在丢包的现象;而视频帧因为数据量过大,超过了最大传输单元MTU,要进行分片封包传输,丢包情况比音频包频繁,所以到达接收端处的音频帧基本完整,几乎不存在丢包,而视频包丢包较为严重,常常有连续丢包现象。

由于通常不针对丢包严重时,对发送速率进行调整,达到缓解网络拥塞,减少视频包的丢包措施。随着实时视频音频播放时间的推移,网络负载数据量的逐步增大,视频丢包情况比刚开始传输时更加严重,视频音频帧的时间戳对比次数会越来越多,同步效果也会越来越差,甚至不能保证单个视频媒体流内的同步。

(二)安卓时间戳视频音频同步改进方法

基于音频时间戳同步控制播放的传统方法中视频音频时间戳的同步处理分析得知,该策略在网络环境良好、几乎不存在视频音频丢包的情况下,视频音频帧间能通过较少的对比次数,达到同步播放范围;在网络环境较差时,对视频帧丢包率的影响较大,会导致视频帧的丢包率明显增大,而每多丢一个视频帧,时间戳的对比次数就要成倍的增加,在同步播放前要消耗过多的时间用于时间戳的比对,反而降低了同步效果,同时也消耗了过多的系统资源,并且随着网络带宽的减少,视频包的丢包问题并没有得到缓解,单一通过比对媒体间的时间戳,依靠丢包来达到同步的方式,会使原本所剩不多的视频音频包,还要面临继续丢包来满足同步播放,这种方式只会更加影响媒体间的同步质量,甚至是单个媒体内的连贯播放。

安卓移动设备在处理性能上有局限性,不能浪费过多的系统资源去达到并不好的播放效果。为解决安卓移动端上视频音频同步播放的问题。本发明针对视频音频时间戳的对比和丢包解决视频音频媒体间的同步问题,为避免在播放后续的视频帧时,视频帧的丢包导致重复播放上一个视频帧的次数过多,接收端在检测到视频帧有连续丢掉3帧,即连续丢包数量n>12的现象时,通过RR包反馈给发送端,发送端再来调整发送速率,从根本上改善后续视频帧连续丢包现象。

现有技术基于音频时间戳同步控制播放方法中,音频帧为主流,按照频率顺序播放,视频帧的播放采取事件驱动的方式,即只要有视频帧到达,就跟当前准备播放的音频帧时间戳进行比较,一直要比较到在同步允许的范围内再进行播放,这种方法的弊端有两点:第一,如果视频帧的丢包率较小,很可能因为新视频帧的到达也符合同步范围,而播放下一个的视频帧;第二,如果视频帧的丢包率较大,那么视频帧为了达到同步,与音频帧时间戳的对比次数会明显增多。

针对第一个弊端,本发明并不采取只要有视频帧到达,就立即与音频比较时间戳的方法,而是在根据RTCP包,使第一个音频帧与相同时间戳的视频帧同步播放后,音频和视频均按各自的采样频率正常播放,在间隔播放几帧音频后,视频帧再与音频帧的时间戳进行对比,调整同步。

针对第二个弊端,分别对视频音频间丢包的情况采取不同的改进:

(1)视频存在丢包时,会发生视频超前于音频的现象,本发明采用跳过前半段的比对,直接从后半段开始依次比较,计算出失步状况下视频音频在NTP时间轴上相隔多少个视频帧,直接跳到同步可能性大的音频帧去进行比较,减少对比的时间次数。而基于音频时间戳同步控制播放的传统方法中,超前的视频帧要挨个的到同步的音频帧,但在挨个与音频帧比对的前半段内,基本不到与之相同步的音频帧。

(2)音频存在丢包时,会发生视频滞后于音频的现象,本发明通过计算出视频滞后于音频的帧数,再直接跳过相应的视频滞后帧数,达到同步。

以下具体分析安卓时间戳视频音频同步改进方法,同步允许范围THR为80ms,为了进行对比视频帧的帧率为10fps时的情况。

在根据RTCP包使第一个音频帧与相同时间戳的视频帧同步播放后,视频帧率为10pfs,5个音频帧对应1个视频帧,在音频帧每播放5个之后,检查视频音频同步状况,如果不在同步范围则进行同步调整。如图3所示,在没有丢包时,视频帧只需与音频帧时间戳对比一次,比改进前的5次对比次数要少。

在音频帧基本不存在丢包,视频偶尔丢弃1个帧时,如图4所示,在上一次同步播放后,音频帧播放完5帧进行同步检查,18000时间戳的视频帧丢失,时间戳为27000的视频帧和1600的音频帧一起检测同步,但它们在NTP时间轴上的差值为100ms,不在同步范围内,需要进行同步调整。根据改进方法,首先计算出差值100ms相当于间隔了1帧的视频帧,那么就在1600的音频帧比较完之后,再跟1760的音频帧进行比较,刚好在同步范围内,则进行播放,这种方式要优于改进前的10次对比次数。

在音频帧基本不存在丢包,视频连续丢弃2个帧时,如图5所示,在上一次同步播放后,同步检测时,时间戳为18000和27000的视频帧丢失,时间戳为36000的视频帧和1600的音频帧进行比较,它们在NTP时间轴上的差值为200ms,超出了同步范围,200ms相当于2帧的视频帧,10帧的音频帧,依据改进方法,进行视频音频时间戳的比较时,直接跳过前5帧的音频帧,从第6帧的音频帧开始与36000的视频帧进行比较,直到它们之间差值在同步范围内,将会同步播放,这里2560的音频帧与36000的视频帧刚好进行同步播放,只进行了一次对比。虽然与改进前一样,并不是完美的对应3200的音频帧同步播放,但在收到下一个RTCP包时,根据视频音频相等的时间戳,调整到完全同步,而如果音频帧之前有丢包,那么视频音频时间戳间的对比次数也不会超过9次,比改进前的15次还是次数要少。

由以上规律分析得出,在音频帧基本不存在丢包,视频连续丢弃n个帧的情况下,改进后的对比次数要比改进前的对比次数少很多,在n越大的时候,对比次数的差距越明显。由于改进后的方法,在视频丢包发生时,当前的视频帧要先与丢失视频帧相对应的音频帧进行比较,跳过丢失视频帧对应的音频帧,直接与当前视频帧所对应的音频帧比较,会节省大量的对比时间。这种方式的对比次数,基本不受连续丢包个数的影响,也不会因为视频帧率的不同,使视频音频间帧个数的对应关系严重影响到时间戳对比次数。

改进后在音频帧基本不存在丢包,视频会连续丢n个帧的现实情况中,当n=0时,接收端只需进行一次时间戳对比来保持同步;当n≠0时,接收端最少进行二次,最多进行九次的对比,就能达到同步,并且RTCP包所提供的,间隔的调整视频音频帧的完全同步。

根据时间戳具体的同步方法为:

假设音频帧率是20毫秒一帧,视频帧率为mfps,视频音频帧的同步允许范围THR为80ms,超过同步允许范围则要进行同步调整,而视频音频帧间时间戳差值的对比,均为参照NTP时间轴映射后的值来进行对比。

在接收端开始播放前,保证二级缓存里有一定预存量的音频帧能够连续的进行播放,但二级缓存的量不能太多以至于影响播放的实时性,网络时延抖动均为200ms,而播放N帧的时间大于网络时延抖动的时间,就能对音频帧连贯的播放,音频每帧的播放时间为20毫秒,采取缓存到10帧的音频帧就准备输出播放,此时,视频帧也在二级缓存里等待播放,首先,等待第一个RTCP包到达接收端,根据准备输出的第一个音频帧的时间戳,在视频的二级缓存里到相同时间戳的视频帧同时播放,然后,每播放50/m个音频帧,就通过比对音频帧的时间戳NTPA和视频帧的时间戳NTPV来调整同步,具体的比对以及同步调整为:

(1)如果|NTPA-NTPV|≤80ms,在视频音频帧同步允许的范围内,则不需要同步处理,继续进行播放;

(2)如果|NTPA-NTPV|>80ms,说明视频音频帧的播放处于临界同步甚至可能是失步的状态,则需要进行同步处理。

视频音频帧的时间戳差值存在两种情况,先分别判断后再根据不同情况来进行同步处理,记|NTPA-NTPV|=R:

(1)若NTPA<NTPV,表明视频超前于音频,此时,重复播放上一个视频帧,将超前的视频帧挂起等待,直到音频帧播放到与等待视频帧的时间戳达到同步范围,再播放视频帧。为快速到与之对应的音频帧,直接从第个音频帧开始对比,至多对比50/m次就能同步播放;

(2)若NTPA>NTPV,表明视频滞后于音频,需要跳过R*m/1000个视频帧,使视频音频帧的播放再次达到同步,在视频音频流播放期间,为保证音频播放的连贯性,采取对视频播放速率的控制,但接收端每收到一个RTCP包,就根据新获取的时间戳对调整音频帧和视频帧在NTP时间轴上的时间关系,维护NTP时间轴的基准。

三、实验结果和分析

主要验证安卓移动媒体间实时视频音频同步改进情况,检验发送端同步发送视频音频包对最终同步效果的影响,以及改进后时间戳同步策略的同步效果。如果时间差值在±80ms的范围内,则认为媒体间是同步状态;如果时间差值超过这一范围,则认为媒体间是不同状态。

(1)发送端同步发送对同步效果的影响实验方法:为了检测网络带宽良好资源充足时,发送端采用同步发送音频数据包就能基本达到媒体间同步,采用在WiFi的实验环境下,分别对比未采用同步发送和采用同步发送时,对接收端视频音频同步效果的影响。

实验结果:如图6所示为前100帧视频音频时间差,左图是未采用同步发送时,同步前视频音频帧的时间差值图;右图是采用同步发送时,同步前视频音频帧的时间差值图。可以看出采用同步发送比未采用同步发送时,到达接收端的视频音频帧时间差要小且基本达到同步范围,未采用同步发送的时间差均超过了同步允许范围±80ms。

如图7为在发送端分别未采用同步和采用同步发送时,接收端对二种情况进行同一个同步策略后的时间差值图。左图为未采用同步发送时,同步后的时间差值图;右图为采用同步发送时,同步后的时间差值图。取前3000帧进行统计,虽然左图也达到了同步允许的范围内,但时间差值在-80到-30之间且-50以上的点占了45.81%。而右图的时间差也在同步范围内,并且在-80到-30之间且-50以上的时间差值点占了64.11%,同步效果较好,因为时间戳同步策略中的同步允许范围为±80ms,只要在时间戳对比的过程中满足差值为±80就认为达到同步范围,不再对该帧进行调整。

(2)安卓时间戳同步改进策略中的同步效果

实验方法:分别在WiFi和电信5G环境下,发送端均采用同步发送,接收端分别采用基于音频时间戳同步控制播放的传统策略和本发明改进后的同步策略,得出分二种同步策略后的时间戳差值。而改进后的同步策略中,播放第一帧时要通过SR包来到完全对应的视频音频帧才进行播放,这里在改进后同步策略的实验中,设置成发送端只在第一次时发送一个SR包用于第一帧的同步播放。

实验结果:在WiFi环境下的情况如图8所示,左图为采用传统策略同步后的时间差值图,右图为采用本发明改进策略同步后的时间差值图。取前3000帧进行统计,左图的时间差值为-80到-30且-50以上的时间戳差值占59.13%,但右图的时间差值为-60到-10且-50以上的时间戳差值占79.98%。

在电信5G环境下的情况可以看出,由于采取了同步发包策略,在网络带宽资源充足的前期,还能保持在同步范围,而随着发送数据的增多,后半段数据丢包率增加,开始影响到同步效果。但整体上改进后比改进前的同步效果要好很多。取前3000帧进行统计,这里由于后期网络环境对同步效果的影响较大,采用传统策略的同步百分比为7.96%,采用本发明改进策略的同步百分比为24.27%。

实验验证安卓实时媒体间视频音频同步的改进情况,检验发送端同步发送视频音频包对最终同步效果的影响,以及改进后时间戳同步策略的同步效果。实验结果显示,发送端采用同步发送视频音频包,在网络环境良好或发送数据包的前期,会改善视频音频时间戳同步效果;而采用传统的时间戳同步策略虽然也能在网络环境较好时,使时间差在同步范围内,但整体的同步效果比采用改进后的时间戳同步策略的同步效果差很多,证明了本发明极大的提高了移动媒体间实时视频音频高精度同步质量。

本文发布于:2024-09-23 06:26:19,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/72844.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议