CN102595202B - 一种多个媒体流同步的方法、装置及系统 - Google Patents
一种多个媒体流同步的方法、装置及系统 Download PDFInfo
- Publication number
- CN102595202B CN102595202B CN201110005073.6A CN201110005073A CN102595202B CN 102595202 B CN102595202 B CN 102595202B CN 201110005073 A CN201110005073 A CN 201110005073A CN 102595202 B CN102595202 B CN 102595202B
- Authority
- CN
- China
- Prior art keywords
- media stream
- timestamp
- rtp packet
- data
- rtp
- 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.)
- Expired - Fee Related
Links
- 229920004880 RTP PEK Polymers 0.000 claims abstract description 89
- 238000010009 beating Methods 0.000 claims description 10
- 238000000034 method Methods 0.000 claims description 10
- 238000005070 sampling Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000001360 synchronised Effects 0.000 description 4
- 230000000875 corresponding Effects 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 230000001429 stepping Effects 0.000 description 2
- 102100014142 SBSN Human genes 0.000 description 1
- 101700081571 SBSN Proteins 0.000 description 1
- 230000003139 buffering Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006011 modification reaction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Abstract
本发明提供了一种多个媒体流同步的方法、装置及系统,该方法包括:发送端在将多个媒体流封装为实时传送协议RTP数据包时,使用初始值相同、精度相同的时钟时间为RTP数据包打时间戳。该方法能够克服现有技术中多媒体流之间的同步稍嫌复杂的问题,进而降低客户端同步音视频的处理负荷和降低对实时控制协议RTCP的依赖。
Description
技术领域
本发明涉及多媒体领域,特别是一种多个媒体流同步的方法、装置及系统。
背景技术
在采用实时传送协议(Real-time Transport Protocol,简称RTP)进行媒体传输和媒体控制传输中,媒体分组包中携带有媒体的RTP时间戳(timestamp),如图1所示。该时间戳(32比特)反映了RTP数据包中第一个字节的采样时间。时钟频率依赖于负载数据格式,并在描述文件(profile)中进行描述。也可以通过RTP方法对负载格式动态描述。如果RTP包是周期性产生的,那么将使用由采样时钟决定的名义上的采样时刻,而不是读取系统时间。例如,对一个固定速率的音频,采样时钟将在每个周期内增加1。如果一个音频从输入设备中读取含有160个采样周期的块,那么对每个块,时间戳的值增加160。时间戳的初始值应当是随机的。几个连续的RTP包如果是同时产生的。如:属于同一个视频帧的RTP包,将有相同的时间戳。不同媒体流的RTP时间戳可能以不同的速率增长。而且会有独立的随机偏移量。因此,虽然这些时间戳足以重构一个单独的流的时间,但直接比较不同的媒体流的时间戳不能进行同步。
对于每一个媒体,我们可以把与采样时刻相关联的RTP时间戳与来自于参考时钟上的时间戳,例如采用网络时间协议(NTP)的时间戳相关联。NTP时间戳解决了RTP时间戳有随机偏移量的问题。参考时钟用于同步所有媒体的共同时间。这一时间戳对(RTP时间戳和NTP时间戳),用于判断RTP时间戳和NTP时间戳的对应关系,以进行媒体流的同步。它们不是在每一个数据包中都被发送,而在发送速率更低的实时控制协议(RTCP)的SR(发送者报告)中。
基于上述RTP同步机制,可以看出RTP的多个媒体流之间的同步是比较麻烦的。首先RTP本身所带的时戳并不具备时间同步的功能,它要依赖RTCP发送报告中携带的绝对时间(NTP时间戳)和对应的RTP时戳进行一个关联映射,才能得到各个媒体流的时间相关性。
发明内容
本发明要解决的技术问题是,提供一种多个媒体流同步的方法、装置及系统,通过在RFC3550定义的RTP头的基础上进行改进来解决当前RTP协议定义的时戳不能够独立承担进行多个媒体流同步的任务。
为了解决上述技术问题,本发明提出一种多个媒体流同步的方法,包括:
发送端在将多个媒体流封装为实时传送协议RTP数据包时,使用初始值相同、精度相同的时钟时间为RTP数据包打时间戳;所述发送端为RTP数据包打时间戳包括:
所述发送端分别为所述各媒体流维护一初始值相同的数据时长信息,并根据所述各媒体流被封装的数据时长,更新所述各媒体流的数据时长信息;
所述发送端在为一媒体流打时间戳时,将时间戳的值设置为所述时钟时间的初始值与该更新的各媒体流的数据时长信息之和。
进一步地,上述方法还可具有以下特点:
接收端在接收到所述RTP数据包后,解码出所述多个媒体流的数据,并根据所述RTP数据包中的时间戳对所述多个媒体流的数据进行同步处理。
进一步地,上述方法还可具有以下特点:
所述多个媒体流为视频流和/或音频流。
为了解决上述技术问题,本发明还提出一种多个媒体流同步的发送装置,包括:
打时间戳模块,用于在将多个媒体流封装为实时传送协议RTP数据包时,使用初始值相同、精度相同的时钟时间为RTP数据包打时间戳;所述打时间戳模块包括第一运算模块和第二运算模块,其中:
所述第一运算模块,用于分别为所述各媒体流维护一初始值相同的数据时长信息,并根据所述各媒体流被封装的数据时长,更新所述各媒体流的数据时长信息;
所述第二运算模块,用于在为一媒体流打时间戳时,将时间戳的值设置为所述时钟时间的初始值与该更新的各媒体流的数据时长信息之和;
发送模块,用于将打上所述时间戳的RTP数据包发送出去。
进一步地,上述装置还可具有以下特点:
所述多个媒体流为视频流和/或音频流。
为了解决上述技术问题,本发明还提出一种多个媒体流同步的系统,包括:
发送端,在将多个媒体流封装为实时传送协议RTP数据包时,使用初始值相同、精度相同的时钟时间为RTP数据包打时间戳;所述发送端为RTP数据包打时间戳包括:所述发送端分别为所述各媒体流维护一初始值相同的数据时长信息,并根据所述各媒体流被封装的数据时长,更新所述各媒体流的数据时长信息;所述发送端在为一媒体流打时间戳时,将时间戳的值设置为所述时钟时间的初始值与该更新的各媒体流的数据时长信息之和;
接收端,在接收到所述RTP数据包后,解码出所述多个媒体流的数据,并根据所述RTP数据包中的时间戳对所述多个媒体流的数据进行同步处理。
本发明提供的一种多个媒体流同步的方法、装置及系统,能够克服现有技术中多媒体流之间的同步稍嫌复杂的问题,进而降低客户端同步音视频的处理负荷和降低对RTCP的依赖。
附图说明
图1为RFC3550定义的RTP头的前12个字节的示意图;
图2为本发明实施例定义的RTP头的前12个字节;
图3为本发明实施例发送端为RTP数据包打时间戳的方法流程图;
图4为本发明实施例发送装置方框图;
图5为本发明实施例接收装置方框图;
图6为本发明应用实例生成NTP时戳的RTP打包的流程图;
图7为本发明应用实例使用NTP时戳进行同步的客户端处理的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明进行详细描述。
本发明实施例巧妙地在RFC3550定义的RTP头的基础上进行的一种改进来解决当前RTP协议定义的时戳不能够独立承担进行多个媒体流同步的任务。
如图1是RFC3550定义的标准的RTP头。图2为本实施例一定义的RTP头,对timestamp字段的计算方式重新定义。即,在打时间戳时,巧妙地提出使用初始值相同、精度相同(即具有相同的步进,度量的基准相同)的时钟时间为RTP数据包打时间戳的方案。从而实现了各媒体流的时间戳运算时采用同一基准、同一度量单位。
相应地,接收端在接收到所述RTP数据包后,解码出所述多个媒体流的数据后,根据对封装各媒体流的RTP数据包中的时间戳进行简单比较即可实现对所述多个媒体流的数据进行同步处理。
较佳地,所述发送端为RTP数据包打时间戳可以包括图3所示步骤:
步骤S301:所述发送端分别为所述各媒体流维护一初始值相同的数据时长信息,并根据所述各媒体流被封装的数据时长,更新所述各媒体流的数据时长信息;
步骤S302:所述发送端在为一媒体流打时间戳时,将时间戳的值设置为所述时钟时间的初始值与该媒体流的数据时长信息之和。
较佳地,所述多个媒体流为视频流和/或音频流:
所述发送端在为视频流的RTP包打时间戳的时机为:所述发送端在从视频流获取视频帧打成RTP包后,为该RTP包打时间戳。
所述发送端在为音频流的RTP包打时间戳的时机为:所述发送端在从音频流获取音频帧打成RTP包后,且该音频帧为所述RTP包中的首个帧时,才为该RTP包打时间戳。
为了实现上述方法,本发明实施例还提供了一种多个媒体流同步的发送装置,如图4所示,包括:
打时间戳模块,用于在将多个媒体流封装为实时传送协议RTP数据包时,使用初始值相同、精度相同的时钟时间为RTP数据包打时间戳;
发送模块,用于将打上所述时间戳的RTP数据包发送出去。
其中,所述打时间戳模块包括第一运算模块和第二运算模块,其中:
所述第一运算模块,用于分别为所述各媒体流维护一初始值相同的数据时长信息,并根据所述各媒体流被封装的数据时长,更新所述各媒体流的数据时长信息;
所述第二运算模块,用于在为一媒体流打时间戳时,将时间戳的值设置为所述时钟时间的初始值与该媒体流的数据时长信息之和。
其中,所述多个媒体流为视频流和/或音频流:
所述第二运算模块,在从视频流获取视频帧打成RTP包后,为该RTP包打时间戳;
所述第二运算模块,在从音频流获取音频帧打成RTP包后,且该音频帧为所述RTP包中的首个帧时,才为该RTP包打时间戳。
为了实现上述方法,本发明实施例还提供了一种多个媒体流同步的接收装置,如图5所示,包括:
解析模块,用于在接收到所述RTP数据包后,解码出所述多个媒体流的数据,以及封装各媒体流的RTP数据包中的时间戳,所述时间戳使用初始值相同、精度相同的时钟时间;
同步处理模块,用于根据所述封装各媒体流的RTP数据包中的时间戳对所述多个媒体流的数据进行同步处理。
为了实现上述方法,本发明实施例还提供了一种多个媒体流同步的接收系统,包括上述接收装置和上述发送装置。通过在发送端使用初始值相同、精度相同(即具有相同的步进,度量的基准相同)的时钟时间为RTP数据包打时间戳的方案,从而实现了各媒体流的时间戳运算时采用同一基准、同一度量单位。在接收端只需要对所述时间戳进行简单的比较处理,即可实现同步控制。
为了进一步说明本发明实施方案,在此以对包含一个音频流和一个视频流的多媒体流进行同步为一具体应用实例进行说明。
应用实例
如图6所述,使用本发明的生成NTP时戳的RTP打包的流程图。在其他应用实例中,也可以应用其他时钟时间打时间戳,只要能够保证所述时钟时间的初始值相同、精度相同即可。
因为音视频RTP打包是交替进行的,故本图中的步骤编号无严格的时间先后顺序。
步骤S601:定义一个初始NTP时间;
步骤S602:定义一个初始视频总时长,初始值设为0;
步骤S603:定义一个初始音频总时长,初始值设为0;
步骤S604:判断视频帧是否读取完毕,如果否,则进入步骤S605;如果是,则进入步骤S609;
步骤S605:读取视频帧;
步骤S606:获取该视频帧的时长;
步骤S607:将视频帧打成RTP包,RTP包头的NTP时间为NTP初始值加上视频帧总长;
步骤S608:视频总时长加上该视频帧的时长,返回步骤S604;
步骤S609:视频帧RTP打包结束;
步骤S610:判断音频帧是否读取完毕,如果是,则进入步骤S617,否则,进入步骤S611;
步骤S611:读取音频帧;
步骤S612:获取该音频帧的时长;
步骤S613:将该音频帧打成RTP包;
步骤S614:判断该帧是否为RTP包的第一帧,如果是,则进入步骤S615,否则,进入步骤S616;
步骤S615:该RTP的NTP时间为初始NTP时间加上音频的总时长;
步骤S616:音频总时长加上该音频帧的时长,返回步骤S610;
步骤S617:频帧RTP打包结束。
如图7所述,使用本发明应用实例使用NTP时戳进行同步的客户端处理的流程图。因为音视频解析是交替进行的,故本图中的步骤编号无严格的时间先后顺序。
步骤S701:解析收到的RTP视频包;
步骤S702:将解析后视频数据进行组帧操作,拼成一个完整的视频帧;
步骤S703:将视频帧送入缓冲区;
步骤S704:解码所述视频帧;
步骤S705:将解码后的视频数据送入缓冲区;
步骤S706:解析收到的RTP音频包;
步骤S707:将音频帧送入解码缓冲区;
步骤S708:解码所述音频帧;
步骤S709:将解码后的音频数据送入同步缓冲区;
步骤S710:根据所述RTP视频包和所述RTP音频包中的SBSN时戳进行音视频同步输出;
步骤S711:播放。
以上所述仅是本发明的优选实施方式,应当指出,只要是将RTP的时戳变换成同一基准同一度量单位的时间都在本发明的保护范围内。对于本技术领域的技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (6)
1.一种多个媒体流同步的方法,其特征在于,包括:
发送端在将多个媒体流封装为实时传送协议RTP数据包时,使用初始值相同、精度相同的时钟时间为RTP数据包打时间戳;所述发送端为RTP数据包打时间戳包括:
所述发送端分别为所述各媒体流维护一初始值相同的数据时长信息,并根据所述各媒体流被封装的数据时长,更新所述各媒体流的数据时长信息;
所述发送端在为一媒体流打时间戳时,将时间戳的值设置为所述时钟时间的初始值与更新的该媒体流的数据时长信息之和。
2.如权利要求1所述的方法,其特征在于:
接收端在接收到所述RTP数据包后,解码出所述多个媒体流的数据,并根据所述RTP数据包中的时间戳对所述多个媒体流的数据进行同步处理。
3.如权利要求1所述的方法,其特征在于:
所述多个媒体流为视频流和/或音频流。
4.一种多个媒体流同步的发送装置,其特征在于,包括:
打时间戳模块,用于在将多个媒体流封装为实时传送协议RTP数据包时,使用初始值相同、精度相同的时钟时间为RTP数据包打时间戳;所述打时间戳模块包括第一运算模块和第二运算模块,其中:
所述第一运算模块,用于分别为所述各媒体流维护一初始值相同的数据时长信息,并根据所述各媒体流被封装的数据时长,更新所述各媒体流的数据时长信息;
所述第二运算模块,用于在为一媒体流打时间戳时,将时间戳的值设置为所述时钟时间的初始值与更新的该媒体流的数据时长信息之和;
发送模块,用于将打上所述时间戳的RTP数据包发送出去。
5.如权利要求4所述的装置,其特征在于,所述多个媒体流为视频流和/或音频流。
6.一种多个媒体流同步的系统,其特征在于,包括:
发送端,在将多个媒体流封装为实时传送协议RTP数据包时,使用初始值相同、精度相同的时钟时间为RTP数据包打时间戳;所述发送端为RTP数据包打时间戳包括:所述发送端分别为所述各媒体流维护一初始值相同的数据时长信息,并根据所述各媒体流被封装的数据时长,更新所述各媒体流的数据时长信息;所述发送端在为一媒体流打时间戳时,将时间戳的值设置为所述时钟时间的初始值与更新的该媒体流的数据时长信息之和;
接收端,在接收到所述RTP数据包后,解码出所述多个媒体流的数据,并根据所述RTP数据包中的时间戳对所述多个媒体流的数据进行同步处理。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110005073.6A CN102595202B (zh) | 2011-01-11 | 一种多个媒体流同步的方法、装置及系统 | |
PCT/CN2012/070159 WO2012094974A1 (zh) | 2011-01-11 | 2012-01-10 | 一种多个媒体流同步的方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110005073.6A CN102595202B (zh) | 2011-01-11 | 一种多个媒体流同步的方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102595202A CN102595202A (zh) | 2012-07-18 |
CN102595202B true CN102595202B (zh) | 2016-12-14 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Rangan et al. | Continuity and synchronization in MPEG | |
CN103338386B (zh) | 基于简化时间戳的音视频同步方法 | |
EP1398931B1 (en) | Synchronous play-out of media data packets | |
CN102665141B (zh) | 一种基于rtp封装的avs音视频预同步方法 | |
CN102932676B (zh) | 基于音视频同步的自适应带宽传输和播放方法 | |
KR100916505B1 (ko) | 정상 재생 타임을 이용한 스케일러블 비디오 코딩 정보와어드밴스드 오디오 코딩 정보의 동기화 지원 방법 및 장치 | |
CN105379290B (zh) | 发送方法、接收方法、发送装置及接收装置 | |
CN103546662A (zh) | 一种网络监控系统中音视频同步方法 | |
CN101605252B (zh) | 将节目流转换成传输流的方法和系统 | |
CN107995503B (zh) | 音视频播放方法和装置 | |
CN109787703A (zh) | 一种时间戳的修正方法、时钟同步方法及系统 | |
CN104703054B (zh) | 通信装置和通信方法 | |
KR101200070B1 (ko) | 네트워크 시간표시정보를 삽입하거나 추출하기 위한 장치 및 방법 | |
CN102196319A (zh) | 一种流媒体直播业务系统及实现方法 | |
KR20110098830A (ko) | 외부 코프로세서를 포함하는 멀티플렉서에서의 전송 스트림 동기화를 위한 방법 | |
EP2068471A1 (en) | Method for emulating digital trunk TDM services over synchronous ethernet packets | |
CN101355531A (zh) | 一种消息发送、接收的方法、装置和设备 | |
CN101729908A (zh) | 一种传输流视音频同步复用方法 | |
CN108429596B (zh) | 一种用于IEEE 1588v2协议的以太网MAC模块实现装置及实现方法 | |
US11212333B1 (en) | Methods and apparatus for synchronizing transcoded and/or transrated RTP packets | |
US20100172374A1 (en) | System and method for transport of a constant bit rate stream | |
CN108259106A (zh) | 一种以太网无源光网络中的时戳处理方法和装置 | |
WO2012094974A1 (zh) | 一种多个媒体流同步的方法、装置及系统 | |
CN102595202B (zh) | 一种多个媒体流同步的方法、装置及系统 | |
Seo et al. | A new timing model design for MPEG Media Transport (MMT) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20161214 Termination date: 20210111 |