在接收端实现流媒体同步控制的研究

时间:2022-03-08 03:29:30

在接收端实现流媒体同步控制的研究

摘要:为了更好的解决音视频同步问题,提出了一种在RTP/RTCP协议的基础上,在接收端实现流媒体同步控制的方法。根据音视频接收端缓冲区的占用率, 以音频流为主媒体流,视频流为从媒体流,通过比较音频帧和视频帧的播放时间标签,对视频帧采取重复/丢弃方式来取得音视频媒体间的同步。实验表明,该种方法具有良好的同步性,既能满足P- QoS(可感知服务质量)要求又能满足实时性要求。

关键词:RTP/RTCP; 接收端;流媒体;同步 ;缓冲区

中图分类号:TP37文献标识码:A文章编号:1009-3044(2010)13-3512-02

Reasearch of Streaming Media Synchronization implemented by Receivers

ZHAO Shu-lan1, SONG Ren-jie1, LI Guang-ren2

(1.Northeast Dianli University, Jilin 132012, China; 2.China Petroleum JiLin Chemical Engineering &Construction LTD.CO., Jilin 132012, China)

Abstract: In order to better solve the problem of streaming media synchronization of audio and video ,a control method based on the RTP/RTCP implemented by receivers is presented. According to the occpuied level ofreceiver buffer, With audio as master media stream and video as slave stream,the method makes a comparison between the presentation time stamp of the audio frame and the video frame and repeat / drop the video frame to achieve audio and video synchronization. Experimental results show that the method can satisfy the P-QoS (perceived quality of service) requirements and can meet the real-time requirements.

Key words: RTP/RTCP; receivers; streaming media; sychronization; buffer

随着近年来计算机运行速度、网络带宽以及数据压缩技术的显著提高,实时流媒体技术成为网络应用的热点之一。由于流媒体网络传输所依赖的IP网络带宽有限和拥塞不断发生,不能满足多媒体实时传输所需求的低延时、抖动和QoS保证等要求,因此解决视音频的同步问题是流媒体系统QoS研究中的一项重要内容。为了弥补延时抖动的影响,提高流媒体视觉质量,除了依靠合适的传输协议外,还要有合理的缓存来保证数据的正确到达和媒体的连续播放。本文就是采用RTP和RTCP协议配合起来提供实时数据的传输,着重介绍了流媒体在接收端是如何通过缓冲区的管理来实现媒体流的同步的。

1 RTP/RTCP传输协议

实时传输协议(Real-time Transport Protocol,RTP)是在Internet上处理多媒体数据流的一种网络协议,通常使用UDP来进行多媒体数据的传输。RTP协议提供实时数据传输中的时间戳信息以及各数据流的同步功能;提供序列号字段使接受方通过检测收到的分组序列号判断是否有分组丢失,并可重新恢复发送时的分组顺序;提供时间戳字段用于重新建立原始音频、视频的时序,帮助接受方确定数据到达时间的一致性或变化;提供同步源标识符(SSRC)字段,在接收端为包分组从而进行回放。

实时传输控制协议(Real-time Transport Control Protocol,RTCP)与RTP结合起来来完成按序传输数据包并提供流量控制和拥塞控制服务。在RTP会话期间,各参与者周期性地传送RTCP包。RTCP包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料,因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。用户可根据其相关信息实现实时、流畅的播放。因而RTP/RTCP特别适合传送网上的实时数据。

2 同步控制方案

根据视频及音频媒体流产生的不同位置,结合在应用中媒体流的处理方式,提出了一种采用并行机制解决同步问题的方案。具体方案如图1所示。

通过这种方式将多媒体的同步分为数据的采集、压缩编码、发送、基于RTP/RTCP协议的网络传输、接收端的播放几个部分同步同时来完成,每个阶段的同步都是为最终在播放端实现同步做准备。实验证明,采用此种方案的好处是能降低系统处理的复杂度,提高同步系统的整体性能,大大降低系统的延时。

3 接收端同步设计

在接收端设置缓冲区,是实现多媒体同步的有效方法,但如何设计缓冲区仍然是多媒体同步技术需要研究的一个重要问题。本文以实际开发的基于网络的教学系统为例着重论述流媒体在接受端是如何通过缓冲区来实现音视频同步的。

3.1 缓冲区数据结构的设计

由于压缩的视频流是一种典型的VBR(变比特率)流,各个数据包的大小差别很大[2],需要动态分配存储空间,所以采用链式存储结构,用于缓冲从服务器端传过来的数据包。这种动态缓冲方式,需要预存一定数量的媒体数据包和动态调整缓冲区相结合的办法来补偿时延抖动,将处理开销减至最小。

3.2 缓冲区长度

容量适当的缓冲区,既能满足不丢失数据的要求,又不至于让用户等待的时间过长。本文缓冲区大小是以媒体单元(音频帧或视频帧)为单位的。

为补偿媒体流内的抖动,在时延受限和媒体帧i的到达时刻a(i)必须早于其预期播放时刻p(i)的前提下,对于媒体流k而言,接收端初始所需播放缓冲区的大小可以用以下公式来计算,即 [1]时,可补偿媒体流k的时延抖动,保证媒体内同步。为保证数据的连续播放,在开始播放时,缓冲区应预先存储rkJmax k+1个数据包。其中rk为媒体流k的发送帧率和正常播放帧率, Jmax k为媒体流k的最大网络时延与最小网络时延之差,即为媒体流k的最大时延抖动值。

3.3 缓冲区的管理

当数据到达接收端时, 如果序列号小于已存包的最小序列号或者大于缓冲所能容纳的最大序列号时,将该包丢弃,否则根据RTP序列号将其放入缓冲区正确的位置。同时要监测网络传输中RTP包是否有丢失,若发现第n+3个RTP包到来时,第n个包还未收到,认为第n个包已丢失。这时检查这个丢失的RTP是不是本文所用MPEG编码方式中的I-VOP(帧内编码,其丢失会影响解码质量)的一部分,若是,则向发送方发送APP包(RTCP报文的一种),这个APP包包含请求重发的数据包顺序号和在I-VOP中的顺序号。发送方接收到重发请求时,若下一个I-VOP还未生成,则立即重发这个数据包[5]。

3.3.1 缓冲区调节

为避免缓存的溢出或空闲而造成缓冲区播放中的停顿和跳跃现象的出现,需要对缓冲区情况进行动态监测和管理。采用周期性的调节缓冲区的方法不能及时地采取措施改变网络现状,而根据丢失率来调节缓冲区大小的方法实现麻烦,所以我们采用缓冲区占有率来触发缓冲区大小的调整。具体实现时需要定义缓冲区占有率的阈值PBL 和PBH,每接受到一个数据包就要检测缓冲区占有率,如果其值在(PBL,PBH)范围内,则保持缓冲区大小不变,否则需要调整缓冲区大小。其两端要增加额外缓冲区,其大小要覆盖到从失步到发现失步,再到消除失步所经历的时间,一般大小设为rk(J+max-J+k)个媒体单元。这里J+max=max(J+v,J+a)[1],J+k为媒体流k的最大网络时延与平均网络时延的差值,当k为v时,表示视频流,k为a时,表示为音频流。

3.3.2 同步处理

播放时,当音频流和视频流的播放缓冲区占用水平达到各自缓冲区大小的一半时,同时开始播放[6]。处理音视频同步播放时,需要选择好参考流。由于人耳对声音频率的变化比较敏感,改变音频流的播放帧率容易被人耳探听到,另外视频流比音频流占用更多的带宽。所以在流媒体同步处理时以音频流为主媒体流,视频流为从媒体流,通过比较最近播放的音频帧和视频帧的播放时间标签,采用重复/丢弃视频帧的方式来取得音视频媒体间同步。

根据媒体流的可感知的QoS(P- QoS)[3]参数,对于音、视频两个相关媒体流的媒体单元所经历的时延偏移(skew) 在一定范围内,人们认为是同步的。研究表明,最近播放的音频帧i的播放时间标签ta(i)和最近播放的视频帧j的播放时间标签tv(j),存在下面三种关系。

1)当-80ms(音频滞后视频) ≤ ta(i)-tv(j) ≤+80ms(音频超前视频)之间时,多数观众都不会感到偏移的存在,这就是同步区域,不需要进行同步调整;

2)当| ta(i)-tv(j)|>160 ms,时,几乎所有观众都对播映不满意,这一区域称为失步区域,需要进行媒体间同步调整;

3)当80 ms

对于音频超前视频的情况,应加快视频流的播放。根据视觉暂留特性,采用复制帧的方式实现。由于本系统采用MPEG-4编码方式, 对视频流数据中数据帧采用前向补偿策略予以填充,即复制前一帧予以填充[4],以此保证视频帧与音频帧同步播放。

对于音频滞后视频的情况,应减小视频流的播放。通过采取选择性丢帧方式实现。MPEG-4采用I-VOP(帧内编码)、P-VOP(双向预测)、B-VOP(前向预测)三种编码方式。在丢帧处理时,应首选B-VOP帧(解码复杂,且不会影响后续帧的解码),其次是选择丢P-VOP帧(影响前后帧的解码),最后选择丢I-VOP帧。将丢帧“任务”均匀地分摊在从I帧开始到下一个I帧结束的所有视频序列所需时间,即一个GOV时间。具体步骤如下:

① 估计丢包率、延时、传输时间、网络带宽:

根据RTCP包中的RR和SR信息等可通过计算得到系统的丢包率、时延和抖动信息:

丢包率=1-接受包数目/预期包数目

D(i,j)=(Rj-Ri)-(Sj-Si)=(Rj-Sj)-(Ri-Si) [7]

J=J+(|D(i-1,i)|-J/16) [7]

[4]

其中,丢包率的计算是以传输过程中的某个时间段为基准,Ri表示第i个包的到达时刻;Si表示第i个包的RTP时间戳;D(i,j)表示为第i个报文与第j个报文的时延;而J表示时延抖动值;1/16是计算时延抖动的增益系数,避免网络抖动偶然性对计算值的影响; 是TCP吞吐量,网络可用带宽的估计值; MTU是最大报文长度;RTT是平均来回时间; ρ是平均报文丢失率。

② 选择性丢帧:

假设在一个GOV中,除了I帧外,后面跟有M个P帧,相邻I/P之间有N个B帧。LI为I帧的估计长度;LP为P帧的估计长度;LB为B帧的估计长度,单位都为比特,其值由具体应用程序指定和调整。另外,设每帧视频表现时间为T,则表现一个GOV周期所需时间为:(下转第3515页)

(上接第3513页)

TGOV=[1+M+(M+1)*N]*T[4]

当r

当时,要丢掉所有B帧和部分P帧。P帧应丢的帧数为。此时丢P帧的策略如下:当时,从后向前间隔丢帧,即依次将下标为奇数的P帧丢掉,直到丢满K帧为止。否则,在前面间隔丢帧的基础上,再从后向前依次丢帧,直至丢满K帧为止。因为在MPEG-4中,如果P帧解码所需的前一P/I帧丢失或未解码,解码器会自动参考与之最相邻的前一个的P/I帧来进行解码。否则

当 时,保留全部P帧,丢掉部分B帧。算出B帧应丢的帧数为。采取循环间隔丢帧策略:从后向前依次丢弃下标不能为2整除的B帧,若没有丢满K帧,则继续下一轮的间隔丢帧,即从后向前依次丢弃下标不能为4整除的B帧,依此类推,从后向前依次丢弃下标不能为2i(i为自然数)整除的B帧,直至丢满K帧为止。

4 结束语

提出了一种流媒体同步控制方案,并以具体项目为例,详细介绍了在接收端如何通过设置缓冲区来实现媒体流同步技术,并以音频为主媒体流,视频为从媒体流,比较音、视频帧的播放时间,对视频采用复制/丢帧方式来达到与音频帧同步的目的,并给出具体实现方法。结果表明,此方法能满足同步性能要求。

参考文献:

[1] 吴炜,常义林.在接收端实现的媒体同步控制算法[J].系统工程与电子技术,2006,28(10):1587-1591.

[2] 沈勇,张新荣.实时流媒体传输中客户终端系统缓冲区设计[J].微处理机,2005(5):89-91.

[3] 许延,常义林,刘增基.多媒体同步系统的缓冲区补偿技术[J].计算机学报,2003,26(4):484-490.

[4] 曹理宇,姚丹霖. MPEG-4流媒体系统中的视音频同步[J].计算机应用, 2005,25(1):128-131.

[5] 刘坚,屈卫东. 基于RTP的MPEG-4视频传输和多媒体同步[J]. 计算机应用与软件,2007,24(2):151-153.

[6] 吴炜,常义林,罗忠.一种新的媒体同步反馈控制算法[J]. 西安电子科技大学学报:自然科学版,2006,33(3):359-365.

[7] 柏海涛,张建州.基于MPEG-4实时视频传输系统的设计[J].现代计算,2005(207):39-43.

上一篇:枕式包装机上位机监控系统设计 下一篇:Flex RIA技术在ERP系统中的应用