专利名称:流媒体终端的音频视频同步的方法
技术领域:
本发明涉及一种流媒体技术,多媒体技术,特别是涉及关于具有流媒体 功能的终端进行音频视频的同步方法。
背景技术:
流媒体是一种在网络上在线播放多媒体的技术。由于其边下载边播放的 特性,縮短了用户初始等待的延迟,但其数据也需要采用流式传输,具有较 高的实时需求。因此,比起一般的本地播放处理更为复杂。客户端是流媒体 系统中一个基本的组成部分, 一般是一个具有网络通信功能的播放器。音频 视频数据由于是分别传输的,所以,存在不同步的可能,这样,在播放时会 破坏服务质量,因此,需要在播放前取出数据时对音视频进行重同步,同步 方法的好坏直接决定了播放时的流畅程度。
发明内容
本发明的目的是提供一种方法,该方法能够对利用流媒体技术从网络服 务器端接收到的毫无相关的音频和视频数据进行同步。 本发明的目的是通过以下技术方案实现的
通过RTSP/RTP协议从网络流服务器得到的媒体数据流,首先需要进行 缓冲,等到有足够数据才可以开始进行播放,所以先需要有一个缓冲队列, 然后对从网络端来的数据进行存储,由于节省设备内存使用的目的,本发明
使用循环队列,当一帧数据解码播放完毕后,其占用的内存也就随即释放供 随后到来的数据使用。
当队列中的媒体数据流超过一定的阈值后,就可以开始对数据进行解码 并送到输出设备进行播放,在解码的同时继续接收网络端的流媒体数据。要 实现在线直播等功能,网络流服务器需要同时传输视频流和音频流,这两者 是没有相关性的,对于每一帧数据都有一个时间戳,终端就需要通过这个时 间戳来进行二者的同步,所以需要两个队列,当视频和音频流都达到预先分 别制定的阈值后,开始解码并播放。
对于终端用户而言,感受最直接的就是音频是否连续,由于音频对播放 速率的均匀性要求更严,因此,音频的播放是根据其本身的帧率按一定的速 率不断地取出数据进行播放的,对于音频和视频数据,各有一个队列的索引 值,到了开始解码的时间就对音频的索引值为O的帧进行解码播放,索引值 相应增加,当设备中的音频数据播放完毕立即将当前索引值的数据送到输出 设备进行播放,对于视频数据,判断当前索引值对应的数据帧的时间戳是否 大于当前视频数据的时间戳,来决定是否丢弃相关帧或者是否解码当前帧。
本发明的优点是用户初始延迟短,而且播放时流畅程度高。
图1为实施例的数据缓冲示意图。
图2为实施例的跳帧处理示意图。
图3为实施例的播放过程示意图。
具体实施例方式
如图1所示,步骤IOOO, 1000',网络端流媒体服务器传过来的数据 分为两类音频数据和视频数据,而且这些数据带有时间戳信息,步骤1001, 1001',将这些数据放入各自的缓冲队列,为了内存的再利用,本发明中使 用循环队列,当数据的存储到达队尾之后又从头开始存储。当各自队列中的 数据达到各自一定的阈值即步骤1002, 1002'之后就执行步骤1003开始解 码,否则,继续接收网络端的数据进入队列。接下来运行程序200,如图2所示,首先执行步骤2000,初始化音频和 视频数据队列的索引值Audio—index与Video—index,这两个值分别代表当前 需要解码的音频和视频数据位置,在同步的时候,以音频的播放时间为基准, 步骤2001首先取出音频的第一帧数据进行播放,以后每播放完一帧音频数 据就相应地做如下的同样的处理
步骤2002,取音频的数据,将索引值Audiojndex增加1,步骤2003, 2004~2008并得到取出的音频数据的时间戳,将其与当前索引值为 Videojndex的视频数据的时间戳进行比较,并计算出当前小于音频数据时 间戳的视频的帧数num,如果多于1帧,就必须进行丢帧的处理,以保证视 频能够跟上音频的播放速率。在做丢帧的动作时,需要将丢弃的帧所占的队 列内存释放,相应地,索引值Video—index往后移动num。如果num-l,就 取出当前的视频数据帧进行解码,索引值Video—index增加1,否则如果 num=0,表示当前还未到需要解码视频数据的时间,就不做任何动作。要注 意的是,在将索引值Audio—index与Video—index增加的时候,当他们的值 超过了预先给定的队列的长度时,需要重新置为O。
在音频数据播放的过程中,也需要时时地来做判断当前是否应该解码视 频数据,具体的过程如图3所示。首先执行步骤3000,对音频播放逝去的时 间Audio—elapse—time进行初始化,这个值记录当前共播放的音频的时间。然 后,执行步骤3001启动一个循环,首先执行步骤3002,判断当前是否已经 播放完毕,如果是,则执行步骤3003将Audio—elapse—time更新并重新去取 音频数据,此时重复图2的过程。否则执行步骤3004, 3005, 3006计算出 当前音频帧已经播放的时间time,然后把Audio—elapse—time + time与当前待 解码的视频数据的时间戳进行比较,如果前者大于等于后者,则开始解码当 前帧的视频,相应地,将索引值VideoJndex增加1,最后重新回到循环体。
可见,通过以上的过程可以很好地同步流媒体终端的音频视频数据。
权利要求
1. 一种流媒体终端的音视频数据的同步方法,包括步骤S1、对输入的数据流进行缓冲处理;S2、对输入的视频数据流进行跳帧处理;S3、播放过程的同步操作。
2、 根据权利要求1所述的流媒体终端的音视频数据的同步方法,其特征在于,通过RTSP/RTP协议从网络流服务器取得媒体数据流并进行缓冲与存储,所获取的媒体数据流包括不相关的带时间戳的音频数据和带时间戳的视频数据,它们分别存入音频缓冲器和视频缓冲器,经分别判断各自大于初始阈值后开始解码。
3、 根据权利要求1所述的流媒体终端的音视频数据的同步方法,其特征在于,所述的对视频数据流的跳帧处理是指先初始化音频索引Audio-index和Video-index,播放时,取出音频的数据,将索引值Audio-index加l,并取出音频数据的时间戳,计算出当前小于音频数据时间戳的视频帧数num,如果多于1帧便进行丢帧处理,以保证视频数据能跟上音频的播放速度。
4、 根据权利要求1所述的流媒体终端的音视频数据的同步方法,其特征在于,在音频数据的播放过程中,时时进行判断当前是否应该解码视频数 据,要启动循环体的解码判断,以同步流媒体终端的音视频数据。
全文摘要
一种流媒体终端的音视频的同步方法,包括步骤S<sub>1</sub>,对输入的数据流进行缓冲与存储处理;S<sub>2</sub>,对输入的视频数据帧进行跳帧处理;S<sub>3</sub>,播放过程的同步操作。本发明的优点是用户初始延迟短,而且播放时流畅程度高。
文档编号H04N7/62GK101207822SQ20061014783
公开日2008年6月25日 申请日期2006年12月22日 优先权日2006年12月22日
发明者荣 向 申请人:上海晨兴电子科技有限公司