CN105142002A - 音/视频直播方法、装置及控制方法、装置 - Google Patents

音/视频直播方法、装置及控制方法、装置 Download PDF

Info

Publication number
CN105142002A
CN105142002A CN201510483445.4A CN201510483445A CN105142002A CN 105142002 A CN105142002 A CN 105142002A CN 201510483445 A CN201510483445 A CN 201510483445A CN 105142002 A CN105142002 A CN 105142002A
Authority
CN
China
Prior art keywords
duration
buffer
value
data duration
delay variation
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
CN201510483445.4A
Other languages
English (en)
Other versions
CN105142002B (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.)
Guangzhou Boguan Information Technology Co Ltd
Original Assignee
Guangzhou Boguan Information Technology 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 Guangzhou Boguan Information Technology Co Ltd filed Critical Guangzhou Boguan Information Technology Co Ltd
Priority to CN201510483445.4A priority Critical patent/CN105142002B/zh
Publication of CN105142002A publication Critical patent/CN105142002A/zh
Application granted granted Critical
Publication of CN105142002B publication Critical patent/CN105142002B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4331Caching operations, e.g. of an advertisement for later insertion during playback
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4335Housekeeping operations, e.g. prioritizing content for deletion because of storage space restrictions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • H04N21/4341Demultiplexing of audio and video streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/439Processing of audio elementary streams
    • H04N21/4392Processing of audio elementary streams involving audio buffer management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于TCP直播***消除时延抖动的控制方法,包括:判断当前缓冲区是否为空;当不为空,待当前调整周期到达时,若当前调整周期内的最大缓冲区数据时长与最小缓冲区数据时长的差值小于预设的缓冲区时长抖动阈值,且最小缓冲区数据时长大于预设的最小缓冲区时长阈值,将当前缓冲区数据时长缩短;当为空,待缓冲区为空到接收到第一个数据包时,将初始缓冲区数据时长增大,且增大后的初始缓冲区数据时长是第二大时延抖动值的增函数;初始缓冲区数据时长是缓冲区为空到恢复播放所需要的缓冲数据时长;第二大时延抖动值是缓冲区为空前一段时间到接收到所述第一个数据包的时间内所接收到连续的两个数据包的时间差中的第二大值。

Description

音/视频直播方法、装置及控制方法、装置
技术领域
本发明涉及网络传输技术领域,尤其涉及一种基于TCP直播***消除时延抖动的音/视频直播方法、装置及对应的控制方法、装置。
背景技术
视频直播***是把现场的视频信号(如摄像头、摄像机)和语音信号(如麦克风)进行实时采集编码,通过网络发送到服务器上去,用户可以用过网络实时观看。一个最简单的视频直播***模型由五个环节构成:采集、编码、传输、解码、播放。由于现实的因素使得视频直播***的实现不是那么简单,其涉及到很多专业技术。
时延抖动(jitter)作为视频直播***中的一项重要的QoS参数,对语音通信质量有着直接的影响。因此需要采用一定的措施来防止时延抖动,从而保证一定的直播质量。
时延抖动(jitter)是指由于各种延迟的变化导致网络中的数据分组到达速率的变化。网络时延是指一个IP包在网络上传输所需的时间,它包括算法时延、编码延迟、网络传输时延和抖动缓冲时延。网络时延抖动就是网络延迟一会大一会小,在这种情况下,即使发送方是定时发送数据包,而接收方的接收也无法同样定时,有时一个周期内一个包也接收不到,有时一个周期内接收到好几个包。如果网络抖动的较严重,数据包还有可能丢弃。如此,导致接收方听到的声音就是一卡一卡的。
为了消除时延抖动,通常采用抖动缓冲技术(JitterBuffer),即在接收方设定一个缓冲区,数据报到达时首先进入缓冲池暂存,随后***再以平滑的速率将数据包从缓冲池中取出,经解压后播放给用户。这种缓冲技术可以在一定限度内有效消除语音抖动,并提高音质。
JitterBuffer的缓冲深度取决于网络抖动的程度,网络抖动越大,缓冲深度越大,播放的延迟就越大。所以JitterBuffer是利用了较高的延迟来换取流畅的播放,相比声音一卡一卡来说,稍微大一点的延迟但更流畅的效果,其主观体验要更好。当然JitterBuffer的缓冲深度不一定是一直不变的,可以是根据网络抖动程度的变化而动态调整的。当网络恢复到非常平稳通畅时,缓冲深度会非常小,这样延迟就可以减少。
目前缓冲控制方法主要有两种:静态抖动缓冲控制方法和自适应抖动缓冲控制方法。
静态抖动缓冲控制方法中,缓冲区的大小在传输通道建立后一直为固定值,对于抖动超出缓冲区大小的数据将会被丢弃。该方法的优点是:模型简单、易于实现、可靠性高;缺点是:网络抖动较大时,丢包率高,而网络时延及抖动很小的时候,延迟较大,适用性不是很强。
自适应抖动缓冲控制方法中,缓冲区大小随实际网络的抖动情况而变化。与静态抖动缓冲控制方法相比,自适应抖动缓冲控制方法的优点是:网络抖动较大时丢包率相对较低,而网络延迟及抖动小时,延迟相对较小。但是现有技术使用的自适应抖动缓冲控制方法是根据实际网络的抖动情况来增大或减少缓冲区大小,而且增加或减少的值往往是一个定值。也就是说,对于需要增大/减少缓冲区的网络的抖动情况,均是将当前缓冲区增加/减少一个定值,而忽略需要增大/减少缓冲区的网络的抖动情况之间存在的差异,从而使得动态调整不够平滑。因此,对于平滑要求较高的视频直播***来说也不适用。
发明内容
本发明实施例的目的是提供一种基于TCP直播***消除时延抖动的音/视频播放方法、装置及控制方法、装置,能根据网络状态动态有效调整缓冲区大小,而且在保证平滑、确保播放流畅的前提下使时延尽量小。
本发明实施例提供了一种基于TCP直播***消除时延抖动的控制方法,包括:
判断当前缓冲区是否为空;
当缓冲区不为空,待当前调整周期到达时,若当前调整周期内的最大缓冲区数据时长与最小缓冲区数据时长的差值小于预设的缓冲区时长抖动阈值,且所述最小缓冲区数据时长大于预设的最小缓冲区时长阈值,则将当前缓冲区数据时长缩短,且缩短的值小于或等于所述最小缓冲区数据时长和所述预设的最小缓冲区时长阈值之间的差值;
当缓冲区为空,待缓冲区为空到接收到第一个数据包时,则将初始缓冲区数据时长增大,且增大后的初始缓冲区数据时长是第二大时延抖动值的增函数;其中,所述初始缓冲区数据时长是缓冲区为空到恢复播放所需要的缓冲数据时长;所述第二大时延抖动值是缓冲区为空前一段时间到接收到所述第一个数据包的时间内所接收到的连续的两个数据包的时间差中的第二大值。
作为上述方案的改进,当所述增大后的初始缓冲区数据时长大于预设的最大缓冲区时长阈值时,将所述预设的最大缓冲区时长阈值作为所述增大后的初始缓冲区数据时长;当所述增大后的初始缓冲区数据时长小于预设的最小缓冲区时长阈值时,将所述预设的最小缓冲区时长阈值作为所述增大后的初始缓冲区数据时长。
作为上述方案的改进,当所述第二大时延抖动值小于预设的最小时延抖动值时,将所述预设的最小时延抖动值作为所述第二大时延抖动值;当所述第二大时延抖动值大于预设的最大时延抖动值时,将所述预设的最大时延抖动值作为所述第二大时延抖动值。
作为上述方案的改进,还包括:将连续接收到的两个数据包的时间差入栈保存。
作为上述方案的改进,所述增大后的初始缓冲区数据时长是第二大时延抖动值的线性增函数。
作为上述方案的改进,所述增大后的初始缓冲区数据时长是第二大时延抖动值的分段线性增函数。
作为上述方案的改进,所述一段时间为一个完整调整周期的1/3~1/2。
本发明实施例还对应公开了一种基于TCP直播***消除时延抖动的控制装置,包括:
判断模块,用于判断当前缓冲区是否为空;
第一调整模块,用于当缓冲区不为空,待当前调整周期到达时,若当前调整周期内的最大缓冲区数据时长与最小缓冲区数据时长的差值小于预设的缓冲区时长抖动阈值,且所述最小缓冲区数据时长大于预设的最小缓冲区时长阈值,则将当前缓冲区数据时长缩短,且缩短的值小于或等于所述最小缓冲区数据时长和所述预设的最小缓冲区时长阈值之间的差值;
第二调整模块,用于当缓冲区为空,则将初始缓冲区数据时长增大,且增大后的初始缓冲区数据时长是第二大时延抖动值的增函数;其中,所述初始缓冲区数据时长是缓冲区为空到恢复播放所需要的缓冲数据时长;所述第二大时延抖动值是缓冲区为空前一段时间内所接收到的连续的两个数据包的时间差中的第二大值。
作为上述方案的改进,所述第二调整模块还用于:当所述增大后的初始缓冲区数据时长大于预设的最大缓冲区时长阈值时,将所述预设的最大缓冲区时长阈值作为所述增大后的初始缓冲区数据时长;当所述增大后的初始缓冲区数据时长小于预设的最小缓冲区时长阈值时,将所述预设的最小缓冲区时长阈值作为所述增大后的初始缓冲区数据时长。
作为上述方案的改进,所述第二调整模块还用于:当所述第二大时延抖动值小于预设的最小时延抖动值时,将所述预设的最小时延抖动值作为所述第二大时延抖动值;当所述第二大时延抖动值大于预设的最大时延抖动值时,将所述预设的最大时延抖动值作为所述第二大时延抖动值。
作为上述方案的改进,还包括:
入栈保存模块,用于将连续接收到的两个数据包的时间差入栈保存。
作为上述方案的改进,所述增大后的初始缓冲区数据时长是第二大时延抖动值的线性增函数。
作为上述方案的改进,所述增大后的初始缓冲区数据时长是第二大时延抖动值的分段线性增函数。
作为上述方案的改进,所述一段时间为一个完整调整周期的1/3~1/2。
本发明实施例还公开了一种基于TCP的音/视频直播方法,包括:
接收数据包并将所述数据包缓存到缓冲区中;
根据如上所述的控制方法调整所述缓冲区的缓冲区数据时长;
基于缓冲区数据时长调整后的缓冲区中获取数据包并解码播放。
本发明实施例还公开了一种基于TCP的音/视频直播装置,包括:
数据接收模块,用于接收数据包并将所述数据包缓存到缓冲区中;
如上所述的控制装置,用于对调整所述缓冲区的缓冲区数据时长;以及
解码播放模块,基于缓冲区数据时长调整后的缓冲区中获取数据包并解码播放。
与现有技术相比,本发明公开的基于TCP直播***消除时延抖动的音/视频直播方法、装置及控制方法、装置,能有效解决视频直播***中时延和抖动的问题,在自适应抖动缓冲控制方法上,通过判断当前缓冲区是否为空,并在缓冲区不为空/为空的情况下,根据当前网络状态分别对缓冲区数据时长进行缩短/增大调整,且调整的值为根据网络状态而变化的值。因此,能根据网络状态动态有效调整缓冲区大小,而且在保证平滑、确保播放流畅的前提下使时延尽量小。
附图说明
图1是本发明实施例中一种基于TCP直播***消除时延抖动的控制方法的流程示意图。
图2是当前调整周期内不存在缓冲区为空的情况下的缓冲区变化示意图。
图3是图1所示的步骤S102的具体流程示意图。
图4是当前调整周期内存在缓冲区为空的情况下的缓冲区变化示意图。
图5是增大后的初始缓冲区数据时长与第二大时延抖动值呈线性增函数关系的示意图。
图6是本发明实施例中一种基于TCP直播***消除时延抖动的控制装置的结构示意图。
图7是本发明实施例中一种基于TCP直播***消除时延抖动的视频播放方法的流程示意图。
图8是本发明实施例中一种基于TCP的音/视频直播接收装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明实施例提供的一种基于TCP直播***消除时延抖动的控制方法的流程示意图。该控制方法包括步骤:
S101、判断当前缓冲区是否为空;
S102、当缓冲区不为空,待当前调整周期到达时,若当前调整周期内的最大缓冲区数据时长与最小缓冲区数据时长的差值小于预设的缓冲区时长抖动阈值,且所述最小缓冲区数据时长大于预设的最小缓冲区时长阈值时,则将当前缓冲区数据时长缩短,且缩短的值小于或等于所述最小缓冲区数据时长和所述预设的最小缓冲区时长阈值之间的差值;
S103、当缓冲区为空,待缓冲区为空到接收到第一个数据包时,则将初始缓冲区数据时长增大,且增大后的初始缓冲区数据时长是第二大时延抖动值的增函数;其中,所述初始缓冲区数据时长是缓冲区为空到恢复播放所需要的缓冲数据时长;所述第二大时延抖动值是缓冲区为空前一段时间到接收到所述第一个数据包的时间内所接收到的连续的两个数据包的时间差中的第二大值。
本实施例用于在接收音/视频直播***的数据以播放时,能够有效消除时延抖动。由于视频直播***中既有视频又有音频,本实施例以视频直播***为例,详细说明本实施例的实现过程。对于视频直播***,音频包比视频包的数据量小,在直播***中首先要保证交互式语音质量,因此本实施例采用语音数据包在网络中速率变化来定义时延抖动值jitter及控制缓冲区大小。
视频直播***中往往创建了三个线程,分别是:读取线程、音频线程、视频线程。读取线程负责从网络接收数据,将音视频数据分别置于音频和视频缓冲区中。音频线程从音频缓冲区中取数据并解码,然后播放声音。视频线程从视频缓冲区中取数据并解码,然后播放视频。因此在视频直播***中存在两个缓冲区,为简单起见,本实施例采用统一的控制方法来控制两个缓冲区大小。
由于数据包在发送端和接收端之间没有同步时钟,无法计算数据传输的真正时延,因此本实施例在设计抖动缓冲区大小时,以接收端的的时延为标准来衡量网络状态。
本实施例的视频直播***基于TCP协议,该协议是一种可靠协议,不存在网络丢包。网络平稳的情况下在一个时间周期里按顺序到达的数据包数量波动比较小。然而当网络抖动严重的情况下,接收端接收到的数据包数量会迅速下降,导致缓冲区数据迅速减少,甚至为空。当网络恢复正常的时候,接收端在一瞬间会收到大量的数据包,因此缓冲区的数据激增或溢出。
假设有两个连续的音/视频包,其序号分别是i和i+1,则约定如下:
(1)Ti,Ti+1:数据包i和i+1的内部时间戳;
(2)Ri,Ri+1:数据包i和i+1达到接收端的时间;
(3)Pi,Pi+1:数据包i和i+1在本地播放的时间;
(4)Jitteri=Ri+1-Ri:数据包i和i+1达到接收端的时间差,由网络状态决定。
如果不存在网络时延抖动,则对任意的i和j有:Jitteri=Jitterj且Ri+1-Ri=Ti+1-Ti,在这种理想情况下,数据包不需要任何缓冲就可以直接播放,只需要满足Pi+1-Pi=Jitteri。但在实际情况中,由于存在时延抖动,此时如果直接播放就会产生语音失真,视频表现为连续卡顿,所以必须对音/视频包缓存一段时间后播放,这样才可以使语音真实并且视频连贯。由此可知,本实施例进行抖动缓冲的目标就是:使音/视频包的播放时间间隔等于它们的内部时间戳间隔,并尽可能减少卡顿次数和延迟。
利用本实施例的基于TCP直播***消除时延抖动的控制方法对缓冲区大小进行调整,首先引入几个参数变量:
(1)min_buffer_time:预设的最小缓冲区时长阈值,即抖动缓冲区最小需要缓冲的时间,首次缓冲该时间即可以播放。但并不代表以后每次缓冲达到最小的时间就可以播放。该参数决定了正常流畅播放的最小时延。
(2)max_buffer_time:预设的最大缓冲区时长阈值,即抖动缓冲区的最大缓冲时间,超出该时间的数据包会被丢弃。该参数决定了可以允许的最大时延。
(3)cur_buffer_time:当前缓冲区数据时长。该变量是反应当前缓冲区中数据时长,这个值是时时刻刻在变化的,因此需要将该值与当前时刻已经获取到的max(最大缓冲区数据时长)和min(最小缓冲区数据时长)进行比较,从而更新max(最大缓冲区数据时长)和min(最小缓冲区数据时长)的值,待这个周期结束之后才能得到最终的max(最大缓冲区数据时长)和min(最小缓冲区数据时长)的值。
(3.1)max:一个调整周期内的最大缓冲区数据时长。该值反映的是一个调整周期内的时刻变化的缓冲区中数据时长的最大值。可通过上述(3)的方式来获取一个调整周期内的最终的max值。
(3.2)min:一个调整周期内的最小缓冲区数据时长。该值反映的是一个调整周期内的时刻变化的缓冲区中数据时长的最小值。可通过上述(3)的方式来获取一个调整周期内的最终的min值。
(4)replay_buffer_time:初始缓冲区数据时长,是指视频直播卡顿(即缓冲区为空)之后到恢复播放所需要的缓冲数据时长。该值位于min_buffer_time和max_buffer_time之间。该值的初始值取min_buffer_time。后续该值的大小由下面将要介绍的jitter值动态决定。
(5)jitter:时延抖动值,即连续的两个音频包达到接收端的时间差,每当计算出一个jitter值即将其入栈保存起来。一段时间内的jitter值可以反映网络的抖动状态。
(6)min_jitter:预设的最小时延抖动阈值,低于此值可以认为网络抖动非常小,网络流畅。
(7)max_jitter:预设的最大时延抖动阈r值,超过该值可以认为网络抖动非常厉害。
(8)Th:预设的缓冲区时长抖动阈值,即一个周期内缓冲区时长抖动的阈值,小于该阈值表示网络抖动很小。
在定义好以上参数变量后,则可通过本实施例的基于TCP直播***消除时延抖动的控制方法对缓冲区大小进行调整。本实施例的控制方法根据当前网络状态好/差来对缓冲区大小进行不同的调整,其中,通过判断当前缓冲区是否为空来初步区分当前网络状态为好还是差(上述步骤S101),即当前缓冲区不为空的情况下,可认为网络状态比较好;当前缓冲区为空的情况下,可认为网络状态比较差。
考虑网络状态比较好的情况,也就是时延抖动值Jitter的值波动很小,这个时候缓冲区数据时长的变化如图2所示:在一个调整周期内缓冲区波动比较小,图2中最高点和最低点分别记为max(最大缓冲区数据时长)和min(最小缓冲区数据时长),在这种情况下缓冲区实际缓冲了过多的数据,导致延迟不低于min(最小缓冲区数据时长)。实际上这种状况下最理想的缓冲大小best_buffer_time=max–min。因此可以执行快进操作,丢弃掉缓冲区中最老的一批数据,丢弃的数据时长不超过min(最小缓冲区数据时长)或min(最小缓冲区数据时长)和min_buffer_time(预设的最小缓冲区时长阈值)之间的差值,这样不会导致缓冲区无数据而卡顿,相反快进之后会减少直播的延迟。
参考图3,在上述步骤S102中,当判断当前缓冲区不为空的情况下(网络状态比较好),具体通过以下步骤来调整缓冲区数据时长:
步骤S1021、实时更新当前调整周期内的最大缓冲区数据时长max和最小缓冲区数据时长min;具体的更新方式是实时采集(采集频率可以预先设置,采集周期远少于调整周期)当前缓冲区数据时长cur_buffer_time,并将当前缓冲区数据时长cur_buffer_time与已经获取到的最大缓冲区数据时长max和最小缓冲区数据时长min进行比较,从而实时更新最大缓冲区数据时长max和最小缓冲区数据时长min的值;
步骤S1022、判断当前(完整的)调整周期是否到达,若是,则执行步骤S1023;否则返回执行步骤S1021;
步骤S1023、当当前(完整的)调整周期到达时(此时可得到当前调整周期的最大缓冲区数据时长max和最小缓冲区数据时长min的值),通过以下公式(1)、(2)计算相关的值:
d1=max-min;(1)
d2=min-min_buffer_time(2)
其中,max为当前调整周期内的最大缓冲区数据时长,min为当前调整周期内的最大缓冲区数据时长,d1为当前调整周期内的最大缓冲区数据时长max与最小缓冲区数据时长min的差值;min_buffer_time为预设的最小缓冲区时长阈值,d2为最小缓冲区数据时长min与预设的最小缓冲区时长阈值min_buffer_time之间的差值。
步骤S1024、判断步骤S1023计算得到的值d1和d2是否满足以下公式(3),若是,则执行步骤S1025;否则不对缓冲区数据时长进行调整。
d1<Th&d2>0(3)
其中,Th是预设的缓冲区时长抖动阈值。
步骤S1025、将当前采集到的(即调整周期到达时刻)的当前缓冲区数据时长cur_buffer_time缩短(相当于快进)一段时间(数据时长),而且缩短的数据时长少于或等于d2
在公式(3)中,当计算出当前调整周期内的最大缓冲区数据时长max与最小缓冲区数据时长min的差值,当该差值小于预设的缓冲区时长抖动阈值Th时表示网络抖动很小,因此,如果此刻最小缓冲区数据时长min比预设的最小缓冲区时长阈值min_buffer_time大,则可以将当前缓冲区数据时长缩短(相当于执行快进操作),这样可以减少时延。另外,缩短的缓冲区数据时长(或快进的数据时长)小于或等于所述最小缓冲区数据时长min和所述预设的最小缓冲区时长阈值min_buffer_time之间的差值,这样不会导致缓冲区无数据而卡顿。
当网络状态比较差的时候,时延抖动值Jitter的值波动比较大,接收端接收到数据急剧下降,但是播放端依然按照固定的频率取数据进行播放,因此缓冲区的数据会急剧下降直至为零,导致直播卡顿。等到网络恢复正常的时候,在恢复的那一瞬间接收端突然接收到大量的数据,然后网络状态恢复到图2所示情况。如图4所示,图4中最高点记为max(最大缓冲区数据时长),缓冲区为空到再次有数据的时间间隔记为gap。这种情况下理想的缓冲大小为best_buffer_time=max+gap。由于时延抖动值Jitter波动较大导致卡顿,因此需要加大初始缓冲区数据时长(即视频直播卡顿之后到恢复播放所需要的缓冲数据时长)的大小,也就是replay_buffer_time的大小。视频直播***由于跟用户语音互动少,对语音的时延要求不像其他单纯的语音通讯***那么高,允许有较高的时延(例如1秒)。
在上述步骤S103中,当判断当前缓冲区为空的情况下(网络状态比较差),则首先等待直到缓冲区为空到接收到第一个数据包时,立即通过计算以将初始缓冲区数据时长增大,且增大后的初始缓冲区数据时长(即replay_buffer_time)是第二大时延抖动值的增函数。
具体的,在接收端接收数据包时,会将连续接收到的两个数据包的时间差(时延抖动值Jitter)入栈保存。其中,时延抖动值Jitter是在数据读取线程中计算得到的,保存在一个栈中,因此该栈中存放的总是最近一段时间的时延抖动值Jitter,能反映最近一段时间的网络状态。在本实施例中,当判断当前缓冲区为空到接收到第一个数据包时,即将缓冲区为空前的一段时间(优选为一个完整调整周期的1/3~1/2的时间)到接收到所述第一个数据包的时间内栈中保存的第二大值作为第二大时延抖动值Jitter,并选择该栈中第二大时延抖动值Jitter作为增大后的初始缓冲区数据时长的调整基准,即增大后的初始缓冲区数据时长为所述第二大时延抖动值Jitter的增函数。
如图5所示,优选的,本实施例调整(增大)后的初始缓冲区数据时长(replay_buffer_time)是第二大时延抖动值Jitter的线性增函数。在图4中,sec_jitter表示第二大时延抖动值jitter,如果该值大于max_jitter(期望的最大jitter值),则取值max_jitter;如果该值小于min_jitter(期望的最小jitter值),则取值min_jitter。图4显示了当线性系数r分别为:r<1、r=1以及r>1三种情况下增大后的初始缓冲区数据时长(replay_buffer_time)与第二大时延抖动值sec_jitter的线性关系。另外,增大后的初始缓冲区数据时长(replay_buffer_time)取值在min_buffer_time和max_buffer_time之间。即当所述增大后的初始缓冲区数据时长(replay_buffer_time)大于预设的最大缓冲区时长阈值(max_buffer_time)时,将所述预设的最大缓冲区时长阈值(max_buffer_time)作为所述增大后的初始缓冲区数据时长;当所述增大后的初始缓冲区数据时长(replay_buffer_time)小于预设的最小缓冲区时长阈值(min_buffer_time)时,将所述预设的最小缓冲区时长阈值(min_buffer_time)作为所述增大后的初始缓冲区数据时长。
可以理解的,增大后的初始缓冲区数据时长(即replay_buffer_time)与第二大时延抖动值sec_jitter的增函数关系并不是唯一的,也可以采用分段线性函数等其他增函数。
可见,本实施例的基于TCP直播***消除时延抖动的控制方法,在自适应抖动缓冲控制方法上,通过判断当前缓冲区是否为空,并在当前缓冲区不为/为空的情况下,根据当前网络状态分别对缓冲区数据时长进行缩短/增大调整,且调整的值为根据网络状态而变化的值。因此,能根据网络状态动态有效调整缓冲区大小,而且在保证平滑、确保播放流畅的前提下使时延尽量小。
参考图6,是本发明实施例中一种基于TCP直播***消除时延抖动的控制装置的结构示意图。该控制装置包括:
判断模块21,用于判断当前缓冲区是否为空;
第一调整模块22,用于当缓冲区不为空,待当前调整周期到达时,若当前调整周期内的最大缓冲区数据时长与最小缓冲区数据时长的差值小于预设的缓冲区时长抖动阈值,且所述最小缓冲区数据时长大于预设的最小缓冲区时长阈值,则将当前缓冲区数据时长缩短,且缩短的值小于或等于所述最小缓冲区数据时长和所述预设的最小缓冲区时长阈值之间的差值;以及
第二调整模块23,用于当缓冲区为空,待缓冲区为空到接收到第一个数据包时,则将初始缓冲区数据时长增大,且增大后的初始缓冲区数据时长是第二大时延抖动值的增函数(包括线性增函数、分段线性增函数等);其中,所述初始缓冲区数据时长是缓冲区为空到恢复播放所需要的缓冲数据时长;所述第二大时延抖动值是缓冲区为空前一段时间(优选为一个完整调整周期的1/3~1/2的时间)到接收到所述第一个数据包的时间内所接收到的连续的两个数据包的时间差中的第二大值。
优选的,本实施例的第二调整模块23还用于:当所述增大后的初始缓冲区数据时长大于预设的最大缓冲区时长阈值时,将所述预设的最大缓冲区时长阈值作为所述增大后的初始缓冲区数据时长;当所述增大后的初始缓冲区数据时长小于预设的最小缓冲区时长阈值时,将所述预设的最小缓冲区时长阈值作为所述增大后的初始缓冲区数据时长。
优选的,本实施例的第二调整模块23还用于:当所述第二大时延抖动值小于预设的最小时延抖动值时,将所述预设的最小时延抖动值作为所述第二大时延抖动值;当所述第二大时延抖动值大于预设的最大时延抖动值时,将所述预设的最大时延抖动值作为所述第二大时延抖动值。
优选的,本实施例的控制装置还包括:入栈保存模块(图未示),用于将连续接收到的两个数据包的时间差入栈保存。
本实施例的基于TCP直播***消除时延抖动的控制装置的工作过程可参考上述实施例,在此不再赘述。
参考图7,是本发明实施例中一种基于TCP的音/视频播放方法的流程示意图。该音/视频播放方法包括步骤:
S301、接收数据包并将所述数据包缓存到缓冲区中;
S302、利用图1所示的基于TCP直播***消除时延抖动的控制方法调整所述缓冲区的缓冲区数据时长;
S303、基于缓冲区数据时长调整后的缓冲区中获取数据包并解码播放。
其中,步骤S301和步骤S303的具体实现方式可采用现有的音/视频播放方法中的对应方式实现,而步骤302的具体实现方式可参考图1对应的实施例,在此不再赘述。
参考图8,是本发明实施例中一种基于TCP的音/视频直播装置的结构示意图。该音/视频直播装置包括:
数据接收模块41,用于接收数据包并将所述数据包缓存到缓冲区中;
控制装置42,用于对调整所述缓冲区的缓冲区数据时长;以及
解码播放模块43,基于缓冲区数据时长调整后的缓冲区中获取数据包并解码播放。
其中,数据接收模块41和解码播放模块43的具体实现方式可采用现有的视频播放装置中的对应方式实现,而控制装置42的具体实现方式可采用图5所示的基于TCP直播***消除时延抖动的控制装置来实现,在此不再赘述。
综上所述,本发明公开的基于TCP直播***消除时延抖动的视频播放方法、装置及控制方法、装置,能有效解决视频直播***中时延和抖动的问题,在自适应抖动缓冲控制方法上,通过判断当前缓冲区是否为空,并在缓冲区不为空/为空的情况下,分别对缓冲区数据时长进行缩短/增大调整,且调整的值为根据网络状态而变化的值。因此,能根据网络状态动态的调整缓冲区大小,而且在保证平滑、确保播放流畅的前提下使时延尽量小。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

Claims (16)

1.一种基于TCP直播***消除时延抖动的控制方法,其特征在于,包括:
判断当前的缓冲区是否为空;
当缓冲区不为空,待当前调整周期到达时,若当前调整周期内的最大缓冲区数据时长与最小缓冲区数据时长的差值小于预设的缓冲区时长抖动阈值,且所述最小缓冲区数据时长大于预设的最小缓冲区时长阈值,则将当前缓冲区数据时长缩短,且缩短的值小于或等于所述最小缓冲区数据时长和所述预设的最小缓冲区时长阈值之间的差值;
当缓冲区为空,待缓冲区为空到接收到第一个数据包时,则将初始缓冲区数据时长增大,且增大后的初始缓冲区数据时长是第二大时延抖动值的增函数;其中,所述初始缓冲区数据时长是缓冲区为空到恢复播放所需要的缓冲数据时长;所述第二大时延抖动值是缓冲区为空前一段时间到接收到所述第一个数据包的时间内所接收到的连续的两个数据包的时间差中的第二大值。
2.如权利要求1所述的基于TCP直播***消除时延抖动的控制方法,其特征在于,当所述增大后的初始缓冲区数据时长大于预设的最大缓冲区时长阈值时,将所述预设的最大缓冲区时长阈值作为所述增大后的初始缓冲区数据时长;当所述增大后的初始缓冲区数据时长小于预设的最小缓冲区时长阈值时,将所述预设的最小缓冲区时长阈值作为所述增大后的初始缓冲区数据时长。
3.如权利要求1所述的基于TCP直播***消除时延抖动的控制方法,其特征在于,当所述第二大时延抖动值小于预设的最小时延抖动值时,将所述预设的最小时延抖动值作为所述第二大时延抖动值;当所述第二大时延抖动值大于预设的最大时延抖动值时,将所述预设的最大时延抖动值作为所述第二大时延抖动值。
4.如权利要求1所述的基于TCP直播***消除时延抖动的控制方法,其特征在于,还包括:
将连续接收到的两个数据包的时间差入栈保存。
5.如权利要求1所述的基于TCP直播***消除时延抖动的控制方法,其特征在于,所述增大后的初始缓冲区数据时长是第二大时延抖动值的线性增函数。
6.如权利要求1所述的基于TCP直播***消除时延抖动的控制方法,其特征在于,所述增大后的初始缓冲区数据时长是第二大时延抖动值的分段线性增函数。
7.如权利要求1所述的基于TCP直播***消除时延抖动的控制方法,其特征在于,所述一段时间为一个完整调整周期的1/3~1/2。
8.一种基于TCP直播***消除时延抖动的控制装置,其特征在于,包括:
判断模块,用于判断当前缓冲区是否为空;
第一调整模块,用于当缓冲区不为空,待当前调整周期到达时,若当前调整周期内的最大缓冲区数据时长与最小缓冲区数据时长的差值小于预设的缓冲区时长抖动阈值,且所述最小缓冲区数据时长大于预设的最小缓冲区时长阈值,则将当前缓冲区数据时长缩短,且缩短的值小于或等于所述最小缓冲区数据时长和所述预设的最小缓冲区时长阈值之间的差值;
第二调整模块,用于当缓冲区为空,待缓冲区为空到接收到第一个数据包时,则将初始缓冲区数据时长增大,且增大后的初始缓冲区数据时长是第二大时延抖动值的增函数;其中,所述初始缓冲区数据时长是缓冲区为空到恢复播放所需要的缓冲数据时长;所述第二大时延抖动值是缓冲区为空前一段时间到接收到所述第一个数据包的时间内所接收到的连续的两个数据包的时间差中的第二大值。
9.如权利要求8所述的基于TCP直播***消除时延抖动的控制装置,其特征在于,所述第二调整模块还用于:当所述增大后的初始缓冲区数据时长大于预设的最大缓冲区时长阈值时,将所述预设的最大缓冲区时长阈值作为所述增大后的初始缓冲区数据时长;当所述增大后的初始缓冲区数据时长小于预设的最小缓冲区时长阈值时,将所述预设的最小缓冲区时长阈值作为所述增大后的初始缓冲区数据时长。
10.如权利要求8所述的基于TCP直播***消除时延抖动的控制装置,其特征在于,所述第二调整模块还用于:当所述第二大时延抖动值小于预设的最小时延抖动值时,将所述预设的最小时延抖动值作为所述第二大时延抖动值;当所述第二大时延抖动值大于预设的最大时延抖动值时,将所述预设的最大时延抖动值作为所述第二大时延抖动值。
11.如权利要求8所述的基于TCP直播***消除时延抖动的控制装置,其特征在于,还包括:
入栈保存模块,用于将连续接收到的两个数据包的时间差入栈保存。
12.如权利要求8所述的基于TCP直播***消除时延抖动的控制装置,其特征在于,所述增大后的初始缓冲区数据时长是第二大时延抖动值的线性增函数。
13.如权利要求8所述的基于TCP直播***消除时延抖动的控制装置,其特征在于,所述增大后的初始缓冲区数据时长是第二大时延抖动值的分段线性增函数。
14.如权利要求8所述的基于TCP直播***消除时延抖动的控制装置,其特征在于,所述一段时间为一个完整调整周期的1/3~1/2。
15.一种基于TCP的音/视频直播方法,其特征在于,包括:
接收数据包并将所述数据包缓存到缓冲区中;
根据权利要求1~7任一项所述的控制方法调整所述缓冲区的缓冲区数据时长;
基于缓冲区数据时长调整后的缓冲区中获取数据包并解码播放。
16.一种基于TCP的音/视频直播装置,其特征在于,包括:
数据接收模块,用于接收数据包并将所述数据包缓存到缓冲区中;
如权利要求8~14任一项所述的控制装置,用于对调整所述缓冲区的缓冲区数据时长;以及
解码播放模块,基于缓冲区数据时长调整后的缓冲区中获取数据包并解码播放。
CN201510483445.4A 2015-08-07 2015-08-07 音/视频直播方法、装置及控制方法、装置 Active CN105142002B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510483445.4A CN105142002B (zh) 2015-08-07 2015-08-07 音/视频直播方法、装置及控制方法、装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510483445.4A CN105142002B (zh) 2015-08-07 2015-08-07 音/视频直播方法、装置及控制方法、装置

Publications (2)

Publication Number Publication Date
CN105142002A true CN105142002A (zh) 2015-12-09
CN105142002B CN105142002B (zh) 2018-06-22

Family

ID=54727187

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510483445.4A Active CN105142002B (zh) 2015-08-07 2015-08-07 音/视频直播方法、装置及控制方法、装置

Country Status (1)

Country Link
CN (1) CN105142002B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106658049A (zh) * 2016-12-31 2017-05-10 深圳市优必选科技有限公司 一种视频播放缓冲方法及***
CN106713941A (zh) * 2017-01-04 2017-05-24 北京百度网讯科技有限公司 一种音视频直播的实现方法和服务器
CN108650521A (zh) * 2018-05-17 2018-10-12 上海七牛信息技术有限公司 一种直播方法、装置以及多媒体播放***
CN109640160A (zh) * 2018-12-28 2019-04-16 鸿视线科技(北京)有限公司 基于缓冲控制结构的可持续同步控制***和方法
CN110266611A (zh) * 2019-07-08 2019-09-20 腾讯科技(深圳)有限公司 缓冲数据的处理方法、装置和***
CN110634511A (zh) * 2019-09-27 2019-12-31 北京西山居互动娱乐科技有限公司 一种音频数据处理方法及装置
CN112822502A (zh) * 2020-12-28 2021-05-18 阿里巴巴(中国)有限公司 直播去抖动的智能缓存与直播方法、设备及存储介质
CN113727186A (zh) * 2021-08-26 2021-11-30 百果园技术(新加坡)有限公司 一种实时视频通话的视频播放方法及***

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101123571A (zh) * 2006-08-07 2008-02-13 北京三星通信技术研究有限公司 基于自适应抖动缓冲的调度策略的调整方法
US7359324B1 (en) * 2004-03-09 2008-04-15 Nortel Networks Limited Adaptive jitter buffer control
US7916742B1 (en) * 2005-05-11 2011-03-29 Sprint Communications Company L.P. Dynamic jitter buffer calibration
CN102739503A (zh) * 2011-04-01 2012-10-17 华平信息技术股份有限公司 VoIP去抖动缓冲区的处理方法
CN103533451A (zh) * 2013-09-30 2014-01-22 广州华多网络科技有限公司 抖动缓存调节方法及其***

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7359324B1 (en) * 2004-03-09 2008-04-15 Nortel Networks Limited Adaptive jitter buffer control
US7916742B1 (en) * 2005-05-11 2011-03-29 Sprint Communications Company L.P. Dynamic jitter buffer calibration
CN101123571A (zh) * 2006-08-07 2008-02-13 北京三星通信技术研究有限公司 基于自适应抖动缓冲的调度策略的调整方法
CN102739503A (zh) * 2011-04-01 2012-10-17 华平信息技术股份有限公司 VoIP去抖动缓冲区的处理方法
CN103533451A (zh) * 2013-09-30 2014-01-22 广州华多网络科技有限公司 抖动缓存调节方法及其***

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106658049A (zh) * 2016-12-31 2017-05-10 深圳市优必选科技有限公司 一种视频播放缓冲方法及***
CN106658049B (zh) * 2016-12-31 2019-08-30 深圳市优必选科技有限公司 一种视频播放缓冲方法及***
CN106713941A (zh) * 2017-01-04 2017-05-24 北京百度网讯科技有限公司 一种音视频直播的实现方法和服务器
CN108650521A (zh) * 2018-05-17 2018-10-12 上海七牛信息技术有限公司 一种直播方法、装置以及多媒体播放***
CN109640160A (zh) * 2018-12-28 2019-04-16 鸿视线科技(北京)有限公司 基于缓冲控制结构的可持续同步控制***和方法
CN110266611A (zh) * 2019-07-08 2019-09-20 腾讯科技(深圳)有限公司 缓冲数据的处理方法、装置和***
CN110266611B (zh) * 2019-07-08 2023-06-23 腾讯科技(上海)有限公司 缓冲数据的处理方法、装置和***
CN110634511A (zh) * 2019-09-27 2019-12-31 北京西山居互动娱乐科技有限公司 一种音频数据处理方法及装置
CN112822502A (zh) * 2020-12-28 2021-05-18 阿里巴巴(中国)有限公司 直播去抖动的智能缓存与直播方法、设备及存储介质
CN112822502B (zh) * 2020-12-28 2022-06-07 阿里巴巴(中国)有限公司 直播去抖动的智能缓存与直播方法、设备及存储介质
CN113727186A (zh) * 2021-08-26 2021-11-30 百果园技术(新加坡)有限公司 一种实时视频通话的视频播放方法及***
CN113727186B (zh) * 2021-08-26 2024-05-17 百果园技术(新加坡)有限公司 一种实时视频通话的视频播放方法及***

Also Published As

Publication number Publication date
CN105142002B (zh) 2018-06-22

Similar Documents

Publication Publication Date Title
CN105142002A (zh) 音/视频直播方法、装置及控制方法、装置
US10819766B2 (en) Voice encoding and sending method and apparatus
CN103916716B (zh) 一种无线网络下视频实时传输的码率平滑方法
US7359324B1 (en) Adaptive jitter buffer control
CN106686438B (zh) 一种跨设备的音频图像同步播放的方法、装置及***
US9736548B2 (en) Multipath rate adaptation
WO2017000719A1 (zh) 一种基于队列时延的拥塞控制方法及装置
CN108024126A (zh) 网络直播视频调整方法、装置、电子设备和存储介质
US8995268B2 (en) Method for controlling a flow in a packet switching network
CN101854308B (zh) VoIP***高音质服务网络自适应实现方法
EP2936770A1 (en) Apparatus and methods for controlling jitter buffer
CN108494698B (zh) 一种基于传输速率的拥塞控制方法
US20110010625A1 (en) Method for Manually Optimizing Jitter, Delay and Synch Levels in Audio-Video Transmission
US7072291B1 (en) Devices, softwares and methods for redundantly encoding a data stream for network transmission with adjustable redundant-coding delay
TW200849842A (en) Method of regulating the transmission jitter within a reception terminal
CN109495660B (zh) 一种音频数据的编码方法、装置、设备和存储介质
CN102905128A (zh) 编解码处理器在无线视频传输过程中码率控制的方法
CN108881931A (zh) 一种数据缓冲方法及网络设备
CN105791735A (zh) 用于视频通话码流动态调整的方法和***
CN104168218B (zh) 抖动缓冲方法及装置
CN105472404A (zh) 一种视频业务中的数据处理方法
CN104754339A (zh) I帧调整方法、装置及***
EP1133832A1 (en) Method and apparatus for multiplexing voice and data packets in a cdma system
CN107979482B (zh) 一种信息处理方法、装置、发送端、去抖动端、接收端
CN106331847B (zh) 音视频播放方法及设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant