CN107770124A - 一种ip语音缓冲区的动态控制方法及装置 - Google Patents
一种ip语音缓冲区的动态控制方法及装置 Download PDFInfo
- Publication number
- CN107770124A CN107770124A CN201610670378.1A CN201610670378A CN107770124A CN 107770124 A CN107770124 A CN 107770124A CN 201610670378 A CN201610670378 A CN 201610670378A CN 107770124 A CN107770124 A CN 107770124A
- Authority
- CN
- China
- Prior art keywords
- voice
- packet
- jitter
- play
- interval
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000003139 buffering effect Effects 0.000 title abstract description 4
- 239000000872 buffer Substances 0.000 claims abstract description 204
- 238000005070 sampling Methods 0.000 claims description 33
- 238000009499 grossing Methods 0.000 claims description 21
- 238000003491 array Methods 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 claims description 6
- 239000012742 immunoprecipitation (IP) buffer Substances 0.000 claims description 6
- 230000008602 contraction Effects 0.000 claims description 5
- 230000003111 delayed effect Effects 0.000 claims description 5
- JXASPPWQHFOWPL-UHFFFAOYSA-N Tamarixin Natural products C1=C(O)C(OC)=CC=C1C1=C(OC2C(C(O)C(O)C(CO)O2)O)C(=O)C2=C(O)C=C(O)C=C2O1 JXASPPWQHFOWPL-UHFFFAOYSA-N 0.000 claims description 4
- 238000003780 insertion Methods 0.000 claims description 4
- 230000037431 insertion Effects 0.000 claims description 4
- 230000001133 acceleration Effects 0.000 claims description 2
- 238000000151 deposition Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 7
- 230000003068 static effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000011217 control strategy Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1101—Session protocols
- H04L65/1104—Session initiation protocol [SIP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种IP语音缓冲区的动态控制方法及装置。通过对网络抖动进行统计,能够对延迟做出预测,在每次接收到IP语音包时均能快速改变缓冲区的大小,尽可能地降低语音延迟;在抖动变大时,通过减速播放增加缓冲区大小;在抖动变小时,通过加速播放减小缓冲区大小,进而能够减少语音失真。
Description
技术领域
本发明实施例涉及通信的技术领域,尤其涉及一种IP语音缓冲区的动态控制方法及装置。
背景技术
IP电话或网络电话(Voice Over Internet Protocol,VOIP)是将传统的语音信号封装为IP数据包的格式,通过Internet传输至目的地后,再将IP数据包还原为传统的语音信号并播放,从而现实语音通话服务。
与传统电话不同,IP电话并没有一条预先分配的专用逻辑线路用于传输语音,而使用分组交换技术。从IP协议的本质上讲,IP电话不能保证话音服务质量,该话音服务质量包括时延、抖动和丢包。对于分组丢失,数据业务可以采用重传来弥补,但VOIP是实时业务,对时延、抖动等有严格的要求,所以必须要有一定的QOS保证。时延和抖动是VOIP业务中最重要的QOS参数之一,直接影响语音质量,直接关系到语音是否能在接收端真实再现。因此,需要采用一定的算法和措施来消除时延和抖动的影响,保证语音质量。
通常通过在接收端设置一个缓冲区来消除网络的时延和抖动,缓冲区的主要思想是:每个数据包在网络的传输中的时延与其在缓冲区中缓冲的时延之和应该相等。抖动缓冲控制算法包括静态抖动缓冲控制算法和动态抖动缓冲控制算法两种。
静态抖动缓冲控制算法:缓冲区的大小在语音通话建立后一直到语音通话结束,均为固定值,对于抖动超出缓冲区大小的语音包将会丢弃。动态抖动缓冲控制算法:缓冲区的大小随实际网络抖动情况而变化。接收端将当前接收到的语音包的延迟与历史保存的延迟信息相比,得到当前网络的最大抖动,从而选择适当的缓冲区大小。
静态抖动缓冲控制算法模型简单,易于实现。其缺点是当网络抖动较大时丢包率高,而网络抖动较小时,语音延迟较大,不能很好地根据网络情况的变化来调整缓冲区的控制策略,而且初始状态对后续通话的影响很大。一般都选择采用动态抖动缓冲控制算法,能够克服静态抖动缓冲控制算法的缺点。但是传统的动态抖动缓冲控制算法,通常只是选取历史最大值作为缓冲区大小,没有充分利用统计信息,对网络抖动的变化适应不够及时,延迟仍然相对较大。同时,传统的动态抖动缓冲控制算法在抖动变大时,通过插入静音包来增加缓冲区大小;在抖动变小时,通过删除最老的语音包来减小缓冲区大小,这种做法会引起语音失真。
发明内容
本发明实施例的目的在于提出一种IP语音缓冲区的动态控制方法及装置,旨在解决如何能够减少语音失真的问题。
为达此目的,本发明实施例采用以下技术方案:
第一方面,一种IP语音缓冲区的动态控制方法,所述方法包括:
接收语音包,并将所述语音包存放在抖动缓冲区中,通过所述抖动缓冲区消除网络抖动,存放的语音包内容包括包头信息和语音payload,所述包头信息包括包序号和时戳,所述抖动缓冲区的容量由单个语音包的时长决定,所述抖动缓冲区被划分为若干个插槽,从0开始顺序编号,每个插槽存放一个语音包的内容;
从所述抖动缓冲区中获取所述语音包并解码出语音采样数据;
将解码后的语音采样数据存放在语音缓冲区,并提供给声卡播放,其中,所述语音缓冲区总共缓冲了2个语音包长度和10ms的采样数据,所述采样数据分为已播放和未播放两部分。
第二方面,一种IP语音缓冲区的动态控制装置,所述装置包括:
存储模块,用于接收语音包,并将所述语音包存放在抖动缓冲区中,通过所述抖动缓冲区消除网络抖动,存放的语音包内容包括包头信息和语音payload,所述包头信息包括包序号和时戳,所述抖动缓冲区的容量由单个语音包的时长决定,所述抖动缓冲区被划分为若干个插槽,从0开始顺序编号,每个插槽存放一个语音包的内容;
获取模块,用于从所述抖动缓冲区中获取所述语音包并解码出语音采样数据;
播放模块,用于将解码后的语音采样数据存放在语音缓冲区,并提供给声卡播放,其中,所述语音缓冲区总共缓冲了2个语音包长度和10ms的采样数据,所述采样数据分为已播放和未播放两部分。
本发明实施例提供一种IP语音缓冲区的动态控制方法及装置,接收语音包,并将所述语音包存放在抖动缓冲区中,通过所述抖动缓冲区消除网络抖动,存放的语音包内容包括包头信息和语音payload,所述包头信息包括包序号和时戳,所述抖动缓冲区的容量由单个语音包的时长决定,所述抖动缓冲区被划分为若干个插槽,从0开始顺序编号,每个插槽存放一个语音包的内容;从所述抖动缓冲区中获取所述语音包并解码出语音采样数据;将解码后的语音采样数据存放在语音缓冲区,并提供给声卡播放,其中,所述语音缓冲区总共缓冲了2个语音包长度和10ms的采样数据,所述采样数据分为已播放和未播放两部分,从而通过对网络抖动进行统计,能够对延迟做出预测,在每次接收到IP语音包时均能快速改变缓冲区的大小,尽可能地降低语音延迟;在抖动变大时,通过减速播放增加缓冲区大小;在抖动变小时,通过加速播放减小缓冲区大小,进而能够减少语音失真。
附图说明
图1是本发明实施例提供的一种IP语音缓冲区的动态控制方法的流程示意图;
图2是本发明实施例提供的一种语音缓冲区的结构示意图;
图3是本发明实施例提供的另一种语音缓冲区的结构示意图;
图4是本发明实施例提供的另一种语音缓冲区的结构示意图;
图5是本发明实施例提供的另一种语音缓冲区的结构示意图;
图6是本发明实施例提供的另一种语音缓冲区的结构示意图;
图7是本发明实施例提供的一种IP语音缓冲区的动态控制装置的功能模块示意图。
具体实施方式
下面结合附图和实施例对本发明实施例作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明实施例,而非对本发明实施例的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明实施例相关的部分而非全部结构。
参考图1,图1是本发明实施例提供的一种IP语音缓冲区的动态控制方法的流程示意图。
如图1所示,所述IP语音缓冲区的动态控制方法包括:
步骤101,接收语音包,并将所述语音包存放在抖动缓冲区中,通过所述抖动缓冲区消除网络抖动,存放的语音包内容包括包头信息和语音payload,所述包头信息包括包序号和时戳,所述抖动缓冲区的容量由单个语音包的时长决定,所述抖动缓冲区被划分为若干个插槽,从0开始顺序编号,每个插槽存放一个语音包的内容;
优选地,所述接收语音包,包括:
若是首次接收到所述语音包,则需要对整个系统进行初始化;
根据所述语音包的序号确定放入所述抖动缓冲区中的插槽编号,所述插槽编号=语音包序号mod抖动缓冲区容量;
若待插入的插槽为空,直接插入,否则需要根据接收到的语音包的序号进行处理。
优选地,所述需要根据接收到的语音包的序号进行处理,包括:
若新接收包序号=已有包序号,则直接丢弃新接收包,不进行插入处理;其它情况均表明抖动过大,需要清除所述抖动缓冲区的所有数据。
优选地,所述将所述语音包存放在抖动缓冲区中,包括:
设定一个计数器用于计算语音包的绝对间隔,并更新延迟分布,根据所述绝对间隔和更新后的延迟分布存储所述语音包。
优选地,所述设定一个计数器用于计算语音包的绝对间隔,包括:
初始所述计数器的值,并将所述计数器的值赋值为0;
每播放10ms的语音后,所述计数器增加10ms的采样数;
以语音包个数为单位计算来包间隔。
具体的,设定一个计数器packetIntervalCount用于计算语音包的绝对间隔,初始值为0。每播放10ms的语音后,该计数增加10ms的采样数,如果采样率是8000Hz,则增加8000/1000*10=80。计算来包间隔(以语音包个数为单位),Interval=packetIntervalCount/Lp,Lp是语音包的采样数,如20ms长的语音包,采样率8000Hz,Lp=8000/1000*20=160。提前到来的包Interval是0,正常到达的是1,延迟1个包到达的是2,以此类推,最大限制为64。计算完成后,packetIntervalCount清0。
优选地,所述更新延迟分布,包括:
更新平滑因子fn,n表示当前收到的包是第n个包;
通过所述平滑因子fn对历史值进行处理;
增大本次来包间隔Interval对应的概率;
调整本次计算结果,使得整个分布的概率之和近似为1。
具体的首,先更新平滑因子fn,n表示当前收到的包是第n个包。平滑因子fn由下面的公式计算。
然后用平滑因子fn对历史值进行处理。p'i=pi*fn,i=1,2,…64。其中pi表示来包间隔为i的历史概率。
增大本次来包间隔Interval对应的概率,p'Interval=pInterval+(1-fn),该算法的涉及思路为:根据时间的推移,计算得到平滑因子f,时间越长,f就越接近1(f的范围是0~1)。本次概率的增加是“历史概率*平滑因子+本次概率*(1-平滑因子)”,这里历史概率就是上一步的到的pi’,本次概率是1。每次统计的影响随着时间的推移,占比越来越少。
调整本次计算结果,使得整个分布的概率之和近似为1。假设调整前的概率之和调整方法如下。
优选地,所述接收语音包,并将所述语音包存放在抖动缓冲区中,通过所述抖动缓冲区消除网络抖动之后,还包括:
统计满足95%概率的峰值间隔;
用两个的数组来统计峰值,峰值数组用于记录峰值大小,峰值间隔数组用于记录峰值的间隔;
用所述计数器统计峰值间隔,初始值为0。
优选地,所述用所述计数器统计峰值间隔,包括:
每隔10ms随所述计数器的增加而增加,每次出现峰值间隔>2s时置0;
当峰值数组数据不足8个时,统计结果暂不生效;
当峰值间隔数值<1s,则将本次峰值结果存入数组,如果数组已满,则需要删除最旧的数据;
当1s<峰值间隔<2s,则不做处理;
当峰值间隔>2s,则清空两个数组,再将本次结果存入。
具体的,首先统计满足95%概率的Interval值,记为S。即满足式的最小的S。
用两个长度为8的数组来统计峰值,峰值数组用于记录峰值大小,峰值间隔数组用于记录峰值的间隔。用计数器peakIntervalCount来统计峰值间隔,初始值为0,具体做法是每隔10ms随packetIntervalCount的增加而增加,每次出现Interval>2S时置0。当峰值数组数据不足8个时,统计结果暂不生效。当出现Interval>2S时,若peakIntervalCount<1s,则将本次峰值结果存入数组,如果数组已满,则需要删除最旧的数据。若1s<peakIntervalCount<2s则不做处理。若peakIntervalCount>2s,则清空两个数组,再将本次结果存入。
步骤102,从所述抖动缓冲区中获取所述语音包并解码出语音采样数据;
优选地,所述从所述抖动缓冲区中获取所述语音包并解码出语音采样数据,包括:
若峰值统计数组已生效,且当前峰值间隔小于等于峰值间隔数组中最大值的2倍时,则参考值为max(S,峰值数组最大值);
获取抖动延迟平均值bufferLevelFilt。
具体的,若峰值统计数组已生效(包含8个数据),且当前peakIntervalCount小于等于峰值间隔数组中最大值的2倍时,参考值optBufferLevel=max(S,峰值数组最大值)。否则optBufferLevel=S。
若当前的间隔和历史统计的间隔差距过大(最大值的两倍),认为当前网络变化比较剧烈,直接用当前值S,否则用max(S,历史值)。
优选地,所述获取抖动延迟平均值,包括:
通过计算所述bufferLevelFilt;
其中,所述bufferLevelFilt初始值为0;
所述平滑因子f根据网络情况计算,S是满足95%概率的延迟大小;
所述Sampleleft是未被播放的采样数,包括抖动缓冲区中的语音包及语音缓冲区未播放的采样;
所述Lp是语音包的长度,单位是采样数。
优选地,所述获取抖动延迟平均值bufferLevelFilt之后,还包括:
若上一次语音播放进行了加速或减速操作,则需要根据语音的伸缩调整所述bufferLevelFilt。
优选地,所述若上一次语音播放进行了加速或减速操作,则需要根据语音的伸缩调整所述bufferLevelFilt,包括:
通过调整所述bufferLevelFilt;
其中,
所述Samplechanged
步骤103,将解码后的语音采样数据存放在语音缓冲区,并提供给声卡播放,其中,所述语音缓冲区总共缓冲了2个语音包长度和10ms的采样数据,所述采样数据分为已播放和未播放两部分。
优选地,所述将解码后的语音采样数据存放在语音缓冲区,并提供给声卡播放,包括:
每次播放时,将所述语音缓冲区的当前解码后的最新数据的相对时戳Tsplay作为参考;
再在所述抖动缓冲区中查找大于Tsplay的最小时戳Tsavailable;
若Tsplay=Tsavailable,则当前语音帧正常接收;
如果Tsavailable>Tsplay,则当前语音帧延迟或丢失;
具体的,如果Tsplay=Tsavailable,表明当前语音帧正常接收;如果Tsavailable>Tsplay,表明当前语音帧延迟或丢失。timeScaleHold初始为5,每发生一次加速或减速播放则减1,在连续5次正常播放后恢复为5。该参数是为了防止连续加速或减速播放引起的语音恶化。
若所述抖动缓冲区为空,则播放命令为丢包隐藏;
若所述抖动缓冲区不为空,且Tsplay=Tsavailable,上一次播放命令为丢包隐藏,则本次正常播放;
若所述抖动缓冲区不为空,且Tsplay=Tsavailable,上一次播放命令不为丢包隐藏,根据抖动预测值optBufferLevel和抖动延迟平均值bufferLevelFilt的关系确定本次播放命令。
如图2所示,抖动缓冲区,存放了语音ip包的头部和payload(未解码的语音),每个插槽存放一个ip包。语音缓冲区存放解码后的语音采样数据,每个插槽存放一个采样值。语音缓冲区有两个指针,curPosition是已播放和未播放数据的分界点,之前的数据已播放,之后的数据未播放。endTs是当前解码后的最新数据的相对时戳。curPosition和endTs初始都为0。
curPostion随着数据的播放更新,endTs在每次解码后更新。公式如下:
endTs=endTs+丢失语音长度+解码语音长度(单位是采样数)
举例说明如下:
开始时,如图3所示,语音缓冲区没有数据,所以需要从抖动缓冲区解码,根据endTs=0取到抖动缓冲区插槽0的数据解码,endTs=endTs+解码出的语音长度。
如图4所示,然后每10ms从语音缓冲区取数据播放,curPosition更新。此时语音缓冲区数据充足,不需要解码,endTs不更新。
如图5所示,播放一段时间后,语音缓冲区数据不足,需要解码,此时根据endTs找到抖动缓冲区插槽1的数据解码,endTs更新,endTs=endTs+解码出的语音长度(没有丢失语音)
如图6所示,如果此时抖动缓冲区插槽1未收到语音,则解码插槽2的数据,endTs=endTs+解码出的语音长度+丢失的语音长度。
优选地,所述根据抖动预测值和抖动延迟平均值的关系确定本次播放命令,包括:
若或timeScaleHold=0,则抖动延迟平均值在预测范围内,正常播放;
若timeScaleHold>0且则预测到较大抖动,而当前buf过小,需要减速播放增大buf;
若timeScaleHold>0且则预测到抖动较小,而当前buf过大,不需要这么大的buf,加速播放减小buf,目的是减小延时;
优选地,所述将解码后的语音采样数据存放在语音缓冲区,并提供给声卡播放,包括:
若Tsavailable>Tsplay,且上一次播放不为丢包隐藏,则本次播放命令为丢包隐藏;
若Tsavailable>Tsplay,且上一次播放为丢包隐藏,缓冲区大小小于预设阈值,则本次命令为丢包隐藏;
若Tsavailable<Tsplay+80*100且Tsavailable>Tsplay+80*N,N<10,其中N是当前丢包隐藏的次数,则丢包隐藏次数在门限值内,TS avaiable距离TSplay在门限值内,TS avaiable在已丢包隐藏的ts范围外,可以继续丢包隐藏,本次播放命令为丢包隐藏;
若Tsavailable<Tsplay+80*100且Tsavailable>Tsplay+80*N,N大于等于10,丢包隐藏次数超过门限值,不能再丢包隐藏了,本次播放命令为融合;
若Tsavailable<Tsplay+80*N,TS avaiable在已丢包隐藏的ts范围内,或TSavaiable距离TSplay超出门限值,本次播放命令为融合。
本发明实施例提供一种IP语音缓冲区的动态控制方法,接收语音包,并将所述语音包存放在抖动缓冲区中,通过所述抖动缓冲区消除网络抖动,存放的语音包内容包括包头信息和语音payload,所述包头信息包括包序号和时戳,所述抖动缓冲区的容量由单个语音包的时长决定,所述抖动缓冲区被划分为若干个插槽,从0开始顺序编号,每个插槽存放一个语音包的内容;从所述抖动缓冲区中获取所述语音包并解码出语音采样数据;将解码后的语音采样数据存放在语音缓冲区,并提供给声卡播放,其中,所述语音缓冲区总共缓冲了2个语音包长度和10ms的采样数据,所述采样数据分为已播放和未播放两部分,从而通过对网络抖动进行统计,能够对延迟做出预测,在每次接收到IP语音包时均能快速改变缓冲区的大小,尽可能地降低语音延迟;在抖动变大时,通过减速播放增加缓冲区大小;在抖动变小时,通过加速播放减小缓冲区大小,进而能够减少语音失真。
在此,给出本发明一种IP语音缓冲区的动态控制方法的三个实例。
实例一,本次通话语音采样率8000Hz,单个语音包长度20ms。收到语音包后,根据序号计算应放入抖动缓冲区的位置为seq%300,此位置为空,将语音包放入抖动缓冲区。计算来包间隔Interval=packetIntervalCount/20*80,根据下面的公式更新平滑因子。
此时收到的是第10个包,则f10=0.956807。对历史分布进行处理,p'i=pi*f10,i=1,2,…64。增大计算得到的Interval对应的概率,pI'nterval=pInterval+(1-f10)。然后计算并根据下式调整概率,
使得所有的概率之和近似为1。统计满足95%概率的Interval值,记为S。本次Interval<2S,不需要更新峰值数组和峰值间隔数组。此时峰值数组数据不足8个,暂未生效,预测延迟optBufferLevel=S。
根据S选取因子f,然后计算当前bufferLevelFilt'
当前缓冲区Tsplay=Tsavailable,
且满足正常播放。
实例二,本次通话语音采样率8000Hz,单个语音包长度20ms。收到语音包后,根据序号计算应放入抖动缓冲区的位置为seq%300,此位置为空,将语音包放入抖动缓冲区。计算来包间隔Interval=packetIntervalCount/20*80,根据下面的公式更新平滑因子。
此时收到的是第1000个包,则f1000=0.99900。对历史分布进行处理,pi'=pi*f1000,i=1,2,…64。增大计算得到的Interval对应的概率,pI'nterval=pInterval+(1-f1000)。然后计算并根据下式调整概率,
使得所有的概率之和近似为1。统计满足95%概率的Interval值,记为S。本次Interval>2S,peakIntervalCount<1s需要更新峰值数组和峰值间隔数组。此时峰值数组已满,需要删除掉最旧的一个数据。预测延迟optBufferLevel=max(S,峰值间隔数组最大值)。
根据S选取因子f,然后计算当前bufferLevelFilt'
当前缓冲区Tsplay=Tsavailable,
且满足timeScaleHold>0,加速播放。
实例三,本次通话语音采样率8000Hz,单个语音包长度20ms。收到语音包后,根据序号计算应放入抖动缓冲区的位置为seq%300,此位置为空,将语音包放入抖动缓冲区。计算来包间隔Interval=packetIntervalCount/20*80,根据下面的公式更新平滑因子。
此时收到的是第1000个包,则f1000=0.99900。对历史分布进行处理,p'i=pi*f1000,i=1,2,…64。增大计算得到的Interval对应的概率,pI'nterval=pInterval+(1-f1000)。然后计算并根据下式调整概率,
使得所有的概率之和近似为1。统计满足95%概率的Interval值,记为S。本次Interval>2S,peakIntervalCount<1s需要更新峰值数组和峰值间隔数组。此时峰值数组已满,需要删除掉最旧的一个数据。预测延迟optBufferLevel=max(S,峰值间隔数组最大值)。
根据S选取因子f,然后计算当前bufferLevelFilt'
当前缓冲区Tsplay>Tsavailable,且上次播放不为丢包隐藏,本次播放命令为丢包隐藏。
参考图7,图7是本发明实施例提供的一种IP语音缓冲区的动态控制装置的功能模块示意图。
如图7所示,所述装置包括:
存储模块701,用于接收语音包,并将所述语音包存放在抖动缓冲区中,通过所述抖动缓冲区消除网络抖动,存放的语音包内容包括包头信息和语音payload,所述包头信息包括包序号和时戳,所述抖动缓冲区的容量由单个语音包的时长决定,所述抖动缓冲区被划分为若干个插槽,从0开始顺序编号,每个插槽存放一个语音包的内容;
获取模块702,用于从所述抖动缓冲区中获取所述语音包并解码出语音采样数据;
播放模块703,用于将解码后的语音采样数据存放在语音缓冲区,并提供给声卡播放,其中,所述语音缓冲区总共缓冲了2个语音包长度和10ms的采样数据,所述采样数据分为已播放和未播放两部分。
优选地,所述存储模块701,还具体用于:
若是首次接收到所述语音包,则需要对整个系统进行初始化;
根据所述语音包的序号确定放入所述抖动缓冲区中的插槽编号,所述插槽编号=语音包序号mod抖动缓冲区容量;
若待插入的插槽为空,直接插入,否则需要根据接收到的语音包的序号进行处理。
优选地,所述存储模块701,还具体用于:
若新接收包序号=已有包序号,则直接丢弃新接收包,不进行插入处理;其它情况均表明抖动过大,需要清除所述抖动缓冲区的所有数据。
优选地,所述存储模块,还具体用于:
设定一个计数器用于计算语音包的绝对间隔,并更新延迟分布,根据所述绝对间隔和更新后的延迟分布存储所述语音包。
优选地,所述存储模块701,还具体用于:
初始所述计数器的值,并将所述计数器的值赋值为0;
每播放10ms的语音后,所述计数器增加10ms的采样数;
以语音包个数为单位计算来包间隔。
优选地,所述存储模块701,还具体用于:
更新平滑因子fn,n表示当前收到的包是第n个包;
通过所述平滑因子fn对历史值进行处理;
增大本次来包间隔Interval对应的概率;
调整本次计算结果,使得整个分布的概率之和近似为1。
优选地,所装置还包括:
统计模块,用于在接收语音包,并将所述语音包存放在抖动缓冲区中,通过所述抖动缓冲区消除网络抖动之后,统计满足95%概率的峰值间隔;用两个的数组来统计峰值,峰值数组用于记录峰值大小,峰值间隔数组用于记录峰值的间隔;用所述计数器统计峰值间隔,初始值为0。
优选地,所述统计模块,还具体用于:
每隔10ms随所述计数器的增加而增加,每次出现峰值间隔>2s时置0;
当峰值数组数据不足8个时,统计结果暂不生效;
当峰值间隔数值<1s,则将本次峰值结果存入数组,如果数组已满,则需要删除最旧的数据;
当1s<峰值间隔<2s,则不做处理;
当峰值间隔>2s,则清空两个数组,再将本次结果存入。
优选地,所述获取模块702,具体用于:
若峰值统计数组已生效,且当前峰值间隔小于等于峰值间隔数组中最大值的2倍时,则参考值为max(S,峰值数组最大值);
获取抖动延迟平均值bufferLevelFilt。
优选地,所述获取模块702,还具体用于:
通过计算所述bufferLevelFilt;
其中,所述bufferLevelFilt初始值为0;
所述平滑因子f根据网络情况计算,S是满足95%概率的延迟大小;
所述Sampleleft是未被播放的采样数,包括抖动缓冲区中的语音包及语音缓冲区未播放的采样;
所述Lp是语音包的长度,单位是采样数。
优选地,所述装置还包括:
调整模块,用于在获取抖动延迟平均值bufferLevelFilt之后,若上一次语音播放进行了加速或减速操作,则需要根据语音的伸缩调整所述bufferLevelFilt。
优选地,所述调整模块还具体用于:
通过调整所述bufferLevelFilt;
其中,
所述Samplechanged
优选地,所述播放模块703,还具体用于:
每次播放时,将所述语音缓冲区的当前解码后的最新数据的相对时戳Tsplay作为参考;
再在所述抖动缓冲区中查找大于Tsplay的最小时戳Tsavailable;
若Tsplay=Tsavailable,则当前语音帧正常接收;
如果Tsavailable>Tsplay,则当前语音帧延迟或丢失;
若所述抖动缓冲区为空,则播放命令为丢包隐藏;
若所述抖动缓冲区不为空,且Tsplay=Tsavailable,上一次播放命令为丢包隐藏,则本次正常播放;
若所述抖动缓冲区不为空,且Tsplay=Tsavailable,上一次播放命令不为丢包隐藏,根据抖动预测值optBufferLevel和抖动延迟平均值bufferLevelFilt的关系确定本次播放命令。
优选地,所述播放模块703,还具体用于:
若或timeScaleHold=0,则正常播放。
若timeScaleHold>0且则减速播放;
若timeScaleHold>0且则加速播放。
优选地,所述播放模块703,还具体用于:
若Tsavailable>Tsplay,且上一次播放不为丢包隐藏,则本次播放命令为丢包隐藏;
若Tsavailable>Tsplay,且上一次播放为丢包隐藏,缓冲区大小小于预设阈值,则本次命令为丢包隐藏;
若Tsavailable<Tsplay+80*100且Tsavailable>Tsplay+80*N,N<10,其中N是当前丢包隐藏的次数,则本次播放命令为丢包隐藏;
若Tsavailable<Tsplay+80*100且Tsavailable>Tsplay+80*N,N大于等于10,本次播放命令为融合;
若Tsavailable<Tsplay+80*N,本次播放命令为融合。
本发明实施例提供一种IP语音缓冲区的动态控制装置,接收语音包,并将所述语音包存放在抖动缓冲区中,通过所述抖动缓冲区消除网络抖动,存放的语音包内容包括包头信息和语音payload,所述包头信息包括包序号和时戳,所述抖动缓冲区的容量由单个语音包的时长决定,所述抖动缓冲区被划分为若干个插槽,从0开始顺序编号,每个插槽存放一个语音包的内容;从所述抖动缓冲区中获取所述语音包并解码出语音采样数据;将解码后的语音采样数据存放在语音缓冲区,并提供给声卡播放,其中,所述语音缓冲区总共缓冲了2个语音包长度和10ms的采样数据,所述采样数据分为已播放和未播放两部分,从而通过对网络抖动进行统计,能够对延迟做出预测,在每次接收到IP语音包时均能快速改变缓冲区的大小,尽可能地降低语音延迟;在抖动变大时,通过减速播放增加缓冲区大小;在抖动变小时,通过加速播放减小缓冲区大小,进而能够减少语音失真。
以上结合具体实施例描述了本发明实施例的技术原理。这些描述只是为了解释本发明实施例的原理,而不能以任何方式解释为对本发明实施例保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明实施例的其它具体实施方式,这些方式都将落入本发明实施例的保护范围之内。
Claims (30)
1.一种IP语音缓冲区的动态控制方法,其特征在于,所述方法包括:
接收语音包,并将所述语音包存放在抖动缓冲区中,通过所述抖动缓冲区消除网络抖动,存放的语音包内容包括包头信息和语音payload,所述包头信息包括包序号和时戳,所述抖动缓冲区的容量由单个语音包的时长决定,所述抖动缓冲区被划分为若干个插槽,从0开始顺序编号,每个插槽存放一个语音包的内容;
从所述抖动缓冲区中获取所述语音包并解码出语音采样数据;
将解码后的语音采样数据存放在语音缓冲区,并提供给声卡播放,其中,所述语音缓冲区总共缓冲了2个语音包长度和10ms的采样数据,所述采样数据分为已播放和未播放两部分。
2.根据权利要求1所述的方法,其特征在于,所述接收语音包,包括:
若是首次接收到所述语音包,则需要对整个系统进行初始化;
根据所述语音包的序号确定放入所述抖动缓冲区中的插槽编号,所述插槽编号=语音包序号mod抖动缓冲区容量;
若待插入的插槽为空,直接插入,否则需要根据接收到的语音包的序号进行处理。
3.根据权利要求2所述的方法,其特征在于,所述需要根据接收到的语音包的序号进行处理,包括:
若新接收包序号=已有包序号,则直接丢弃新接收包,不进行插入处理;其它情况均表明抖动过大,需要清除所述抖动缓冲区的所有数据。
4.根据权利要求1所述的方法,其特征在于,所述将所述语音包存放在抖动缓冲区中,包括:
设定一个计数器用于计算语音包的绝对间隔,并更新延迟分布,根据所述绝对间隔和更新后的延迟分布存储所述语音包。
5.根据权利要求4所述的方法,其特征在于,所述设定一个计数器用于计算语音包的绝对间隔,包括:
初始所述计数器的值,并将所述计数器的值赋值为0;
每播放10ms的语音后,所述计数器增加10ms的采样数;
以语音包个数为单位计算来包间隔。
6.据权利要求4所述的方法,其特征在于,所述更新延迟分布,包括:
更新平滑因子fn,n表示当前收到的包是第n个包;
通过所述平滑因子fn对历史值进行处理;
增大本次来包间隔Interval对应的概率;
调整本次计算结果,使得整个分布的概率之和近似为1。
7.根据权利要求6所述的方法,其特征在于,所述接收语音包,并将所述语音包存放在抖动缓冲区中,通过所述抖动缓冲区消除网络抖动之后,还包括:
统计满足95%概率的峰值间隔;
用两个的数组来统计峰值,峰值数组用于记录峰值大小,峰值间隔数组用于记录峰值的间隔;
用所述计数器统计峰值间隔,初始值为0。
8.根据权利要求7所述的方法,其特征在于,所述用所述计数器统计峰值间隔,包括:
每隔10ms随所述计数器的增加而增加,每次出现峰值间隔>2s时置0;
当峰值数组数据不足8个时,统计结果暂不生效;
当峰值间隔数值<1s,则将本次峰值结果存入数组,如果数组已满,则需要删除最旧的数据;
当1s<峰值间隔<2s,则不做处理;
当峰值间隔>2s,则清空两个数组,再将本次结果存入。
9.根据权利要求8所述的方法,其特征在于,所述从所述抖动缓冲区中获取所述语音包并解码出语音采样数据,包括:
若峰值统计数组已生效,且当前峰值间隔小于等于峰值间隔数组中最大值的2倍时,则参考值为max(S,峰值数组最大值);
获取抖动延迟平均值bufferLevelFilt。
10.根据权利要求9所述的方法,其特征在于,所述获取抖动延迟平均值,包括:
通过计算所述bufferLevelFilt;
其中,所述bufferLevelFilt初始值为0;
所述平滑因子f根据网络情况计算;
所述Sampleleft是未被播放的采样数,包括抖动缓冲区中的语音包及语音缓冲区未播放的采样;
所述Lp是语音包的长度,单位是采样数。
11.根据权利要求10所述的方法,其特征在于,所述获取抖动延迟平均值bufferLevelFilt之后,还包括:
若上一次语音播放进行了加速或减速操作,则需要根据语音的伸缩调整所述bufferLevelFilt。
12.根据权利要求11所述的方法,其特征在于,所述若上一次语音播放进行了加速或减速操作,则需要根据语音的伸缩调整所述bufferLevelFilt,包括:
通过调整所述bufferLevelFilt;
其中,
所述
13.根据权利要求1至12任意一项所述的方法,其特征在于,所述将解码后的语音采样数据存放在语音缓冲区,并提供给声卡播放,包括:
每次播放时,将所述语音缓冲区的当前解码后的最新数据的相对时戳Tsplay作为参考;
再在所述抖动缓冲区中查找大于Tsplay的最小时戳Tsavailable;
若Tsplay=Tsavailable,则当前语音帧正常接收;
如果Tsavailable>Tsplay,则当前语音帧延迟或丢失;
若所述抖动缓冲区为空,则播放命令为丢包隐藏;
若所述抖动缓冲区不为空,且Tsplay=Tsavailable,上一次播放命令为丢包隐藏,则本次正常播放;
若所述抖动缓冲区不为空,且Tsplay=Tsavailable,上一次播放命令不为丢包隐藏,根据抖动预测值optBufferLevel和抖动延迟平均值bufferLevelFilt的关系确定本次播放命令。
14.根据权利要求13所述的方法,其特征在于,所述根据抖动预测值和抖动延迟平均值的关系确定本次播放命令,包括:
若或timeScaleHold=0,则正常播放。
若timeScaleHold>0且则减速播放;
若timeScaleHold>0且则加速播放。
15.根据权利要求13所述的方法,其特征在于,所述将解码后的语音采样数据存放在语音缓冲区,并提供给声卡播放,包括:
若Tsavailable>Tsplay,且上一次播放不为丢包隐藏,则本次播放命令为丢包隐藏;
若Tsavailable>Tsplay,且上一次播放为丢包隐藏,缓冲区大小小于预设阈值,则本次命令为丢包隐藏;
若Tsavailable<Tsplay+80*100且Tsavailable>Tsplay+80*N,N<10,其中N是当前丢包隐藏的次数,则本次播放命令为丢包隐藏;
若Tsavailable<Tsplay+80*100且Tsavailable>Tsplay+80*N,N大于等于10,本次播放命令为融合;
若Tsavailable<Tsplay+80*N,本次播放命令为融合。
16.一种IP语音缓冲区的动态控制装置,其特征在于,所述装置包括:
存储模块,用于接收语音包,并将所述语音包存放在抖动缓冲区中,通过所述抖动缓冲区消除网络抖动,存放的语音包内容包括包头信息和语音payload,所述包头信息包括包序号和时戳,所述抖动缓冲区的容量由单个语音包的时长决定,所述抖动缓冲区被划分为若干个插槽,从0开始顺序编号,每个插槽存放一个语音包的内容;
获取模块,用于从所述抖动缓冲区中获取所述语音包并解码出语音采样数据;
播放模块,用于将解码后的语音采样数据存放在语音缓冲区,并提供给声卡播放,其中,所述语音缓冲区总共缓冲了2个语音包长度和10ms的采样数据,所述采样数据分为已播放和未播放两部分。
17.根据权利要求16所述的装置,其特征在于,所述存储模块,还具体用于:
若是首次接收到所述语音包,则需要对整个系统进行初始化;
根据所述语音包的序号确定放入所述抖动缓冲区中的插槽编号,所述插槽编号=语音包序号mod抖动缓冲区容量;
若待插入的插槽为空,直接插入,否则需要根据接收到的语音包的序号进行处理。
18.根据权利要求17所述的装置,其特征在于,所述存储模块,还具体用于:
若新接收包序号=已有包序号,则直接丢弃新接收包,不进行插入处理;其它情况均表明抖动过大,需要清除所述抖动缓冲区的所有数据。
19.根据权利要求16所述的装置,其特征在于,所述存储模块,还具体用于:
设定一个计数器用于计算语音包的绝对间隔,并更新延迟分布,根据所述绝对间隔和更新后的延迟分布存储所述语音包。
20.根据权利要求19所述的装置,其特征在于,所述存储模块,还具体用于:
初始所述计数器的值,并将所述计数器的值赋值为0;
每播放10ms的语音后,所述计数器增加10ms的采样数;
以语音包个数为单位计算来包间隔。
21.据权利要求19所述的装置,其特征在于,所述存储模块,还具体用于:
更新平滑因子fn,n表示当前收到的包是第n个包;
通过所述平滑因子fn对历史值进行处理;
增大本次来包间隔Interval对应的概率;
调整本次计算结果,使得整个分布的概率之和近似为1。
22.根据权利要求21所述的装置,其特征在于,所装置还包括:
统计模块,用于在接收语音包,并将所述语音包存放在抖动缓冲区中,通过所述抖动缓冲区消除网络抖动之后,统计满足95%概率的峰值间隔;用两个的数组来统计峰值,峰值数组用于记录峰值大小,峰值间隔数组用于记录峰值的间隔;用所述计数器统计峰值间隔,初始值为0。
23.根据权利要求22所述的装置,其特征在于,所述统计模块,还具体用于:
每隔10ms随所述计数器的增加而增加,每次出现峰值间隔>2s时置0;
当峰值数组数据不足8个时,统计结果暂不生效;
当峰值间隔数值<1s,则将本次峰值结果存入数组,如果数组已满,则需要删除最旧的数据;
当1s<峰值间隔<2s,则不做处理;
当峰值间隔>2s,则清空两个数组,再将本次结果存入。
24.根据权利要求23所述的装置,其特征在于,所述获取模块,具体用于:
若峰值统计数组已生效,且当前峰值间隔小于等于峰值间隔数组中最大值的2倍时,则参考值为max(S,峰值数组最大值);
获取抖动延迟平均值bufferLevelFilt。
25.根据权利要求24所述的装置,其特征在于,所述获取模块,还具体用于:
通过计算所述bufferLevelFilt;
其中,所述bufferLevelFilt初始值为0;
所述平滑因子f根据网络情况计算;
所述Sampleleft是未被播放的采样数,包括抖动缓冲区中的语音包及语音缓冲区未播放的采样;
所述Lp是语音包的长度,单位是采样数。
26.根据权利要求25所述的装置,其特征在于,所述装置还包括:
调整模块,用于在获取抖动延迟平均值bufferLevelFilt之后,若上一次语音播放进行了加速或减速操作,则需要根据语音的伸缩调整所述bufferLevelFilt。
27.根据权利要求26所述的装置,其特征在于,所述调整模块还具体用于:
通过调整所述bufferLevelFilt;
其中,
所述
28.根据权利要求16至27任意一项所述的装置,其特征在于,所述播放模块,还具体用于:
每次播放时,将所述语音缓冲区的当前解码后的最新数据的相对时戳Tsplay作为参考;
再在所述抖动缓冲区中查找大于Tsplay的最小时戳Tsavailable;
若Tsplay=Tsavailable,则当前语音帧正常接收;
如果Tsavailable>Tsplay,则当前语音帧延迟或丢失;
若所述抖动缓冲区为空,则播放命令为丢包隐藏;
若所述抖动缓冲区不为空,且Tsplay=Tsavailable,上一次播放命令为丢包隐藏,则本次正常播放;
若所述抖动缓冲区不为空,且Tsplay=Tsavailable,上一次播放命令不为丢包隐藏,根据抖动预测值optBufferLevel和抖动延迟平均值bufferLevelFilt的关系确定本次播放命令。
29.根据权利要求28所述的装置,其特征在于,所述播放模块,还具体用于:
若或timeScaleHold=0,则正常播放。
若timeScaleHold>0且则减速播放;
若timeScaleHold>0且则加速播放。
30.根据权利要求28所述的装置,其特征在于,所述播放模块,还具体用于:
若Tsavailable>Tsplay,且上一次播放不为丢包隐藏,则本次播放命令为丢包隐藏;
若Tsavailable>Tsplay,且上一次播放为丢包隐藏,缓冲区大小小于预设阈值,则本次命令为丢包隐藏;
若Tsavailable<Tsplay+80*100且Tsavailable>Tsplay+80*N,N<10,其中N是当前丢包隐藏的次数,则本次播放命令为丢包隐藏;
若Tsavailable<Tsplay+80*100且Tsavailable>Tsplay+80*N,N大于等于10,本次播放命令为融合;
若Tsavailable<Tsplay+80*N,本次播放命令为融合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610670378.1A CN107770124A (zh) | 2016-08-15 | 2016-08-15 | 一种ip语音缓冲区的动态控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610670378.1A CN107770124A (zh) | 2016-08-15 | 2016-08-15 | 一种ip语音缓冲区的动态控制方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107770124A true CN107770124A (zh) | 2018-03-06 |
Family
ID=61259880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610670378.1A Withdrawn CN107770124A (zh) | 2016-08-15 | 2016-08-15 | 一种ip语音缓冲区的动态控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107770124A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109379168A (zh) * | 2018-11-23 | 2019-02-22 | 竞技世界(北京)网络技术有限公司 | 一种用于前端实时语音聊天的语音平滑播放方法 |
CN109639532A (zh) * | 2018-12-29 | 2019-04-16 | 贵阳朗玛信息技术股份有限公司 | 一种快速缩减抖动缓冲区的方法及装置 |
CN111711992A (zh) * | 2020-06-23 | 2020-09-25 | 瓴盛科技有限公司 | Cs语音下行链路抖动的校准方法 |
CN112637016A (zh) * | 2020-12-24 | 2021-04-09 | 百果园技术(新加坡)有限公司 | 一种网络延时更新方法、系统、电子设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1464685A (zh) * | 2002-06-13 | 2003-12-31 | 优创科技(深圳)有限公司 | 一种在网络终端缓冲区中处理音频流回放的方法 |
CN1578255A (zh) * | 2003-07-29 | 2005-02-09 | 上海贝尔阿尔卡特股份有限公司 | 一种用于包交换网络的自适应时钟恢复方法 |
CN1581844A (zh) * | 2003-08-15 | 2005-02-16 | 上海贝尔阿尔卡特股份有限公司 | 一种分组交换网络分布式自适应抖动缓冲区调整方法 |
CN1599352A (zh) * | 2003-09-17 | 2005-03-23 | 上海贝尔阿尔卡特股份有限公司 | 一种分组交换网络自适应抖动缓冲区调整方法 |
CN101119323A (zh) * | 2007-09-21 | 2008-02-06 | 腾讯科技(深圳)有限公司 | 解决网络抖动的方法及装置 |
CN101582832A (zh) * | 2008-05-17 | 2009-11-18 | 红杉树(杭州)信息技术有限公司 | VoIP抖动缓冲区的动态处理方法 |
CN102739503A (zh) * | 2011-04-01 | 2012-10-17 | 华平信息技术股份有限公司 | VoIP去抖动缓冲区的处理方法 |
CN102761468A (zh) * | 2011-04-26 | 2012-10-31 | 中兴通讯股份有限公司 | 一种自适应调整语音抖动缓存区的方法及系统 |
-
2016
- 2016-08-15 CN CN201610670378.1A patent/CN107770124A/zh not_active Withdrawn
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1464685A (zh) * | 2002-06-13 | 2003-12-31 | 优创科技(深圳)有限公司 | 一种在网络终端缓冲区中处理音频流回放的方法 |
CN1578255A (zh) * | 2003-07-29 | 2005-02-09 | 上海贝尔阿尔卡特股份有限公司 | 一种用于包交换网络的自适应时钟恢复方法 |
CN1581844A (zh) * | 2003-08-15 | 2005-02-16 | 上海贝尔阿尔卡特股份有限公司 | 一种分组交换网络分布式自适应抖动缓冲区调整方法 |
CN1599352A (zh) * | 2003-09-17 | 2005-03-23 | 上海贝尔阿尔卡特股份有限公司 | 一种分组交换网络自适应抖动缓冲区调整方法 |
CN101119323A (zh) * | 2007-09-21 | 2008-02-06 | 腾讯科技(深圳)有限公司 | 解决网络抖动的方法及装置 |
CN101582832A (zh) * | 2008-05-17 | 2009-11-18 | 红杉树(杭州)信息技术有限公司 | VoIP抖动缓冲区的动态处理方法 |
CN102739503A (zh) * | 2011-04-01 | 2012-10-17 | 华平信息技术股份有限公司 | VoIP去抖动缓冲区的处理方法 |
CN102761468A (zh) * | 2011-04-26 | 2012-10-31 | 中兴通讯股份有限公司 | 一种自适应调整语音抖动缓存区的方法及系统 |
Non-Patent Citations (1)
Title |
---|
吴江锐: ""WebRTC语音引擎中NetEQ技术的研究"", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109379168A (zh) * | 2018-11-23 | 2019-02-22 | 竞技世界(北京)网络技术有限公司 | 一种用于前端实时语音聊天的语音平滑播放方法 |
CN109379168B (zh) * | 2018-11-23 | 2021-04-13 | 竞技世界(北京)网络技术有限公司 | 一种用于前端实时语音聊天的语音平滑播放方法 |
CN109639532A (zh) * | 2018-12-29 | 2019-04-16 | 贵阳朗玛信息技术股份有限公司 | 一种快速缩减抖动缓冲区的方法及装置 |
CN111711992A (zh) * | 2020-06-23 | 2020-09-25 | 瓴盛科技有限公司 | Cs语音下行链路抖动的校准方法 |
CN111711992B (zh) * | 2020-06-23 | 2023-05-02 | 瓴盛科技有限公司 | Cs语音下行链路抖动的校准方法 |
CN112637016A (zh) * | 2020-12-24 | 2021-04-09 | 百果园技术(新加坡)有限公司 | 一种网络延时更新方法、系统、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Liang et al. | Adaptive playout scheduling using time-scale modification in packet voice communications | |
US7359324B1 (en) | Adaptive jitter buffer control | |
US8279884B1 (en) | Integrated adaptive jitter buffer | |
US7079486B2 (en) | Adaptive threshold based jitter buffer management for packetized data | |
US6693921B1 (en) | System for use of packet statistics in de-jitter delay adaption in a packet network | |
EP2936770B1 (en) | Apparatus and methods for controlling jitter buffer | |
JP4838273B2 (ja) | メディア内同期化のための適応型メディア再生方法および装置 | |
US7324444B1 (en) | Adaptive playout scheduling for multimedia communication | |
KR101877699B1 (ko) | 지터-제거 버퍼 업데이트 | |
EP2140635B1 (en) | Method and apparatus for modifying playback timing of talkspurts within a sentence without affecting intelligibility | |
JP5153891B2 (ja) | ネットワーク・ノードのための簡易な適応ジッタ・バッファリング・アルゴリズム | |
CN107770124A (zh) | 一种ip语音缓冲区的动态控制方法及装置 | |
US20050207342A1 (en) | Communication terminal device, communication terminal receiving method, communication system and gateway | |
US20070263672A1 (en) | Adaptive jitter management control in decoder | |
WO2009039783A1 (fr) | Procédé et dispositif de traitement pour caractère de temps de retard de réseau | |
JP2002077233A (ja) | リアルタイム情報受信装置 | |
US20100290454A1 (en) | Play-Out Delay Estimation | |
JP4782973B2 (ja) | オーディオおよびビデオ信号の同期化 | |
CN1564984A (zh) | 网络媒体播放 | |
EP1754327A2 (en) | Jitter buffer management | |
JP2006140984A (ja) | 特定メディアデータの破棄を制御する送信装置及び送信プログラム | |
CN111355975A (zh) | 一种直播客户端音视频延时调节播放系统及方法 | |
EP1931068A1 (en) | Method of adaptively dejittering packetized signals buffered at the receiver of a communication network node | |
EP2084873B1 (en) | Network jitter smoothing with reduced delay | |
CN108540855B (zh) | 一种适用于网络直播场景下的自适应低延时流媒体播放方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20180306 |
|
WW01 | Invention patent application withdrawn after publication |