[发明专利]一种多路IP音视频流同步播放方法有效
申请号: | 201110453411.2 | 申请日: | 2011-12-30 |
公开(公告)号: | CN102547482A | 公开(公告)日: | 2012-07-04 |
发明(设计)人: | 杜明涛 | 申请(专利权)人: | 北京锐安科技有限公司 |
主分类号: | H04N21/8547 | 分类号: | H04N21/8547;H04N21/643 |
代理公司: | 北京君尚知识产权代理事务所(普通合伙) 11200 | 代理人: | 余功勋 |
地址: | 100044 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 ip 视频 同步 播放 方法 | ||
技术领域
本发明属于IP音视频流还原播放领域,涉及到一种不同帧率,并且帧率随机改变的多路IP音视频流同步播放方法。
背景技术
网络音视频还原播放还是一个较新的技术领域,它是对提供音视频服务的软件进行多人音视频会话时产生的网络包还原播放,真实展现多人进行音视频通话场景,达到真实场景再现的效果,它需要相关联的多路画面多路声音同步播放的技术。
网络中音视频数据十分复杂,音视频帧率随网络环境好坏,帧率、编码不断改变,还存在大量丢包,重复包的情况,并且音视频软件种类繁多,能够对如此复杂网络音视频还原播放本身就存在很大的困难,它还得兼具较好的还原效果,这不仅要实现个体的声音和画面同步,还得实现个体与个体之间的通话同步,能够达到场景再现可谓难上加难。
以往还原播放的方法只能支持特定的一种协议,比如能够实现SIP协议的同步方法不能适用于H264协议,达不到统一的方法。因为不同协议的音频或视频的帧率不同,并且中间过程帧率还会发生改变,不能采用固定一种方式播放。
发明内容
针对现有技术中存在的技术问题,本发明的目的在于提供一种多路IP音视频流同步播放方法;本发明的音视频IP包还原播放,能够实现个体的声音和画面同步,并实现个体与个体之间的通话同步,达到真实场景再现。
本发明的主要技术内容如下:
数据读取线程
1)处理网络IP包,根据不同协议采用不同方法对网络数据进行解析,解析出数据采样的绝对时间、携带的时间戳和实际音视频数据,根据时间戳计算出数据播放的时间长度,数据播放时间长度需采用二舍三入方法换算成5的倍数,网络VOIP包之间时间间隔一般为5ms 10ms 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)队列中总播放时间长度是队列中所有结点的数据播放时间总长度总和。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京锐安科技有限公司,未经北京锐安科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110453411.2/2.html,转载请声明来源钻瓜专利网。