CN1787481A - 一种减小数据包播放延时的方法 - Google Patents

一种减小数据包播放延时的方法 Download PDF

Info

Publication number
CN1787481A
CN1787481A CNA2004100970108A CN200410097010A CN1787481A CN 1787481 A CN1787481 A CN 1787481A CN A2004100970108 A CNA2004100970108 A CN A2004100970108A CN 200410097010 A CN200410097010 A CN 200410097010A CN 1787481 A CN1787481 A CN 1787481A
Authority
CN
China
Prior art keywords
packet
play
thread
buffer memory
communication receiver
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.)
Granted
Application number
CNA2004100970108A
Other languages
English (en)
Other versions
CN1787481B (zh
Inventor
梁柱
王麒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN2004100970108A priority Critical patent/CN1787481B/zh
Publication of CN1787481A publication Critical patent/CN1787481A/zh
Application granted granted Critical
Publication of CN1787481B publication Critical patent/CN1787481B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种减小数据包播放延时的方法,该方法包括:在通信接收端播放数据包的一侧,按照播放数据包时间间隔,根据数据包在通信接收端缓存中的顺序,依次播放通信接收端缓存中的各个数据包;其中,该播放数据包时间间隔大于通信发送端的发送数据包时间间隔;在通信接收端接收数据包的一侧,通信接收端接收通信发送端发送的各个数据包,判断通信接收端中所缓存的数据包是否已经堆积到了预先设定的数量,如果是,则丢弃当前接收的数据包,否则,将当前接收的数据包按照数据包到达通信接收端的先后顺序依次缓存到通信接收端中。

Description

一种减小数据包播放延时的方法
技术领域
本发明涉及多媒体通信技术领域,尤其涉及一种减小数据包播放延时的方法。
背景技术
当前,基于网络的多媒体通信已经越来越多的应用到各个领域。以音频通信为例,多采用Windows操作系统提供的多媒体软件开发包(SDK)来实现端到端的语音通信。在实现过程中,语音通信的发送端利用SDK的应用编程接口(API)函数waveInStart获取语音,并将该语音以打包时长为单位切割为语音包,然后通过应用程序依次将各个语音包发送给语音通信的接收端;语音通信接收端接收到各个语音包之后,首先利用抖动缓存(JB)队列缓存接收到的语音包,以消除由于网络抖动而造成的语音包乱序或延时差异,该JB队列的出队线程以打包时长为间隔将各个缓存的数据包依次出队,每个数据包一旦出队,则立刻调用API函数waveOutWrite,将该数据包村放到系统提供的播放缓存中,以等待播放,播放缓存最终按照固定的时间间隔将各个数据包依次播放。
上述现有技术虽然能够实现端到端的语音通信,但是,其具有以下缺点:
在采用SDK实现语音通信的过程中,语音通信发送端处理语音的速度通常快于语音通信接收端实际播放语音的速度,也就是说,语音通信发送端以打包时长为间隔向语音通信接收端发送各个语音包,而语音通信接收端的播放缓存只能够以比打包时长稍长的时间作为时间间隔来播放各个语音包,这样,经过一段时间的累积,会在语音通信接收端的播放缓存中堆积过多的语音包,从而增大端到端语音通信的数据包播放延时,影响语音通信的服务质量(QOS)。
以采样率为8KHz,打包时长为60毫秒的语音通信为例,在该于语音通信持续进行15分钟之后,会出现将近2秒的数据包播放延时,从而严重影响了语音通信的QOS。
在采用SDK实现的其它多媒体通信中,由于通信发送端和接收端处理多媒体数据的速度不一致,因此,也会导致如上所述的数据包播放延时问题。
发明内容
有鉴于此,本发明的主要目的在于提供一种减小数据包播放延时的方法,以减小由于通信发送端和接收端处理数据速度不一致而导致的数据包播放延时问题。
为实现上述目的,本发明提供了一种减小数据包播放延时的方法,该方法包括:
在通信接收端播放数据包的一侧,按照播放数据包时间间隔,根据数据包在通信接收端缓存中的顺序,依次播放通信接收端缓存中的各个数据包;其中,该播放数据包时间间隔大于通信发送端的发送数据包时间间隔;
在通信接收端接收数据包的一侧,通信接收端接收通信发送端发送的各个数据包,判断通信接收端中所缓存的数据包是否已经堆积到了预先设定的数量,如果是,则丢弃当前接收的数据包,否则,将当前接收的数据包按照数据包到达通信接收端的先后顺序依次缓存到通信接收端中。
其中,所述将数据包缓存到通信接收端为:
将数据包缓存到具有有限缓存空间的缓存中;
所述判断所缓存的数据包是否已经堆积到了预先设定的数量为:
判断所缓存的数据包的数量是否已经达到该缓存所具有的有限缓存空间,如果是,则所缓存的数据包已经堆积到了预先设定的数量,否则,则所缓存的数据包还没有堆积到了预先设定的数量。
其中,所述缓存为抖动缓存(JB)队列,所述有限缓存空间为JB队列的长度;
所述通信接收端播放数据包一侧所执行的步骤为:
出JB线程判断系统当前是否正在播放一个数据包,如果是,则出JB线程按照数据包先进先出的顺序对当前应该出队的数据包执行出JB队列操作,并将出队的数据包存放到播放缓存中,播放缓存按照播放时间间隔播放各个数据包;否则,出JB线程不执行出JB队列操作;
所述通信接收端接收数据包一侧所执行的步骤为:
JB队列的入队线程接收到来自通信发送端所发送的一个数据包后,判断当前JB队列所缓存的数据包数量是否已经达到JB队列的长度,如果是,则丢弃掉当前接收的数据包,否则,JB队列的入队线程将当前接收到的数据包按照数据包到达顺序依次缓存到JB队列中。
其中,所述出JB线程判断系统当前是否正在播放一个数据包为:
播放反馈线程实时接收系统反馈的消息,判断是否接收到数据包播放反馈消息,如果是,则将播放信号量置为有信号播放状态,否则,保持播放信号量为无信号播放状态,出JB线程通过与播放反馈线程的实时交互获得播放信号量的状态,如果该信号量为有信号播放状态,则出队线程判断得到系统当前是否正在播放一个数据包。
其中,所述数据包播放反馈消息为系统反馈的WOM_DONE消息。
其中,所述将出队的数据包存放到播放缓存中为:
调用系统的应用编程接口函数waveOutWrite,将数据包存放到播放缓存中。
其中,所述数据包为语音包。
可见,在本发明中,当数据包在通信接收端堆积到预先设定的数量之后,丢弃当前接收到的数据包,并使该丢弃数据包之后的各个数据包分别提前播放,从而能够达到消除由于通信发送端和通信接收端处理数据包速度不一致而产生的数据包播放延时问题,以保证通信的QOS。
附图说明
图1为本发明一实施例中实现减小播放延时的示意图。
具体实施方式
本发明为一种减小数据包播放延时的方法,该方法通过判断通信接收端缓存中是否已经堆积了一定数量的数据包,来判断当前是否需要减小数据包播放延时,如果是,则通过丢弃数据包,并将该丢弃数据包之后的各个数据包分别提前播放,来减小数据包播放延时。
下面结合附图对本发明进行详细描述。
实现本发明,需要以下步骤:
在通信接收端播放数据包的一侧,按照播放数据包时间间隔,根据数据包在通信接收端缓存中先进先出的顺序,依次播放通信接收端缓存中的各个数据包;其中,该播放数据包时间间隔大于通信发送端的发送数据包时间间隔;
在通信接收端接收数据包的一侧,通信接收端接收通信发送端以发送数据包时间间隔所发送的各个数据包,判断通信接收端中所缓存的数据包是否已经堆积到了预先设定的数量,如果是,则丢弃当前接收的数据包,否则,将当前接收的数据包按照数据包到达通信接收端的先后顺序依次缓存到通信接收端中。
参见图1,在端到端的通信的具体应用中,通信接收端一般均设置有JB队列,以通过该JB队列缓存一定数量的数据包,来消除由于网络抖动而造成的乱序和语音包延时差异,从而保证通信的QOS。在该JB队列中,入JB线程用于接收来自通信发送端的数据包,并将数据包按照到达的先后顺序存放入JB队列;定时器用于控制出JB线程的执行间隔;出JB线程用于从JB队列中取出数据包,并将该数据包存放到播放缓存中以等待实际播放;在通信过程中,一旦一个数据包被实际播放,则系统会自动反馈一个WOM_DONE消息;下面以端到端的语音通信为例,具体说明如何结合上述的JB队列实现本发明的各个步骤,其中,语音通信中所传输以及播放的数据包为语音包:
(1)通信接收端播放数据包一侧所执行的步骤的具体实现:
参见图1,出JB线程判断系统是否反馈了WOM_DONE消息,如果是,表明系统当前正在播放一个语音包,则出JB线程按照语音包先进先出的顺序对当前应该出队的语音包执行出JB队列操作,并将出队的语音包存放到播放缓存中以等待实际播放;否则,出JB线程不执行出JB队列操作,直至系统反馈了WOM_DONE消息,再执行出JB队列操作;其中,在本发明实施例中,采用WOM_DONE消息作为数据包播放反馈消息,在本发明其它实施例中,还可以采用其它类型的消息作为数据包播放反馈消息,并不影响本发明的实现;
为实现方便,可以预先定义一个播放信号量,该信号量的状态包括有信号播放状态和无信号播放状态,在本实施例中,以信号量为1作为有信号播放状态,用以表示当前正在播放语音包,以信号量为0作为无信号播放状态,用以表示当前没有播放语音包,该信号量初始值为0;系统中的播放反馈线程实时接收系统反馈的消息,如果当前接收到系统反馈的WOM_DONE消息,则将播放信号量置为1,否则,保持播放信号量为0;出JB线程与播放反馈线程实时交互,判断播放信号量是否为1,如果是,则执行语音包出JB队列操作,并将语音包存放到播放缓存中以等待播放,同时,再将播放信号量重新置为0;否则,出JB线程不执行语音包出JB队列操作;其中,在本实施例中,通过调用系统的API函数waveOutWrite实现将语音包存放到播放缓存中的操作,在本发明其它实施例中,也可采用其它方式实现该操作,并不影响本发明的实现;
(2)通信接收端接收数据包一侧所执行的步骤的具体实现:
参见图1,JB队列的入队线程接收到来自语音通信发送端所发送的一个语音包后,判断当前JB队列所缓存的语音包数量是否已经达到JB队列自身的长度,如果是,表明所缓存的数据包已经达到预先设定的数量,则丢弃掉当前接收的语音包,否则,JB队列的入队线程将当前接收到的语音包按照语音包到达顺序依次缓存到JB队列中。
通过以上方式,当入JB队列速度快于出JB队列速度累积到一定程度时,即达到JB队列的长度时,通信接收端当前接收的语音包将进不了JB队列,这时,我们丢弃该语音包。这样,通过间隔性丢弃语音包来保证了数据包播放延时不会无限增大。并且,上述方案中的丢包机制不会出现连续的丢包,因为,当丢弃一个语音包时,入JB线程需要再经过语音包发送时间间隔才会再从网络上接收到一个语音包,而在这段时间内,系统必然会实际播出一个语音包,而出JB线程也必然会再从JB队列中取出一个语音包,所以,接下来的语音包在入JB线程中就可以进入JB队列而不会被丢弃。因此,这种丢包是间隔性的,实际测试中,如果采样率为8KHz,打包时长为60毫秒,则大概每隔1分钟(60000毫秒)丢弃一个语音包。这种长时间间隔丢弃一个语音包是可以容忍的,而换取的是,避免了语音包在系统缓存中堆积而导致的数据包播放延时过大的问题。
在以上所述实施例中,通过具有有限缓存空间的JB队列缓存数据包,在本发明其它实施例中,也可通过其它类型的具有有限缓存空间的缓存实现对接收到的数据包进行缓存,通过判断所缓存的数据包的数量是否已经达到该缓存所具有的有限缓存空间来判断数据包是否已经堆积到预先设定的数量,如果是,则所缓存的数据包已经堆积到了预先设定的数量,否则,则所缓存的数据包还没有堆积到了预先设定的数量。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1、一种减小数据包播放延时的方法,其特征在于,该方法包括:
在通信接收端播放数据包的一侧,按照播放数据包时间间隔,根据数据包在通信接收端缓存中的顺序,依次播放通信接收端缓存中的各个数据包;其中,该播放数据包时间间隔大于通信发送端的发送数据包时间间隔;
在通信接收端接收数据包的一侧,通信接收端接收通信发送端发送的各个数据包,判断通信接收端中所缓存的数据包是否已经堆积到了预先设定的数量,如果是,则丢弃当前接收的数据包,否则,将当前接收的数据包按照数据包到达通信接收端的先后顺序依次缓存到通信接收端中。
2、根据权利要求1所述的方法,其特征在于,所述将数据包缓存到通信接收端为:
将数据包缓存到具有有限缓存空间的缓存中;
所述判断所缓存的数据包是否已经堆积到了预先设定的数量为:
判断所缓存的数据包的数量是否已经达到该缓存所具有的有限缓存空间,如果是,则所缓存的数据包已经堆积到了预先设定的数量,否则,则所缓存的数据包还没有堆积到了预先设定的数量。
3、根据权利要求2所述的方法,其特征在于所述缓存为抖动缓存(JB)队列,所述有限缓存空间为JB队列的长度;
所述通信接收端播放数据包一侧所执行的步骤为:
出JB线程判断系统当前是否正在播放一个数据包,如果是,则出JB线程按照数据包先进先出的顺序对当前应该出队的数据包执行出JB队列操作,并将出队的数据包存放到播放缓存中,播放缓存按照播放时间间隔播放各个数据包;否则,出JB线程不执行出JB队列操作;
所述通信接收端接收数据包一侧所执行的步骤为:
JB队列的入队线程接收到来自通信发送端所发送的一个数据包后,判断当前JB队列所缓存的数据包数量是否已经达到JB队列的长度,如果是,则丢弃掉当前接收的数据包,否则,JB队列的入队线程将当前接收到的数据包按照数据包到达顺序依次缓存到JB队列中。
4、根据权利要求3所述的方法,其特征在于,所述出JB线程判断系统当前是否正在播放一个数据包为:
播放反馈线程实时接收系统反馈的消息,判断是否接收到数据包播放反馈消息,如果是,则将播放信号量置为有信号播放状态,否则,保持播放信号量为无信号播放状态,出JB线程通过与播放反馈线程的实时交互获得播放信号量的状态,如果该信号量为有信号播放状态,则出队线程判断得到系统当前是否正在播放一个数据包。
5、根据权利要求4所述的方法,其特征在于,所述数据包播放反馈消息为系统反馈的WOM_DONE消息。
6、根据权利要求3所述的方法,其特征在于,所述将出队的数据包存放到播放缓存中为:
调用系统的应用编程接口函数waveOutWrite,将数据包存放到播放缓存中。
7、根据权利要求1~6所述的方法,其特征在于,所述数据包为语音包。
CN2004100970108A 2004-12-08 2004-12-08 一种减小数据包播放延时的方法 Active CN1787481B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2004100970108A CN1787481B (zh) 2004-12-08 2004-12-08 一种减小数据包播放延时的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2004100970108A CN1787481B (zh) 2004-12-08 2004-12-08 一种减小数据包播放延时的方法

Publications (2)

Publication Number Publication Date
CN1787481A true CN1787481A (zh) 2006-06-14
CN1787481B CN1787481B (zh) 2010-04-28

Family

ID=36784797

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004100970108A Active CN1787481B (zh) 2004-12-08 2004-12-08 一种减小数据包播放延时的方法

Country Status (1)

Country Link
CN (1) CN1787481B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102244608A (zh) * 2011-06-09 2011-11-16 杭州米加科技有限公司 流媒体内容优先级自适应传输的方法
CN105451056A (zh) * 2015-11-20 2016-03-30 小米科技有限责任公司 音视频同步方法及装置
CN106603290A (zh) * 2016-12-15 2017-04-26 天津交控科技有限公司 一种网管软件性能调优处理方法及装置
WO2023045551A1 (zh) * 2021-09-26 2023-03-30 中兴通讯股份有限公司 摄像头控制方法、系统、电子设备和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002077233A (ja) * 2000-08-25 2002-03-15 Matsushita Electric Ind Co Ltd リアルタイム情報受信装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102244608A (zh) * 2011-06-09 2011-11-16 杭州米加科技有限公司 流媒体内容优先级自适应传输的方法
CN102244608B (zh) * 2011-06-09 2014-02-19 杭州米加科技有限公司 流媒体内容优先级自适应传输的方法
CN105451056A (zh) * 2015-11-20 2016-03-30 小米科技有限责任公司 音视频同步方法及装置
CN105451056B (zh) * 2015-11-20 2018-10-02 小米科技有限责任公司 音视频同步方法及装置
CN106603290A (zh) * 2016-12-15 2017-04-26 天津交控科技有限公司 一种网管软件性能调优处理方法及装置
WO2023045551A1 (zh) * 2021-09-26 2023-03-30 中兴通讯股份有限公司 摄像头控制方法、系统、电子设备和存储介质

Also Published As

Publication number Publication date
CN1787481B (zh) 2010-04-28

Similar Documents

Publication Publication Date Title
US20200153881A1 (en) Streaming media delivery system
US9967307B2 (en) Implementing a high quality VoIP device
US7162418B2 (en) Presentation-quality buffering process for real-time audio
US8327011B2 (en) Streaming media buffering system
US6977942B2 (en) Method and a device for timing the processing of data packets
US20030198184A1 (en) Method of dynamically determining real-time multimedia streaming rate over a communications networks
EP1671455A1 (en) Rate based congestion control for packet networks
US8867340B2 (en) Discarded packet indicator
CN109644162B (zh) 媒体缓冲
CN101040277A (zh) 用于流送媒体数据的方法
WO2004023706A1 (en) Method and devices for controlling retransmissions in data streaming
AU2005242613A1 (en) Cooperation between packetized data bit-rate adaptation and data packet re-transmission
CN1842052A (zh) 无线链路控制层的数据传输方法
US20040260828A1 (en) Streaming media buffering system
CN101075948A (zh) 一种实现实时流媒体节目可靠传输的方法
CN101854286A (zh) 基于用户数据报协议的数据流发送、接收方法及装置
US20130114621A1 (en) System and Method for Computer Originated Audio File Transmission
EP1829318A1 (en) System and method for enhancing audio quality for ip based systems using an amr payload format
CN1787481A (zh) 一种减小数据包播放延时的方法
EP1449378A2 (en) System and method for compensating packet delay variations
CN1791055B (zh) 一种减小数据包播放延时的方法
CN1555185A (zh) Ip手机
US20080170562A1 (en) Method and communication device for improving the performance of a VoIP call
CN1604572A (zh) 一种ip网络环境下的语义完整性保障的方法
Yang Phone Server: Design, Implementation and Performance Evaluation

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant