一种多路ip音视频流同步播放方法

文档序号:7808055阅读:689来源:国知局
专利名称:一种多路ip音视频流同步播放方法
技术领域
本发明属于IP音视频流还原播放领域,涉及到一种不同帧率,并且帧率随机改变的多路IP音视频流同步播放方法。
背景技术
网络音视频还原播放还是一个较新的技术领域,它是对提供音视频服务的软件进行多人音视频会话时产生的网络包还原播放,真实展现多人进行音视频通话场景,达到真实场景再现的效果,它需要相关联的多路画面多路声音同步播放的技术。网络中音视频数据十分复杂,音视频帧率随网络环境好坏,帧率、编码不断改变, 还存在大量丢包,重复包的情况,并且音视频软件种类繁多,能够对如此复杂网络音视频还原播放本身就存在很大的困难,它还得兼具较好的还原效果,这不仅要实现个体的声音和画面同步,还得实现个体与个体之间的通话同步,能够达到场景再现可谓难上加难。以往还原播放的方法只能支持特定的一种协议,比如能够实现SIP协议的同步方法不能适用于H264协议,达不到统一的方法。因为不同协议的音频或视频的帧率不同,并且中间过程帧率还会发生改变,不能采用固定一种方式播放。

发明内容
针对现有技术中存在的技术问题,本发明的目的在于提供一种多路IP音视频流同步播放方法;本发明的音视频IP包还原播放,能够实现个体的声音和画面同步,并实现个体与个体之间的通话同步,达到真实场景再现。本发明的主要技术内容如下数据读取线程1)处理网络IP包,根据不同协议采用不同方法对网络数据进行解析,解析出数据采样的绝对时间、携带的时间戳和实际音视频数据,根据时间戳计算出数据播放的时间长度,数据播放时间长度需采用二舍三入方法换算成5的倍数,网络VOIP包之间时间间隔一般为5ms IOms 20m 40ms,这里取5是这些数字的最小单位元。2)根据数据的IP、端口和媒体类型(音频或视频)三个因素来划分数据流,一路数据流用一个队列保存,将1)解析出的信息构造为队列结点插入到相应队列中,每个队列有一个时间字段记录播放等待时间,有一个总时间字段记录队列中所有数据播放时间总禾口。3)如果总时间字段大于1秒并且多媒体时钟未启动,则取当前所有队列的所有数据播放时间长度的最大公约数作为多媒体时钟的时间间隔启动多媒体时钟,根据比较各个队列队头数据出现的绝对时间,来计算出各队列播放等待时间的初始值,如果多媒体时钟已经启动不做任何处理。4)如果任意队列都未满则继续执行1),反之任意队列满,在此等待直到此队列有空间继续执行1)。
数据播放线程5)多媒体时钟定时触发,每次触发对所有队列进行做如下判断如果队列的播放等待时间小于等于0,则取这个队列的第一个结点进行播放并释放此结点空间,并将这个队列的播放等待时间置为所播放结点的播放时间长度;如果队列的播放等待时间大于0,则将此队列的播放等待时间减去多媒体时钟间隔时间长度。所述步骤1)绝对时间是指平时我们所说的时间,真实的时间,根据数据包来源不同获取方式也不同,如果数据源为sniffer或wirshark可以直接从它们提供的接口取得, 如果数据源为socket即为获取此数据的系统当前时间。所述步骤1)时间戳是数据包采样的相对时间,第一个数据的时间戳为随机值,后续数据的时间戳是前一个数据的时间戳加上采样间隔时间,最小有效单位为毫秒。所述步骤1)计算播放时间是采用相邻时间戳做差计算,如果做差结果等于0,第二个出现的包为重复包做丢掉处理,这种计算方法自动屏蔽了丢包的情况,如图2语音流第三个包后面丢失一个包,原本第三个包只能够播放30ms改为60ms,这样就补充了时间, 实现个体之间声音与画面的同步。所属步骤1)现实中网络情况复杂,经常会出现网络抖动的现象,发生网络抖动前最后一个包和发生网络抖动最开始的一个包播放时间计算方法需采用绝对时间做差。所述步骤1)人类听觉视觉停留时间较长,间隔40毫秒的连续图片人类就会看起来是流畅的,动画即是此原理,如果一帧提前或延后5毫秒人类是感觉不到的,所以精度设为5是可满足播放效果的。所述步骤2)队列中播放等待时间是判断播放线程是否可以从队列中取数据进行播放,如果等待时间大于0需要等待,如果等待时间小于等于0可直接读取队头数据播放。所述步骤2)队列中总播放时间长度是队列中所有结点的数据播放时间总长度总禾口。所述步骤幻等待时间的初始值计算方法,取得所有队列队头数据的绝对时间,以最早时间为参照时间,各队列队头的绝对时间减去参照时间即为此队列的初始播放等待时间,后续值为正在播放的数据的播放时间长度。所述步骤3)计算多媒体时钟时间间隔方法为,遍历出所有队列中单个数据播放时间长度出现过的所有值,取这些值的最大公约数作为多媒体时钟的时间间隔,此种方法对帧率不同能够自适应,屏蔽了可变帧率情况。所述步骤幻多媒体时钟定时依次访问每个队列,检查队列的播放等待时间,如果播放等待时间满足小于等于0,取队列第一个数据进行播放,并将队列播放等待时间置为此数据播放时间长度,如果不满足则播放等待时间减去多媒体时钟间隔时间长度。所述步骤5)此动作会定时触发,每次触发都要做此步骤所述动作。本发明的有益效果是网络音视频还原采用此同步方法,一种机制实现多种协议同步播放,采用较少的资源实现较多的功能,经测试采用此方法使用1个多媒体时钟可以达到32路以上音频或视频同步触发播放,众所周知多媒体时钟是系统稀有资源,同时开启多个多媒体时钟会造成时间不准确,进而播放速度忽慢忽快,采用此方法可以达到同时监控16个对象且不影响播放效果。


图1为本发明工作流程图示意图。图2为本发明音视频同步播放工作模型示意图。
具体实施例方式结合附图1,进一步阐述本发明的实施方案读取数据线程1)数据源可以为sniffer或wirshark文件里面的网络IP包,或者实时的网络IP 包;2)对网络IP包进行协议解析;3)封装音视频数据、播放时间长度、绝对时间为队列结点,根据IP端口等分别插入到相应队尾;4)队列数据播放时间总长度大于1秒并且多媒体时钟未开启,如果满足则开启多媒体时钟;5)队列未满,继续执行1);6)如果队列满一直等待,直到队列又有空间执行1);播放线程7)多媒体时钟定时依次访问每个队列,检查队列的播放等待时间,如果播放等待时间满足小于等于0,取队列第一个数据进行播放,并将队列播放等待时间置为此数据播放时间长度,如果不满足则播放等待时间减去多媒体时钟间隔时间长度。结合附图2,举例阐述本发明同步播放模块如何工作此图为三路音视频流同步播放情况,A是对象甲的视频,B为对象乙的视频,C为对象乙的音频。1)三路音视频流单个数据播放时间长度出现了 30、40、60,所以多媒体时钟间隔时间设为三数最大公约数102)队列初始播放等待时间,同步播放时间精度为毫秒,C路第一个包出现时间最早所以为0,A路比C路晚出现40毫秒所以为40,B路比C路晚出现20毫秒,所以是20。3)定时器定时访各个队列播放等待时间,如果队列播放等待时间小于等于0,取队头数据进行播放,并将此队列播放等待时间改为队头数据播放时间长度;如果播放等待时间大于0,则将队列播放等待时间减去多媒体时钟间隔时间。4)如图语音流第三个包后面丢失一个包,原本第三个包只能够播放30ms改为 60ms,这样就补充了时间,实现个体之间声音与画面的同步。
权利要求
1.一种多路IP音视频流同步播放方法,其步骤为1)数据读取线程根据网络IP数据包传输协议对接收的网络IP数据包进行解析,得到数据采样的绝对时间、携带的时间戳和音视频数据;并根据携带的时间戳计算数据播放的时间长度;2)数据读取线程根据网络IP数据包的IP、端口和数据类型将网络IP数据包划分为不同数据流,每一路数据流用一个队列保存,将1)解析出的信息构造为队列结点插入到相应队列中;3)在每一队列中设一播放等待时间字段、一记录队列中所有数据播放时间总和的总时间字段,如果某队列的总时间字段大于设定值T,则启动多媒体时钟;4)数据播放线程根据设定的多媒体时钟时间间隔,定时轮询所有队列如果某队列的播放等待时间小于或等于设定值t,则取该队列的第一个结点数据进行播放,并将该队列的播放等待时间置为所播放结点的播放时间长度;如果队列的播放等待时间大于t,则将该队列的播放等待时间减去多媒体时钟间隔时间长度。
2.如权利要求1所述的方法,其特征在于如果某一队列满,则等待该队列有空间后数据读取线程执行步骤1) 3)。
3.如权利要求1或2所述的方法,其特征在于采用相邻时间戳做差方法计算数据播放的时间长度,如果做差结果等于0,则丢掉其中一个网络IP数据包,并与后续相邻时间戳做差。
4.如权利要求3所述的方法,其特征在于如果发生网络抖动情况,发生网络抖动前接收的最后一个网络IP数据包的数据播放时间采用绝对时间做差计算。
5.如权利要求3所述的方法,其特征在于每一队列的播放等待时间初始值为取所有队列队头数据的绝对时间,以最早时间为参照时间,各队列队头的绝对时间减去该参照时间,得到相应队列的播放等待时间初始值。
6.如权利要求3所述的方法,其特征在于所述步骤3)中,如果某队列的总时间字段大于设定值T且多媒体时钟未启动,则取当前所有队列中单个数据播放时间长度的最大公约数作多媒体时钟的时间间隔。
7.如权利要求6所述的方法,其特征在于所述设定值T为1秒。
8.如权利要求6所述的方法,其特征在于所述设定值t为0。
9.如权利要求3所述的方法,其特征在于设定数据播放时间长度的精度为5毫秒,将计算的数据播放时间长度按照二舍三入方法换算为5的倍数。
全文摘要
本发明公开了一种多路IP音视频流同步播放方法,属于数字音视频技术领域。本方法为1)数据读取线程对接收的网络IP数据包进行解析,得到数据采样的绝对时间、时间戳和音视频数据;并计算数据播放的时间长度;2)数据读取线程根据数据包的IP、端口和数据类型将数据包划分为不同数据流,每一路数据流用一个队列保存;3)在每一队列中设一播放等待时间字段、一记录队列中所有数据播放时间总和的总时间字段,如果某队列总时间字段大于设定值T,则启动多媒体时钟;4)根据设定的多媒体时钟时间间隔,定时轮询所有队列,进行数据播放或更新队列的播放等待时间。本发明可实现对不同帧率,并且帧率随机改变的多路IP音视频流同步播放。
文档编号H04N21/643GK102547482SQ20111045341
公开日2012年7月4日 申请日期2011年12月30日 优先权日2011年12月30日
发明者杜明涛 申请人:北京锐安科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1