一种实时视频监控系统中音视频数据的同步方法

文档序号:7860070阅读:434来源:国知局
专利名称:一种实时视频监控系统中音视频数据的同步方法
技术领域
本发明属于视频监控技术领域,尤其涉及一种实时视频监控系统中音视频数据的同步方法。
背景技术
随着计算机技术、网络技术、语音和视频编解码技术以及流媒体技术的不断发展与完善,视频监控业务在当今的网络时代取得了蓬勃的发展。如今,视频监控业务的重要性不言而喻,其应用领域包括城市安防、检验检疫、环境保护、气象检测、银行安保、商铺监控等等,甚至渗透到了家庭领域。在视频监控系统中,有些应用场所希望能在实时视频监控系统中加入音频,音频数据和视频数据同步的问题也就随之而来。视频监控系统中,音频数据和视频数据一般是分开传输的,这也是多媒体技术的 常规做法。这种分开传输必然给客户端的视频播放带来一个技术难点一视频数据和音频数据同步播放。现有的一些同步策略有的需要全网同步时钟,有点需要rtcp协议支持。但这些技术都比较复杂,并且没有考虑视频监控系统的应用需求。在实时视频监控系统中,因为视频的分辨率比较低,视频监控系统中的音频数据和视频数据的同步精度要求不会太高,即使音频数据和视频数据的偏差到达100ms,用户也不会感觉到不同步。但如果是高清视频或者超高清视频的话,音频数据和视频数据的偏差必须在80ms之内,否则观众是不能接收的。另一方面,高清视频和超高清视频是用来娱乐的,而视频监控是用来安防的,实时视频监控系统音视频数据即使有一点点失去同步,客户也是可以接收的,只要这种想象有限可控,而高清视频和超高清视频则不然。

发明内容
本发明的目的是针对现有技术的不足,提供一种实时视频监控系统中音视频数据的同步方法,
本发明解决其技术问题所采用的技术方案包括如下步骤
步骤(I).监控端采集t毫秒时长的音频数据和任意一帧视频数据,同时记录音频数据的第一个字节采集时刻的系统时间a_stime,记录该视频数据采集时刻的系统时间v_stime ;
所述的步骤(I)中V_stime将做为视频时间戳v_timestamp被保存到对应视频数据的rtp数据包包头的Timestamp字段,a_stime将做为音频时间戳a_timestamp被保存到对应音频数据的rtp数据包包头的Timestamp字段;
步骤(2).将步骤(I)采集到的音频数据和视频数据分别送入G. 711音频编码器和
H.264视频编码器进行编码,然后输出;
步骤(3).对G. 711音频编码器编码输出的音频流数据直接封装成RTP包,并将a_stime保存到RTP包头的Timestamp字段;对H. 264视频编码器编码后输出的视频流进行分析,找到视频图像的起始码,并计算得出视频图像数据大小;若该视频图像数据小于MTU (最大传输单元)则打成一个包;
若该视频图像数据大于MTU则采用分片封包模式,具体的分片方法完全按照RFC3984协议实现;
步骤(4).将视频图像数据封装成的RTP包和音频流数据封装成的RTP包通过UDP协议发送至手机端的不同端口;
步骤(5).手机端的两个不同端口分别接收视频图像数据封装成的RTP包和音频流数据封装成的RTP包,若接收的是视频图像数据RTP包则执行步骤¢),否则执行步骤(7);步骤(6).根据视频图像数据RTP包包头的timestamp字段,得到视频时间戳v_timestamp, RTP的荷载的第一个字节是NAL的头,若NAL头信息中TYPE等于28,则判断为分片包,执行步骤(9);若NAL头信息中TYPE不等于28,则判断为单片包,执行步骤(8);步骤⑵·根据音频流数据RTP包包头的timestamp字段,得到音频时间戳a_timestamp,并将解包后的音频流数据放入音频缓存队列中,并继续执行步骤(10);
步骤(8).将经过处理的视频图像数据包放入视频缓存队列中,并继续执行步骤(10);步骤(9).将属于同一个NAL单元的几个不同的视频分片包按照RFC3984协议标准合 并成一个完整的NAL视频单元,并执行步骤(8);
步骤(10).视频解码器从视频缓存队列中读取视频数据,获取视频数据中的SPS (序列参数集)和PPS (图像参数集),分析视频数据的首帧(I帧),获取视频数据的视频时间戳v_timestamp,并进行解码播放;
步骤(11).音频解码器从音频缓存队列读取音频数据,获取音频数据的音频时间戳3_timestamp ;
步骤(12).将视频时间戳v_timestamp作为参考时钟,并同步比较音频时间戳a_timestamp与视频时间戳v_timestamp,若音频时间戳a_timestamp与视频时间戳v_timestamp的差值大于门限值Tl,则音频数据不进行解码播放直接跳过;若音频时间戳a_timestamp与视频时间戳v_timestamp的差值大于门限值-Tl时,则音频数据读取线程暂停等待视频数据的处理;若音频时间戳a_timestamp与视频时间戳v_timestamp的差值在-Tl与Tl之间,则进行正常播放。本发明有益效果如下
本发明与传统音视频同步方法相比,通过大幅减小算法复杂度,同时同步精度也不会下降很多,完全可以满足视频监控的应用需求。它不需要全网同步时钟,不需要使用rtcp协议。之所以可以这样做,是因为视频监控目的在于安防,而不是娱乐,因此它的同步精度自然比高清视频等一些应用于娱乐的音视频业务的同步精度要求低一些。


图I是本发明中客户端播放数据时的数据播放队列示意 图2是本发明中客户端接收数据包的流程 图3是本发明中客户端处理视频数据包的流程 图4是本发明中客户端实现音视频同步播放的流程图。
具体实施方式
下面结合附图对本发明作进一步说明。本发明具体实施例仅仅用以解释本发明,并不用于限定本发明。本发明中,监控端每次采集20 ms音频数据和一帧视频数据,同时记录视频数据采集时刻的系统时间v_stime,记录音频数据的第一个字节采集时刻的系统时间a_stime。使用C库提供的函数gettimeofday O获得采集时间保存在struct timeval tv中。根据国外机构的研究结果表明,当音频数据和视频数据的偏差的-80ms至80ms之间时,人们认为音视频是同步的。因此我们只需要毫秒级精度的数据,而gettimeofday O得到的数据达到微妙级的精度。于是可以将tv. tvsec*1000+tv. tv_usec/1000做为音视频的采集时间保存到v_timestamp和a_timestamp中。将上述采集到的视频数据和音频数据分别送入H264视频编码器和G. 711音频编码器进行编码,然后输出。对上述输出的视频流进行分析,找到视频图像的起始码,计算出一帧图像数据的大小,如果该视频图像数据小于MTU (最大传输单元)则打成一个rtp包,如果视频图像数据大于MTU则采用分片封包模式,将该视频图像 数据封装成多个包,并将v_timestamp保存到RTP包头的Timestamp字段;将上述20 ms音频流数据封装成RTP包,并将a_timestamp保存到RTP包头的Timestamp字段,将上述打包好的数据通过UDP发送给客户端的不同端口上。客户端通过UDP协议进行数据包的接收,因此在接收的时候通过从不同端口接收的数据来区分视频包还是音频包,如图I所示,视频包和音频包的接收在两个不同的线程中执行。在播放时,客户端严格遵守以视频为基准,每次从音频播放队列取出一个音频数据后,都需要将该音频时间戳与正在播放的视频时间戳进行对比来判断播放与否。如图2所示,本发明中播放端接收数据具体流程如下
步骤S201中,监控端接收到命令开始发送数据,客户端开始接收进程等待数据包; 步骤S202中,从客户端端口中得到UDP数据包;
步骤S203中,根据数据包的接收端口的不同判断是否为视频数据包,是则执行步骤S204,否则执行步骤S205 ;
步骤S204中,将得到的视频数据包进行数据包的解析处理;
步骤S205中,将得到的音频数据包进行数据包的解析处理;
由于音频数据的打包规则不像视频数据那样繁琐,因此,在进行数据包的解析处理时只需要得到每个音频数据的时间戳,之后直接将音频数据包放入音频播放队列中。如图3所示,本发明中客户端对视频数据包处理流程具体如下
步骤S301中,从UDP数据包中得到视频图像数据RTP包;
步骤S302中,从得到的视频图像数据RTP包的包头中,根据监控端的打包规则判断是否为分片包,是则执行步骤S303,否则执行步骤S304 ;
步骤S303中,结合RTP头信息和NAL单元的头信息可以判断分片包是首包,中包还是尾包,客户端按照RFC3984协议标准将分片包重新组合成一个完整的NAL单元;
步骤S304中,得到的是一个完整的NAL视频单元,随后将NAL视频单元放入播放缓存队列中;
步骤S305中,系统需要判断客户端是否是刚开启,是则执行步骤S306,否则执行步骤S307 ;
步骤S306中,客户端刚运行的时候最先进入播放队列的需要是SPS帧、PPS帧、I帧,因此需要对NAL单元类型进行判断,是则执行步骤S307,否则返回步骤S301 ;
步骤S307中,将经过判断的NAL视频单元放入视频播放队列中。如图4所示,本发明中播放端在播放 进程中实现同步的流程具体如下
步骤S401中,启动视频播放进程;
步骤S402中,判断视频队列中是否有准备好的NAL视频单元,是则执行步骤S403,否则进程等待重新执行步骤S402 ;
步骤S403中,从播放队列中取出一个NAL视频单元,并取得视频数据;
步骤S404中,将得到的视频数据进行视频解码;
步骤S405中,将解码好的视频数据进行播放显示;
步骤S406中,启动音频播放进程;
步骤S407中,判断音频队列中是否有准备好的音频流数据单元,是则执行步骤S408,否则进程等待重新执行步骤S407 ;
步骤S408中,从播放队列中取出一个音频流数据单元,并取得音频数据;
步骤S409中,得到音频数据的时间戳a_timestamp,并且从步骤S403中得到视频时间的时间戳v_timestamp,并得到两者的差;
步骤S410中,将步骤S409中得到的差值与设定好的阀值进行比对,当差值大于上阀值的时候,线程进行等待,等待视频播放线程的进行并重新执行步骤S409;当差值小于下阀值的时候,丢弃该音频数据包返回步骤S407,当差值在上下两个阀值中间的时候则执行步骤 S411 ;
步骤S411中,将判断好的音频数据进行音频解码;
步骤S412中,将解码好的音频数据进行播放。所述的音频时间戳和视频时间戳都来自监控端系统时间,这是一种绝对时间戳,它们的粒度相同,可以直接比较;同时客户端以视频实时性为首要前提,因此客户端的播放是以视频播放为基准,视频数据的采集只为得到它的视频时间戳,不对该视频时间戳做处理,而是直接对视频数据进行解码播放。客户端在对音频数据进行播放时,在播放前会将正要播放的音频时间戳和正在播放的视频时间戳进行对比,当两者的差值在规定范围内则播放音频数据。
权利要求
1.一种实时视频监控系统中音视频数据的同步方法,其特征在于包括如下步骤 步骤(I).监控端采集t毫秒时长的音频数据和任意一帧视频数据,同时记录音频数据的第一个字节采集时刻的系统时间a_stime,记录该视频数据采集时刻的系统时间v_stime ; 所述的步骤(I)中V_stime将做为视频时间戳v_timestamp被保存到对应视频数据的rtp数据包包头的Timestamp字段,a_stime将做为音频时间戳a_timestamp被保存到对应音频数据的rtp数据包包头的Timestamp字段; 步骤(2).将步骤(I)采集到的音频数据和视频数据分别送入G. 711音频编码器和H.264视频编码器进行编码,然后输出; 步骤(3).对G. 711音频编码器编码输出的音频流数据直接封装成RTP包,并将a_stime保存到RTP包头的Timestamp字段;对H. 264视频编码器编码后输出的视频流进行分析,找到视频图像的起始码,并计算得出视频图像数据大小; 若该视频图像数据小于MTU则打成一个包; 若该视频图像数据大于MTU则采用分片封包模式,具体的分片方法完全按照RFC3984协议实现; 步骤(4).将视频图像数据封装成的RTP包和音频流数据封装成的RTP包通过UDP协议发送至手机端的不同端口; 步骤(5).手机端的两个不同端口分别接收视频图像数据封装成的RTP包和音频流数据封装成的RTP包,若接收的是视频图像数据RTP包则执行步骤¢),否则执行步骤(7);步骤(6).根据视频图像数据RTP包包头的timestamp字段,得到视频时间戳v_timestamp, RTP的荷载的第一个字节是NAL的头,若NAL头信息中TYPE等于28,则判断为分片包,执行步骤(9);若NAL头信息中TYPE不等于28,则判断为单片包,执行步骤(8);步骤⑵·根据音频流数据RTP包包头的timestamp字段,得到音频时间戳a_timestamp,并将解包后的音频流数据放入音频缓存队列中,并继续执行步骤(10); 步骤(8).将经过处理的视频图像数据包放入视频缓存队列中,并继续执行步骤(10);步骤(9).将属于同一个NAL单元的几个不同的视频分片包按照RFC3984协议标准合并成一个完整的NAL视频单元,并执行步骤(8); 步骤(10).视频解码器从视频缓存队列中读取视频数据,获取视频数据中的SPS和PPS,分析视频数据的首巾贞,获取视频数据的视频时间戳v_timestamp,并进行解码播放;步骤(11).音频解码器从音频缓存队列读取音频数据,获取音频数据的音频时间戳3_timestamp ; 步骤(12).将视频时间戳v_timestamp作为参考时钟,并同步比较音频时间戳a_timestamp与视频时间戳v_timestamp,若音频时间戳a_timestamp与视频时间戳v_timestamp的差值大于门限值Tl,则音频数据不进行解码播放直接跳过;若音频时间戳a_timestamp与视频时间戳v_timestamp的差值大于门限值-Tl时,则音频数据读取线程暂停等待视频数据的处理;若音频时间戳a_timestamp与视频时间戳v_timestamp的差值在-Tl与Tl之间,则进行正常播放。
全文摘要
本发明公开了一种实时视频监控系统中音视频数据的同步方法。本发明方法包括下述步骤监控端获取音频数据和视频数据的采集时间,编码音频数据和视频数据,并将它们的采集时间封装在各自的数据包中传送出去;客户端获取所述数据包,并对其进行解析和解压缩,按同步机制解码播放音频数据包和视频数据包。在本发明中,客户端获取监控端传来的数据后,将视频数据包和音频数据包分别按时间顺序放入视频缓存队列和音频缓存队列,根据同步精度要求对这些数据解压播放。本发明方法极大地减小音视频同步的算法复杂度,同时性能不会下降太多,完全能够满足视频监控的需要。
文档编号H04N21/8547GK102868939SQ20121033222
公开日2013年1月9日 申请日期2012年9月10日 优先权日2012年9月10日
发明者章坚武, 徐强, 吴超 申请人:杭州电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1