CN104618195B - 带宽估测方法和装置 - Google Patents
带宽估测方法和装置 Download PDFInfo
- Publication number
- CN104618195B CN104618195B CN201510085380.8A CN201510085380A CN104618195B CN 104618195 B CN104618195 B CN 104618195B CN 201510085380 A CN201510085380 A CN 201510085380A CN 104618195 B CN104618195 B CN 104618195B
- Authority
- CN
- China
- Prior art keywords
- packet
- bandwidth
- data
- bandwidth detection
- data packet
- 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.)
- Active
Links
Abstract
本发明涉及一种带宽估测方法和装置。所述方法包括以下步骤:接收数据帧;获取观测到的带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小;根据所述带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小估算发送端到接收端的最小信道容量值;根据所述最小信道容量值得到可用带宽的估计值。上述带宽估测方法和装置,以传输数据包自身组成的带宽探测包对进行带宽探测,不需额外使用其他的带宽探测包,节省了数据流量,降低了网络拥塞,根据带宽探测包对中数据包大小及带宽探测包对的散列间隔估算最小信道容量值,并根据最小信道容量值得到可用带宽的估计值,让发送端根据可用带宽的估计值调整发送码率,能快速提升收敛速度。
Description
技术领域
本发明涉及网络应用领域,特别是涉及一种带宽估测方法和装置。
背景技术
为了保证音视频通话的质量,需要对音视频通话的传输链路上的信道的可用带宽进行估计,再调整音视频通话数据的传输速率。
传统的带宽探测有两种,一种是需要按照一定的发包模式要求,主动发送探测包探测带宽,接收端通过分析探测包延时信息估算带宽值,称为主动型带宽探测。然而传动的主动型带宽探测技术估计可用带宽时,需要额外的带宽探测包,带来的附加探测数据流量会消耗用户的流量,并且在网络拥塞时会加剧网络拥塞。另一种是根据拥塞模型,通过有效数据音视频数据包的丢包、延时等网络特性的变化“感知”带宽,称为拥塞感知型带宽探测。然而拥塞感知型带宽探测技术估计可用带宽时,根据丢包/延时的变化估计带宽,导致拥塞控制调节滞后,因为不知上限在哪,且无线网络可用带宽时变,往往需要频繁上探感知带宽上限,其收敛速度慢。
发明内容
基于此,有必要针对传统的主动型带宽探测需额外发送探测包容易加剧网络拥塞,拥塞感知型带宽探测需频繁上探感知带宽上限其收敛速度慢的问题,提供一种带宽估测方法和装置,能降低网络拥塞,并提升收敛速度。
一种带宽估测方法,包括以下步骤:
接收数据帧;
获取观测到的带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小;
根据所述带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小估算发送端到接收端的最小信道容量值;
根据所述最小信道容量值得到可用带宽的估计值。
一种带宽估测方法,包括以下步骤:
对采集的数据帧进行编码,生成二进制码流;
将所述二进制码流分成多个数据包;
将数据帧中相邻两个数据包组成带宽探测包对;
发送包含所述带宽探测包对的数据帧;
接收反馈的可用带宽的估计值;其中,所述可用带宽的估计值是接收端根据接收数据帧后获取观测到的带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小,根据所述带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小估算发送端到接收端的最小信道容量值,以及根据所述最小信道容量值得到可用带宽的估计值。
一种带宽估测装置,其特征在于,包括:
接收模块,用于接收数据帧;
包对信息获取模块,用于获取观测到的所述带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小;
信道容量估算模块,用于根据所述带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小估算发送端到接收端的最小信道容量值;
带宽估计模块,用于根据所述最小信道容量值得到可用带宽的估计值。
一种带宽估测装置,包括:
编码模块,用于对采集的数据帧进行编码,生成二进制码流;
分包模块,用于将所述二进制码流分成多个数据包;
包对组成模块,用于将数据帧中相邻两个数据包组成带宽探测包对;
发送模块,用于发送包含所述带宽探测包对的视频数据帧;
反馈接收模块,用于接收反馈的可用带宽的估计值;其中,所述可用带宽的估计值是接收端根据接收数据帧后获取观测到的所述带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小,根据所述带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小估算发送端到接收端的最小信道容量值,以及根据所述最小信道容量值得到可用带宽的估计值。
上述带宽估测方法和装置,以传输数据包自身组成的带宽探测包对进行带宽探测,不需额外使用其他的带宽探测包,节省了数据流量,降低了网络拥塞,根据带宽探测包对中数据包大小及带宽探测包对的散列间隔估算最小信道容量值,并根据最小信道容量值得到可用带宽的估计值,并将估计值反馈给发送端,让发送端根据可用带宽的估计值调整发送码率,能快速提升收敛速度。
附图说明
图1为一个实施例中带宽估测方法的流程图;
图2为视频数据帧编码组包的示意图;
图3为带宽探测包对经过瓶颈节点的过程效果示意图;
图4为一个实施例中带宽估测方法的流程图;
图5为一个实施例中带宽估测装置的结构示意图;
图6为另一个实施例中带宽估测装置的结构示意图;
图7为一个实施例中带宽估测系统的架构框图;
图8为能实现本发明实施例的一个计算机系统的模块图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
因主动型带宽探测方法需额外使用带宽探测包,额外的探测包会消耗用户的流量,在网络拥塞时加剧网络拥塞。拥塞感知型带宽探测方法会根据丢包和延时的变化估计带宽,因无线网络可用带宽时变,需要频繁上探感知带宽上限,其收敛速度慢。为了解决上述问题,本发明结合主动型宽带探测方法和拥塞感知型带宽探测方法各自的优点,采用视频数据包作为带宽探测包,这样不需要额外流量,通过包对散列法快速探测到端到端路径的信道容量值,得到信道容量值后,根据信道容量值得到可用带宽的初始估计值,将初始估计值反馈给发送端,使发送端的码率快速达到可用带宽的初始估计值附近,接收端再根据丢包和/或延时的变化动态微调可用带宽的估计值。本发明的带宽估测方法会降低网络拥塞,使得可用带宽的估计快速收敛。
图1为一个实施例中带宽估测方法的流程图。如图1所示,一种带宽估测方法,以接收端的角度描述,具体包括以下步骤:
步骤102,接收视频数据帧。
本实施例中,接收端接收视频数据帧,按照与发送端对带宽探测包对的约定的特点识别带宽探测包对。
接收端接收的视频数据帧为发送端发送的视频数据帧。发送端发送的视频数据帧对原始的视频数据帧进行编码、分包和组包等处理的视频数据帧。具体处理的过程包括:
(1)对采集的视频数据帧进行编码,生成二进制码流。
本实施例中,发送端通过摄像头采集原始视频流,将原始视频流经过视频编码器进行编码后,生成二进制码流。原始视频流即为一帧一帧的视频数据帧组成。对每一帧视频数据帧进行编码,生成二进制码流。可采用H.264进行编码。
(2)将该二进制码流分成多个数据包。
由于网络有最大传输单元大小限制,对各个视频数据帧编码后分成若干大小相等的数据包。例如将视频数据帧编码压缩后分成N(N大于或等于2)个数据包,分别为P1、P2、……、PN。一帧视频数据帧大小为10KB(千字节),分成10个大小相等的数据包,则每个数据包为1KB;另一帧视频数据帧大小为5KB,分成10个大小相等的数据包,则每个数据包大小为0.5KB。
(3)将视频数据帧中相邻两个数据包组成带宽探测包对。
为了保证带宽探测的精度,带宽探测包对需要满足两个条件:1)数据包足够大;2)数据包间隔足够小,“背靠背”(back-to-back)地发包,以减少背景数据或其他竞争数据插入包对之间的可能性。为此,可以使用满足上述两个条件的编码后的视频数据包充当带宽探测包,例如I帧编码后的二进制码流长度相对较大,可以分成若干较大的数据包,运动大时部分P帧也满足上述两个条件。I帧是内部画面,I帧通常是每个GOP(MPEG所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,作为随机访问的参考点,可以当成图像。P帧是由前面的I帧或P帧预测得到的,它比较与它前面的P帧或者I帧之间的相同信息或数据,也即考虑运动的特性进行帧间压缩。
本实施例中,将视频数据帧中相邻两个数据包中第一个数据包添加实时传输协议包头后暂时存放于缓存中;将视频数据帧中相邻两个数据包中第二个数据包添加的实时传输协议包头中的发送时间戳与第一个数据包的发送时间戳配置相等;且第一数据包和第二数据包组成的包对的大小大于设定的阈值;将添加了实时传输协议包头的第一数据包和第二数据包组成带宽探测包对。
具体的,将P1数据包加完RTP(Real-time Transport Protocol,实时传输协议)包头组包后先暂时存放在缓存中,将P2数据包的RTP包头的发送时间戳配置和P1的发送时间戳相同,组包完成后“背靠背”地连续发送P1和P2。RTP包头中包括包序号、包位于一帧数据中的序号、发送时间戳等。包序号是用于标识数据包的唯一性,例如1、2、3、4、5、6等。包位于一帧数据中的序号,是指包在所属数据帧中的序号,例如数据包123组成第一帧,数据包456组成第二帧,数据包4的包位于一帧数据帧的序号则是第二帧中的1号。
此外,将其余的视频数据包加RTP包头,不进行缓存处理,组包完成后直接发送到网络上。
为了节省码流,使用某视频帧中相邻两个数据包作为带宽探测包。进一步,为了简便,可以约定使用某一帧的前两个数据包作为带宽探测包。
图2为视频数据帧编码组包的示意图。如图2所示,将视频数据帧经过编码后组包,将视频数据帧的前两个数据包P1和P2组成带宽探测包对,P1和P2背靠背的发送,将其余的数据包P3至PN加上RTP包头完成组包直接发送到网络上。视频数据帧的前两个数据包P1和P2的各自大小大于阈值,且小于最大传送单元大小,且将两个数据包P1和P2的发送时间戳设置相等。
(4)发送包含该带宽探测包对的视频数据帧。
本实施例中,发送端发送包含带宽探测包对的视频数据帧。
步骤104,判断该视频数据帧的前两个数据包是否为带宽探测包对,若是,执行步骤106,若否,执行步骤114。
本实施例中,步骤104包括:判断视频数据帧中相邻两个数据包各自的大小是否超过设定的阈值,以及判断该相邻两个数据包的发送时间戳是否相同;若该相邻两个数据包的每个数据包大小超过设定的阈值且小于最大传送单元大小,并且该相邻两个数据包的发送时间戳相同,则该相邻两个数据包为带宽探测包对。
具体的,相邻两个数据包的大小采用L表示,设定阈值采用Lth表示,最大传送单元大小采用MTU表示。MTU,即Maximum Transmission Unit,是指一种通信协议的某一层上面所能通过的最大数据报大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。需要满足Lth<L<MTU且视频数据帧的前两个数据包的发送时间戳相同。
步骤106,若该相邻两个数据包为带宽探测包对,则获取观测到的该带宽探测包对的散列间隔及该带宽探测包对中数据包的大小,然后执行步骤108。
本实施例中,获取观测到的带宽探测包对中RTP包头里的信息,以及带宽探测包对的散列间隔。RTP包头里的信息包括带宽探测包对中各个数据包的大小。该带宽探测包对中数据包的大小是指带宽探测包对中一个数据包的大小。因一视频帧中的数据包大小相等,所以采用一个数据包的大小表示带宽探测包对中数据包大小。
步骤108,根据该带宽探测包对的散列间隔及该带宽探测包对中数据包的大小估算发送端到接收端的最小信道容量值,然后执行步骤110。
因数据包在信道传输中,在瓶颈节点,由于传输速率减小,每个数据包的传输时间会增大,因此包对间隔会被拉大,如图3所示,为带宽探测包对经过瓶颈节点的过程效果示意图。在图3中,假设在S->R的端到端路径中,Ni是一个瓶颈节点,其信道容量是Ci。带宽探测包对(P1、P2)大小为L,在进入Ni缓冲队列前的时间间隔为Δin,离开缓冲队列的时间间隔为Δout,则存在如下关系,
将式(1)推广到S->R端到端路径的所有节点,则接收端观测到的包对散列间隔和信道容量的关系如式(2)
式(2)中,ΔR为接收端观测到的带宽探测包对散列间隔,Δ0为带宽探测包对的发送间隔,SR为对应的瞬时发送码率,C是整条链路的最小信道容量,为最大可用带宽的上限。由式(2)可知,因为瞬时发送码率决定了包对法探测带宽的上限,即只能准确探测到信道容量低于SR的情况,“背靠背”发包时,Δ0足够小,即SR>>Ci(即SR远大于Ci),上式(2)可简化为
接收端检测到带宽探测包对后,假设P1的接收时间是t1,P2的接收时间是t2,可通过上式(3)计算出本次测试到的端到端的最小信道容量值。
根据(4)式可知,获取观测到的带宽探测包对的散列间隔的步骤包括:获取观测到的该带宽探测包对中两个数据包的接收时间,计算两个数据包接收时间的差值,将该两个数据包接收时间的差值的绝对值作为该带宽探测包对的散列间隔;再求取该带宽探测包对中数据包的大小与该带宽探测包对的散列间隔的比值,将该比值作为发送端到接收端的最小信道容量值。通过带宽探测包对中两个数据包的接收时间估测带宽探测包对的散列间隔,计算简便,复杂度低。
因受链路中Cross Traffic(公共信道上传输的其它数据)及接收端工作状态的影响,单次测试得到的最小信道容量值C可能波动性较大,因此需要将多次探测的结果进行滤波去噪处理,去除异常值及噪声,以得到稳定一致的信道容量值。
进一步的,上述带宽估测方法还包括:获取多次根据带宽探测包对的散列间隔及带宽探测包对中数据包的大小估算的发送端到接收端的最小信道容量值;对多个最小信道容量值进行滤波处理得到滤波后的最小信道容量值。计算公式如式(5)所示。
式(5)中,为滤波后的最小信道容量值,Cn为第n次根据带宽探测包对的散列间隔及带宽探测包对中数据包的大小估算的发送端到接收端的最小信道容量值。通过滤波处理得到的最小容量信道值更加准确和稳定。
滤波算法可根据接收端中系统的复杂度承受能力选择,如可选择均值滤波(MeanFiltering)、中值滤波(Median Filtering)或卡尔曼滤波(Kalman Filtering)处理,前两种复杂度较低,最后一种复杂度稍高。
步骤110,根据该最小信道容量值得到可用带宽的初始估计值,并将该可用带宽的初始估计值反馈给发送端,然后执行步骤112。
当采用多次根据带宽探测包对的散列间隔及带宽探测包对中数据包的大小估算的发送端到接收端的最小信道容量值;对多个最小信道容量值进行滤波处理得到滤波后的最小信道容量值。则最小信道容量值得到可用带宽的初始估计值,并将可用带宽的初始估计值反馈给发送端的步骤包括:根据滤波后的最小信道容量值得到可用带宽的初始估计值,并将该可用带宽的初始估计值反馈给发送端。
接收端通过RTCP(Real-time Control Protocol,实时传输控制协议)将可用带宽的初始估计值反馈给发送端。
因Cross Traffic的存在,信道容量并不是全部可用,只有信道中尚未被占用的带宽资源才可使用。
在一个实施例中,取最小信道容量的预设比例值作为可用带宽的初始估计值A0,例如预设比例为η(0<η≤1)。将该可用带宽的初始估计值反馈给发送端。发送端以该可用带宽的初始估计值为码率发送视频数据帧,使得视频数据帧的发送码率快速达到最大传输速率(即可用带宽的初始估计值A0)附近,接收端则根据丢包、延时的变化动态微调可用带宽的估计值A。
在一个实施例中,考虑到实时音视频通话中音频数据需要占用一定的带宽Ba,接收端以Bv=C-Ba作为视频可用带宽的初始估计值,即将最小信道容量减去音频数据所占带宽后的值作为可用带宽的初始估计值;并将该可用带宽的初始估计值反馈给发送端,使发送端以该可用带宽的初始估计值作为码率发送视频。
在一个实施例中,将最小信道容量减去音频数据所占带宽得到差值,再将该差值的预设比例值作为可用带宽的初始估计值。
具体的,将最小信道容量减去音频数据所占带宽得到差值,即Bv=C-Ba,再将差值与预设比例η(0<η≤1)相乘得到预设比例值,即ηBv。
步骤112,根据该初始估计值进行动态微调可用带宽的估计值,然后执行步骤114。
本实施例中,当发送端以可用带宽的初始估计值为发送码率发送视频数据帧时,接收端根据延时、丢包的变化动态微调可用带宽估计值,从粗到细,可用带宽将快速收敛。发送端的发送码率小于端到端的可用带宽,那么接收端检测到的数据包延时是固定值或波动较小;发送端的发送码率大于可用带宽,则数据包在链路中排队,由此产生排队延时,当排队超过缓存长度溢出时,会产生丢包,接收端检测到延时增大或丢包率增大。接收端根据延时情况和丢包率动态微调可用带宽估计值,主要依据是延时波动越大、丢包率越大,则下调可用带宽的估计值,延时波动越小,丢包率越小,则上调可用带宽的估计值。
发送端以初始估计值为码率发送视频数据帧后,接收端根据延时情况和丢包情况调整可用带宽的估计值,并将调整后的可用带宽的估计值反馈给发送端,发送端再根据可用带宽的估计值调整发送的码率。
由此可知,可根据最小信道容量值得到可用带宽的估计值,具体包括步骤110和112。
步骤114,对视频数据帧进行解码并显示。
具体的,当视频数据帧中没有带宽探测包对时,则直接解码视频数据帧,并显示,当视频数据帧中包含带宽探测包对时,根据带宽探测包对对最小信道容量值进行估计,再估计可用带宽的估计值,然后对视频数据帧中所有数据包进行解码,并显示。
此外,数据帧除了采用视频数据帧,还可采用其他数据帧。带宽估测方法除了应用于音视频通话中,还可应用于其他测量带宽的场景中,如文本数据传输。
上述带宽估测方法,以视频数据包自身组成的带宽探测包对进行带宽探测,不需额外使用其他的带宽探测包,节省了数据流量,降低了网络拥塞,根据带宽探测包对中数据包大小及带宽探测包对的散列间隔估算最小信道容量值,并根据最小信道容量值得到可用带宽的初始估计值,并将初始估计值反馈给发送端,让发送端根据可用带宽的初始估计值调整发送码率,能快速提升收敛速度。此外,不需进行频繁上探感知带宽上限,不容易出现超带宽情况。能及时反馈可用带宽的估计值给发送端,让发送端能及时根据可用带宽的估计值调整发送码率,有利于网络突变时及时反馈发送端动作。以音视频通话中的视频数据包组成带宽探测包对,探测数据流路径和实际有效数据流路径一致,带宽探测信息更加准确,也利于探测包对隐藏于有效数据传输中。
图4为一个实施例中带宽估测方法的流程图。如图4所示,该带宽估测方法,以发送端角度描述,具体包括以下步骤:
步骤402,对采集的视频数据帧进行编码,生成二进制码流。
本实施例中,发送端通过摄像头采集原始视频流,将原始视频流经过视频编码器进行编码后,生成二进制码流。原始视频流即为一帧一帧的视频数据帧组成。对每一帧视频数据帧进行编码,生成二进制码流。
步骤404,将该二进制码流分成多个数据包。
由于网络有最大传输单元大小限制,对各个视频数据帧编码后分成若干大小相等的数据包。例如将视频数据帧编码压缩后分成N(N大于或等于2)个数据包,分别为P1、P2、……、PN。一帧视频数据帧大小为10KB(千字节),分成10个大小相等的数据包,则每个数据包为1KB;另一帧视频数据帧大小为5KB,分成10个大小相等的数据包,则每个数据包大小为0.5KB。
步骤406,将视频数据帧中相邻两个数据包组成带宽探测包对。
为了保证带宽探测的精度,带宽探测包对需要满足两个条件:1)数据包足够大;2)数据包间隔足够小,“背靠背”(back-to-back)地发包,以减少背景数据或其他竞争数据插入包对之间的可能性。为此,可以使用满足上述两个条件的编码后的视频数据包充当带宽探测包,例如I帧编码后的二进制码流长度相对较大,可以分成若干较大的数据包,运动大时部分P帧也满足上述两个条件。I帧是内部画面,I帧通常是每个GOP(MPEG所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,作为随机访问的参考点,可以当成图像。P帧是由前面的I帧或P帧预测得到的,它比较与它前面的P帧或者I帧之间的相同信息或数据,也即考虑运动的特性进行帧间压缩。
本实施例中,将视频数据帧中相邻两个数据包中第一个数据包添加实时传输协议包头后暂时存放于缓存中;将视频数据帧中相邻两个数据包中第二个数据包添加的实时传输协议包头中的发送时间戳与第一个数据包的发送时间戳配置相等;且第一数据包和第二数据包组成的包对的大小大于设定的阈值;将添加了实时传输协议包头的第一数据包和第二数据包组成带宽探测包对。
具体的,将P1数据包加完RTP(Real-time Transport Protocol,实时传输协议)包头组包后先暂时存放在缓存中,将P2数据包的RTP包头的发送时间戳配置和P1的发送时间戳相同,组包完成后“背靠背”地连续发送P1和P2。RTP包头中包括包序号、包位于一帧数据中的序号、发送时间戳等。包序号是用于标识数据包的唯一性,例如1、2、3、4、5、6等。包位于一帧数据中的序号,是指包在所属数据帧中的序号,例如数据包123组成第一帧,数据包456组成第二帧,数据包4的包位于一帧数据帧的序号则是第二帧中的1号。
此外,将其余的视频数据包加RTP包头,不进行缓存处理,组包完成后直接发送到网络上。
为了节省码流,使用某视频帧中相邻两个数据包作为带宽探测包。进一步,为了简便,可以约定使用某一帧的前两个数据包作为带宽探测包。
步骤408,发送包含该带宽探测包对的视频数据帧。
本实施例中,发送端发送包含带宽探测包对的视频数据帧。
步骤410,接收反馈的可用带宽的初始估计值;其中,该可用带宽的初始估计值是接收端根据判断出该视频数据帧中相邻两个数据包为带宽探测包对时,获取观测到的该带宽探测包对的散列间隔及该带宽探测包对中数据包的大小,根据该带宽探测包对的散列间隔及该带宽探测包对中数据包的大小估算发送端到接收端的最小信道容量值,以及根据该最小信道容量值得到可用带宽的初始估计值。
本实施例中,可接收反馈的可用带宽的估计值,该可用带宽的估计值是根据最小信道容量值得到的。发送端可以估计值为码率发送数据帧,以使接收端根据延时情况和/或丢包率对可用带宽的估计值进行动态微调。
本实施例中,判断该视频数据帧的前两个数据包是否为带宽探测包对包括:判断视频数据帧中相邻两个数据包各自的大小是否超过设定的阈值,以及判断该相邻两个数据包的发送时间戳是否相同;若该相邻两个数据包的每个数据包大小超过设定的阈值且小于最大传送单元大小,并且该相邻两个数据包的发送时间戳相同,则该相邻两个数据包为带宽探测包对。
获取观测到的带宽探测包对的散列间隔的步骤包括:获取观测到的该带宽探测包对中两个数据包的接收时间,计算两个数据包接收时间的差值,将该两个数据包接收时间的差值的绝对值作为该带宽探测包对的散列间隔;再求取该带宽探测包对中数据包的大小与该带宽探测包对的散列间隔的比值,将该比值作为发送端到接收端的最小信道容量值。
进一步的,获取多次根据带宽探测包对的散列间隔及带宽探测包对中数据包的大小估算的发送端到接收端的最小信道容量值;对多个最小信道容量值进行滤波处理得到滤波后的最小信道容量值。
步骤412,以该初始估计值为码率发送视频数据帧,以使接收端根据该初始估计值进行动态微调可用带宽的估计值。
本实施例中,发送端以初始估计值为码率发送视频数据帧后,接收端根据延时情况和丢包情况调整可用带宽的估计值,并将调整后的可用带宽的估计值反馈给发送端,发送端再根据可用带宽的估计值调整发送的码率。
上述带宽估测方法,以视频数据包自身组成的带宽探测包对进行带宽探测,不需额外使用其他的带宽探测包,节省了数据流量,降低了网络拥塞,接收端根据带宽探测包对中数据包大小及带宽探测包对的散列间隔估算最小信道容量值,并根据最小信道容量值得到可用带宽的初始估计值,并将初始估计值反馈给发送端,让发送端根据可用带宽的初始估计值调整发送码率,能快速提升收敛速度。此外,不需进行频繁上探感知带宽上限,不容易出现超带宽情况。能及时反馈可用带宽的估计值给发送端,让发送端能及时根据可用带宽的估计值调整发送码率,有利于网络突变时及时反馈发送端动作。以音视频通话中的视频数据包组成带宽探测包对,探测数据流路径和实际有效数据流路径一致,带宽探测信息更加准确,也利于探测包对隐藏于有效数据传输中。
图5为一个实施例中带宽估测装置的结构示意图。如图5所示,该带宽估测装置,以接收端角度描述,包括接收模块510、判断模块520、包对信息获取模块530、信道容量估算模块540、带宽估计模块550、反馈模块560和调整模块570。其中:
接收模块510用于接收视频数据帧。
本实施例中,接收端中接收模块510接收视频数据帧,按照与发送端对带宽探测包对的约定的特点识别带宽探测包对。
接收端中接收模块510接收的视频数据帧为发送端发送的视频数据帧。发送端发送的视频数据帧对原始的视频数据帧进行编码、分包和组包等处理的视频数据帧。具体处理的过程包括:
(1)对采集的视频数据帧进行编码,生成二进制码流。
本实施例中,发送端通过摄像头采集原始视频流,将原始视频流经过视频编码器进行编码后,生成二进制码流。原始视频流即为一帧一帧的视频数据帧组成。对每一帧视频数据帧进行编码,生成二进制码流。
(2)将该二进制码流分成多个数据包。
由于网络有最大传输单元大小限制,对各个视频数据帧编码后分成若干大小相等的数据包。例如将视频数据帧编码压缩后分成N(N大于或等于2)个数据包,分别为P1、P2、……、PN。一帧视频数据帧大小为10KB(千字节),分成10个大小相等的数据包,则每个数据包为1KB;另一帧视频数据帧大小为5KB,分成10个大小相等的数据包,则每个数据包大小为0.5KB。
(3)将视频数据帧中相邻两个数据包组成带宽探测包对。
为了保证带宽探测的精度,带宽探测包对需要满足两个条件:1)数据包足够大;2)数据包间隔足够小,“背靠背”(back-to-back)地发包,以减少背景数据或其他竞争数据插入包对之间的可能性。为此,可以使用满足上述两个条件的编码后的视频数据包充当带宽探测包,例如I帧编码后的二进制码流长度相对较大,可以分成若干较大的数据包,运动大时部分P帧也满足上述两个条件。
本实施例中,将视频数据帧中相邻两个数据包中第一个数据包添加实时传输协议包头后暂时存放于缓存中;将视频数据帧中相邻两个数据包中第二个数据包添加的实时传输协议包头中的发送时间戳与第一个数据包的发送时间戳配置相等;且第一数据包和第二数据包组成的包对的大小大于设定的阈值;将添加了实时传输协议包头的第一数据包和第二数据包组成带宽探测包对。
具体的,将P1数据包加完RTP(Real-time Transport Protocol,实时传输协议)包头组包后先暂时存放在缓存中,将P2数据包的RTP包头的发送时间戳配置和P1的发送时间戳相同,组包完成后“背靠背”地连续发送P1和P2。RTP包头中包括包序号、包位于一帧数据中的序号、发送时间戳等。包序号是用于标识数据包的唯一性,例如1、2、3、4、5、6等。包位于一帧数据中的序号,是指包在所属数据帧中的序号,例如数据包123组成第一帧,数据包456组成第二帧,数据包4的包位于一帧数据帧的序号则是第二帧中的1号。
此外,将其余的视频数据包加RTP包头,不进行缓存处理,组包完成后直接发送到网络上。
为了节省码流,使用某视频帧中相邻两个数据包作为带宽探测包。进一步,为了简便,可以约定使用某一帧的前两个数据包作为带宽探测包。
图2为视频数据帧编码组包的示意图。如图2所示,将视频数据帧经过编码后组包,将视频数据帧的前两个数据包P1和P2组成带宽探测包对,P1和P2背靠背的发送,将其余的数据包P3至PN加上RTP包头完成组包直接发送到网络上。视频数据帧的前两个数据包P1和P2的各自大小大于阈值,且小于最大传送单元大小,且将两个数据包P1和P2的发送时间戳设置相等。
(4)发送包含该带宽探测包对的视频数据帧。
本实施例中,发送端发送包含带宽探测包对的视频数据帧。
判断模块520用于判断该视频数据帧中相邻两个数据包是否为带宽探测包对。
本实施例中,判断模块520用于判断该视频数据帧中相邻两个数据包各自的大小是否超过设定的阈值,以及判断该相邻两个数据包的发送时间戳是否相同;若该相邻两个数据包的每个数据包大小超过设定的阈值且小于最大传送单元大小,并且相邻两个数据包的发送时间戳相同,则该相邻两个数据包为带宽探测包对。
具体的,相邻两个数据包的大小采用L表示,设定阈值采用Lth表示,最大传送单元大小采用MTU表示。MTU是指一种通信协议的某一层上面所能通过的最大数据报大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。需要满足Lth<L<MTU且视频数据帧的前两个数据包的发送时间戳相同。
包对信息获取模块530用于若该相邻两个数据包为带宽探测包对,则获取观测到的该带宽探测包对的散列间隔及该带宽探测包对中数据包的大小。
本实施例中,获取观测到的带宽探测包对中RTP包头里的信息,以及带宽探测包对的散列间隔。RTP包头里的信息包括带宽探测包对中各个数据包的大小。该带宽探测包对中数据包的大小是指带宽探测包对中一个数据包的大小。因一视频帧中的数据包大小相等,所以采用一个数据包的大小表示带宽探测包对中数据包大小。
信道容量估算模块540用于根据该带宽探测包对的散列间隔及该带宽探测包对中数据包的大小估算发送端到接收端的最小信道容量值。
因数据包在信道传输中,在瓶颈节点,由于传输速率减小,每个数据包的传输时间会增大,因此包对间隔会被拉大,如图3所示,为带宽探测包对经过瓶颈节点的过程效果示意图。在图3中,假设在S->R的端到端路径中,Ni是一个瓶颈节点,其信道容量是Ci。带宽探测包对(P1、P2)大小为L,在进入Ni缓冲队列前的时间间隔为Δin,离开缓冲队列的时间间隔为Δout,则存在如下关系,
将式(1)推广到S->R端到端路径的所有节点,则接收端观测到的包对散列间隔和信道容量的关系如式(2)
式(2)中,ΔR为接收端观测到的带宽探测包对散列间隔,Δ0为带宽探测包对的发送间隔,SR为对应的瞬时发送码率,C是整条链路的最小信道容量,为最大可用带宽的上限。由式(2)可知,因为瞬时发送码率决定了包对法探测带宽的上限,即只能准确探测到信道容量低于SR的情况,“背靠背”发包时,Δ0足够小,即SR>>Ci(即SR远大于Ci),上式(2)可简化为
接收端检测到带宽探测包对后,假设P1的接收时间是t1,P2的接收时间是t2,可通过上式(3)计算出本次测试到的端到端的最小信道容量值。
根据(4)式可知,包对信息获取模块530还用于获取观测到的该带宽探测包对的两个数据包的接收时间,计算两个数据包接收时间的差值,将该差值的绝对值作为该带宽探测包对的散列间隔;信道容量估算模块540还用于求取该带宽探测包对中数据包的大小与该带宽探测包对的散列间隔的比值,将该比值作为该发送端到接收端的最小信道容量值。通过带宽探测包对中两个数据包的接收时间估测带宽探测包对的散列间隔,计算简便,复杂度低。
因受链路中Cross Traffic(公共信道上传输的其它数据)及接收端工作状态的影响,单次测试得到的最小信道容量值C可能波动性较大,因此需要将多次探测的结果进行滤波去噪处理,去除异常值及噪声,以得到稳定一致的信道容量值。
进一步的,上述带宽估测装置还包括滤波模块580。信道容量估算模块540获取多次根据带宽探测包对的散列间隔及带宽探测包对中数据包的大小估算的发送端到接收端的最小信道容量值;滤波模块580对多个最小信道容量值进行滤波处理得到滤波后的最小信道容量值。计算公式如式(5)所示。
式(5)中,为滤波后的最小信道容量值,Cn为第n次根据带宽探测包对的散列间隔及带宽探测包对中数据包的大小估算的发送端到接收端的最小信道容量值。
滤波算法可根据接收端中系统的复杂度承受能力选择,如可选择均值滤波(MeanFiltering)、中值滤波(Median Filtering)或卡尔曼滤波(Kalman Filtering)处理,前两种复杂度较低,最后一种复杂度稍高。
带宽估计模块550用于根据该最小信道容量值得到可用带宽的初始估计值。
当采用多次根据带宽探测包对的散列间隔及带宽探测包对中数据包的大小估算的发送端到接收端的最小信道容量值;对多个最小信道容量值进行滤波处理得到滤波后的最小信道容量值。则带宽估计模块550根据滤波后的最小信道容量值得到可用带宽的初始估计值。
此外,带宽估计模块550可根据该最小信道容量值得到可用带宽的估计值。
因Cross Traffic的存在,信道容量并不是全部可用,只有信道中尚未被占用的带宽资源才可使用。
在一个实施例中,带宽估计模块550取最小信道容量的预设比例值作为可用带宽的初始估计值A0,例如预设比例为η(0<η≤1)。将该可用带宽的初始估计值反馈给发送端。发送端以该可用带宽的初始估计值为码率发送视频数据帧,使得视频数据帧的发送码率快速达到最大传输速率(即可用带宽的初始估计值A0)附近,接收端则根据丢包、延时的变化动态微调可用带宽的估计值A。
在一个实施例中,考虑到实时音视频通话中音频数据需要占用一定的带宽Ba,接收端以Bv=C-Ba作为视频可用带宽的初始估计值,即带宽初始值估计模块550将最小信道容量减去音频数据所占带宽后的值作为可用带宽的初始估计值;并将该可用带宽的初始估计值反馈给发送端,使发送端以该可用带宽的初始估计值作为码率发送视频。
在一个实施例中,带宽估计模块550将最小信道容量减去音频数据所占带宽得到差值,再将该差值的预设比例值作为可用带宽的初始估计值。
具体的,将最小信道容量减去音频数据所占带宽得到差值,即Bv=C-Ba,再将差值与预设比例η(0<η≤1)相乘得到预设比例值,即ηBv。
反馈模块560用于将该可用带宽的初始估计值反馈给发送端。
调整模块570用于根据该初始估计值进行动态微调可用带宽的估计值。
本实施例中,当发送端以可用带宽的初始估计值为发送码率发送视频数据帧时,接收端根据延时、丢包的变化动态微调可用带宽估计值,从粗到细,可用带宽将快速收敛。发送端的发送码率小于端到端的可用带宽,那么接收端检测到的数据包延时是固定值或波动较小;发送端的发送码率大于可用带宽,则数据包在链路中排队,由此产生排队延时,当排队超过缓存长度溢出时,会产生丢包,接收端检测到延时增大或丢包率增大。接收端根据延时情况和丢包率动态微调可用带宽估计值,主要依据是延时波动越大、丢包率越大,则下调可用带宽的估计值,延时波动越小,丢包率越小,则上调可用带宽的估计值。
发送端以初始估计值为码率发送视频数据帧后,接收端根据延时情况和丢包情况调整可用带宽的估计值,并将调整后的可用带宽的估计值反馈给发送端,发送端再根据可用带宽的估计值调整发送的码率。
上述带宽估测装置,以视频数据包自身组成的带宽探测包对进行带宽探测,不需额外使用其他的带宽探测包,节省了数据流量,降低了网络拥塞,根据带宽探测包对中数据包大小及带宽探测包对的散列间隔估算最小信道容量值,并根据最小信道容量值得到可用带宽的初始估计值,并将初始估计值反馈给发送端,让发送端根据可用带宽的初始估计值调整发送码率,能快速提升收敛速度。此外,不需进行频繁上探感知带宽上限,不容易出现超带宽情况。能及时反馈可用带宽的估计值给发送端,让发送端能及时根据可用带宽的估计值调整发送码率,有利于网络突变时及时反馈发送端动作。以音视频通话中的视频数据包组成带宽探测包对,探测数据流路径和实际有效数据流路径一致,带宽探测信息更加准确,也利于探测包对隐藏于有效数据传输中。
此外,上述带宽估测装置还包括视频解码模块590,用于当视频数据帧中没有带宽探测包对时,则直接解码视频数据帧,并显示,当视频数据帧中包含带宽探测包对时,根据带宽探测包对对最小信道容量值进行估计,再估计可用带宽的估计值,然后对视频数据帧中所有数据包进行解码,并显示。
图6为另一个实施例中带宽估测装置的结构示意图。如图6所示,该带宽估测装置,以发送端角度描述,具体包括编码模块610、分包模块620、包对组成模块630、发送模块640和反馈接收模块650。其中:
编码模块610用于对采集的视频数据帧进行编码,生成二进制码流。
本实施例中,发送端通过摄像头采集原始视频流,将原始视频流经过视频编码器进行编码后,生成二进制码流。原始视频流即为一帧一帧的视频数据帧组成。对每一帧视频数据帧进行编码,生成二进制码流。
分包模块620用于将该二进制码流分成多个数据包。由于网络有最大传输单元大小限制,对各个视频数据帧编码后分成若干大小相等的数据包。例如将视频数据帧编码压缩后分成N(N大于或等于2)个数据包,分别为P1、P2、……、PN。一帧视频数据帧大小为10KB(千字节),分成10个大小相等的数据包,则每个数据包为1KB;另一帧视频数据帧大小为5KB,分成10个大小相等的数据包,则每个数据包大小为0.5KB。
包对组成模块630用于将视频数据帧中相邻两个数据包组成带宽探测包对。为了保证带宽探测的精度,带宽探测包对需要满足两个条件:1)数据包足够大;2)数据包间隔足够小,“背靠背”(back-to-back)地发包,以减少背景数据或其他竞争数据插入包对之间的可能性。为此,可以使用满足上述两个条件的编码后的视频数据包充当带宽探测包,例如I帧编码后的二进制码流长度相对较大,可以分成若干较大的数据包,运动大时部分P帧也满足上述两个条件。
本实施例中,包对组成模块630将视频数据帧中相邻两个数据包中第一个数据包添加实时传输协议包头后暂时存放于缓存中;将视频数据帧中相邻两个数据包中第二个数据包添加的实时传输协议包头中的发送时间戳与第一个数据包的发送时间戳配置相等;且第一数据包和第二数据包组成的包对的大小大于设定的阈值;将添加了实时传输协议包头的第一数据包和第二数据包组成带宽探测包对。
具体的,将P1数据包加完RTP(Real-time Transport Protocol,实时传输协议)包头组包后先暂时存放在缓存中,将P2数据包的RTP包头的发送时间戳配置和P1的发送时间戳相同,组包完成后“背靠背”地连续发送P1和P2。RTP包头中包括包序号、包位于一帧数据中的序号、发送时间戳等。包序号是用于标识数据包的唯一性,例如1、2、3、4、5、6等。包位于一帧数据中的序号,是指包在所属数据帧中的序号,例如数据包123组成第一帧,数据包456组成第二帧,数据包4的包位于一帧数据帧的序号则是第二帧中的1号。
此外,将其余的视频数据包加RTP包头,不进行缓存处理,组包完成后直接发送到网络上。
为了节省码流,使用某视频帧中相邻两个数据包作为带宽探测包。进一步,为了简便,可以约定使用某一帧的前两个数据包作为带宽探测包。
发送模块640用于发送包含该带宽探测包对的视频数据帧。
反馈接收模块650用于接收反馈的可用带宽的初始估计值;其中,该可用带宽的初始估计值是接收端根据判断出该视频数据帧中相邻两个数据包为带宽探测包对时,获取观测到的该带宽探测包对的散列间隔及该带宽探测包对中数据包的大小,根据该带宽探测包对的散列间隔及该带宽探测包对中数据包的大小估算发送端到接收端的最小信道容量值,以及根据该最小信道容量值得到可用带宽的初始估计值。
发送模块640还用于以该初始估计值为码率发送视频数据帧,以使接收端根据该初始估计值进行动态微调可用带宽的估计值。
本实施例中,判断该视频数据帧的前两个数据包是否为带宽探测包对包括:判断视频数据帧中相邻两个数据包各自的大小是否超过设定的阈值,以及判断该相邻两个数据包的发送时间戳是否相同;若该相邻两个数据包的每个数据包大小超过设定的阈值且小于最大传送单元大小,并且该相邻两个数据包的发送时间戳相同,则该相邻两个数据包为带宽探测包对。
获取观测到的带宽探测包对的散列间隔的步骤包括:获取观测到的该带宽探测包对中两个数据包的接收时间,计算两个数据包接收时间的差值,将该两个数据包接收时间的差值的绝对值作为该带宽探测包对的散列间隔;再求取该带宽探测包对中数据包的大小与该带宽探测包对的散列间隔的比值,将该比值作为发送端到接收端的最小信道容量值。
进一步的,获取多次根据带宽探测包对的散列间隔及带宽探测包对中数据包的大小估算的发送端到接收端的最小信道容量值;对多个最小信道容量值进行滤波处理得到滤波后的最小信道容量值。
上述带宽估测装置,以视频数据包自身组成的带宽探测包对进行带宽探测,不需额外使用其他的带宽探测包,节省了数据流量,降低了网络拥塞,接收端根据带宽探测包对中数据包大小及带宽探测包对的散列间隔估算最小信道容量值,并根据最小信道容量值得到可用带宽的初始估计值,并将初始估计值反馈给发送端,让发送端根据可用带宽的初始估计值调整发送码率,能快速提升收敛速度。此外,不需进行频繁上探感知带宽上限,不容易出现超带宽情况。能及时反馈可用带宽的估计值给发送端,让发送端能及时根据可用带宽的估计值调整发送码率,有利于网络突变时及时反馈发送端动作。以音视频通话中的视频数据包组成带宽探测包对,探测数据流路径和实际有效数据流路径一致,带宽探测信息更加准确,也利于探测包对隐藏于有效数据传输中。
图7为一个实施例中带宽估测系统的架构框图。如图7所示,该架构包括发送端和接收端。发送端包括组包发送模块、视频编码模块和质量控制模块,组包发送模块中包括带宽探测模块,带宽探测模块用于带宽探测包对的发送。组包发送模块中带宽探测模块包括图6的带宽估测装置的分包模块620、包对组成模块630和发送模块640。质量控制模块包括反馈接收模块650。视频编码模块即为图6中的编码模块610。接收端包括组包接收模块、视频解码模块、RTCP反馈模块。其中,组包接收模块包括带宽探测模块,该带宽探测模块用于接收带宽探测包对。组包接收模块中的带宽探测模块包括图5的带宽估测装置的接收模块510、判断模块520、包对信息获取模块530、信道容量估算模块540、滤波模块580、带宽估计模块550和调整模块570。RTCP反馈模块即为图5中反馈模块560,视频解码模块即为图5中视频解码模块590。组包发送模块将视频数据码流发送给组包接收模块,且组包发送模块中的带宽探测模块将带宽探测包对发送给组包接收模块的带宽探测模块,组包接收模块将估测的可用带宽的估计值反馈给组包发送模块,以便组包发送模块根据可用带宽的估计值调整发送码率。
图8为能实现本发明实施例的一个计算机系统1000的模块图。该计算机系统1000只是一个适用于本发明的计算机环境的示例,不能认为是提出了对本发明的使用范围的任何限制。计算机系统1000也不能解释为需要依赖于或具有图示的示例性的计算机系统1000中的一个或多个部件的组合。
图8中示出的计算机系统1000是一个适合用于本发明的计算机系统的例子。具有不同子系统配置的其它架构也可以使用。例如有大众所熟知的台式机、笔记本、个人数字助理、智能电话、平板电脑、便携式媒体播放器、机顶盒等类似设备可以适用于本发明的一些实施例。但不限于以上所列举的设备。
如图8所示,计算机系统1000包括处理器1010、存储器1020和系统总线1022。包括存储器1020和处理器1010在内的各种系统组件连接到系统总线1022上。处理器1010是一个用来通过计算机系统中基本的算术和逻辑运算来执行计算机程序指令的硬件。存储器1020是一个用于临时或永久性存储计算程序或数据(例如,程序状态信息)的物理设备。系统总线1020可以为以下几种类型的总线结构中的任意一种,包括存储器总线或存储控制器、外设总线和局部总线。处理器1010和存储器1020可以通过系统总线1022进行数据通信。其中存储器1020包括只读存储器(ROM)或闪存(图中都未示出),以及随机存取存储器(RAM),RAM通常是指加载了操作系统和应用程序的主存储器。
计算机系统1000还包括显示接口1030(例如,图形处理单元)、显示设备1040(例如,液晶显示器)、音频接口1050(例如,声卡)以及音频设备1060(例如,扬声器)。显示设备1040和音频设备1060是用于体验多媒体内容的媒体设备。
计算机系统1000一般包括一个存储设备1070。存储设备1070可以从多种计算机可读介质中选择,计算机可读介质是指可以通过计算机系统1000访问的任何可利用的介质,包括移动的和固定的两种介质。例如,计算机可读介质包括但不限于,闪速存储器(微型SD卡),CD-ROM,数字通用光盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备,或者可用于存储所需信息并可由计算机系统1000访问的任何其它介质。
计算机系统1000还包括输入装置1080和输入接口1090(例如,IO控制器)。用户可以通过输入装置1080,如键盘、鼠标、显示装置1040上的触摸面板设备,输入指令和信息到计算机系统1000中。输入装置1080通常是通过输入接口1090连接到系统总线1022上的,但也可以通过其它接口或总线结构相连接,如通用串行总线(USB)。
计算机系统1000可在网络环境中与一个或者多个网络设备进行逻辑连接。网络设备可以是个人电脑、服务器、路由器、智能电话、平板电脑或者其它公共网络节点。计算机系统1000通过局域网(LAN)接口1100或者移动通信单元1110与网络设备相连接。局域网(LAN)是指在有限区域内,例如家庭、学校、计算机实验室、或者使用网络媒体的办公楼,互联组成的计算机网络。WiFi和双绞线布线以太网是最常用的构建局域网的两种技术。WiFi是一种能使计算机系统1000间交换数据或通过无线电波连接到无线网络的技术。移动通信单元1110能在一个广阔的地理区域内移动的同时通过无线电通信线路接听和拨打电话。除了通话以外,移动通信单元1110也支持在提供移动数据服务的2G,3G或4G蜂窝通信系统中进行互联网访问。
应当指出的是,其它包括比计算机系统1000更多或更少的子系统的计算机系统也能适用于发明。例如,计算机系统1000可以包括能在短距离内交换数据的蓝牙单元,用于照相的图像传感器,以及用于测量加速度的加速计。
如上面详细描述的,适用于本发明的计算机系统1000能执行带宽估测方法的指定操作。计算机系统1000通过处理器1010运行在计算机可读介质中的软件指令的形式来执行这些操作。这些软件指令可以从存储设备1070或者通过局域网接口1100从另一设备读入到存储器1020中。存储在存储器1020中的软件指令使得处理器1010执行上述的带宽估测方法。此外,通过硬件电路或者硬件电路结合软件指令也能同样实现本发明。因此,实现本发明并不限于任何特定硬件电路和软件的组合。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (16)
1.一种带宽估测方法,包括以下步骤:
接收视频数据帧,所述视频数据帧包含带宽探测包对,所述带宽探测包对由所述视频数据帧的数据包自身组成;
获取观测到的带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小;
根据所述带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小估算发送端到接收端的最小信道容量值;
根据所述最小信道容量值得到可用带宽的初始估计值,并将所述可用带宽的初始估计值反馈给发送端;
当所述发送端以所述初始估计值为发送码率发送视频数据帧时,根据延时情况和/或丢包率对所述初始估计值进行动态微调得到可用带宽的估计值,并将所述估计值反馈给所述发送端。
2.根据权利要求1所述的方法,其特征在于,在接收视频数据帧后,所述方法还包括:
判断所述视频数据帧中相邻两个数据包是否为带宽探测包对;
若所述相邻两个数据包为带宽探测包对,则执行获取观测到的带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小的步骤。
3.根据权利要求2所述的方法,其特征在于,所述判断所述视频数据帧中相邻两个数据包是否为带宽探测包对的步骤包括:
判断视频数据帧中相邻两个数据包各自的大小是否超过设定的阈值,以及判断相邻两个数据包的发送时间戳是否相同;
若所述相邻的两个数据包的每个数据包大小超过设定的阈值且小于最大传送单元大小,并且所述相邻两个数据包的发送时间戳相同,则相邻两个数据包为带宽探测包对。
4.根据权利要求1所述的方法,其特征在于,所述获取观测到的带宽探测包对的散列间隔的步骤包括:
获取观测到的所述带宽探测包对的两个数据包的接收时间,计算两个数据包接收时间的差值,将所述差值的绝对值作为所述带宽探测包对的散列间隔;
所述根据所述带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小估算发送端到接收端的最小信道容量值的步骤包括:
求取所述带宽探测包对中数据包的大小与所述带宽探测包对的散列间隔的比值,将所述比值作为所述发送端到接收端的最小信道容量值。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取多次根据所述带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小估算的发送端到接收端的最小信道容量值;
对多个最小信道容量值进行滤波处理得到滤波后的最小信道容量值;
所述根据所述最小信道容量值得到可用带宽的初始估计值,并将所述可用带宽的初始估计值反馈给发送端的步骤包括:
根据所述滤波后的最小信道容量值得到可用带宽的初始估计值,并将所述可用带宽的初始估计值反馈给发送端。
6.根据权利要求1所述的方法,其特征在于,根据所述最小信道容量值得到可用带宽的初始估计值的步骤包括:
将最小信道容量减去音频数据所占带宽后的值作为可用带宽的初始估计值;
或者,取最小信道容量的预设比例值作为可用带宽的初始估计值;
或者,将最小信道容量减去音频数据所占带宽得到差值,再将该差值的预设比例值作为可用带宽的初始估计值。
7.一种带宽估测方法,包括以下步骤:
对采集的视频数据帧进行编码,生成二进制码流;
将所述二进制码流分成多个数据包;
将视频数据帧中相邻两个数据包组成带宽探测包对;
发送包含所述带宽探测包对的视频数据帧;
接收反馈的可用带宽的初始估计值;其中,所述可用带宽的初始估计值是接收端根据接收视频数据帧后获取观测到的带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小,根据所述带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小估算发送端到接收端的最小信道容量值,以及根据所述最小信道容量值得到可用带宽的初始估计值;
以所述初始估计值为码率发送视频数据帧,以使接收端根据延时情况和/或丢包率对所述初始估计值进行动态微调得到可用带宽的估计值;
接收反馈的可用带宽的估计值,以所述估计值为发送码率向接收端发送视频数据帧。
8.根据权利要求7所述的方法,其特征在于,所述将视频数据帧中相邻两个数据包组成带宽探测包对的步骤包括:
将视频数据帧中相邻两个数据包中第一个数据包添加实时传输协议包头后暂时存放于缓存中;
将视频数据帧中相邻两个数据包中第二个数据包添加的实时传输协议包头中的发送时间戳与第一个数据包的发送时间戳配置相等;且第一数据包和第二数据包组成的包对的大小大于设定的阈值;
将添加了实时传输协议包头的第一数据包和第二数据包组成带宽探测包对。
9.一种带宽估测装置,其特征在于,包括:
接收模块,用于接收视频数据帧,所述视频数据帧包含带宽探测包对,所述带宽探测包对由所述视频数据帧的数据包自身组成;
包对信息获取模块,用于获取观测到的所述带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小;
信道容量估算模块,用于根据所述带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小估算发送端到接收端的最小信道容量值;
带宽估计模块,用于根据所述最小信道容量值得到可用带宽的初始估计值;
反馈模块,用于将所述初始估计值反馈给发送端;
调整模块,用于当所述发送端以所述初始估计值为发送码率发送视频数据帧时,根据延时情况和/或丢包率对所述初始估计值进行动态微调得到可用带宽的估计值;
所述反馈模块还用于将所述估计值反馈给所述发送端。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
判断模块,用于在接收视频数据帧后,判断所述视频数据帧中相邻两个数据包是否为带宽探测包对;
所述包对信息获取模块还用于若所述相邻两个数据包为带宽探测包对,则获取观测到的所述带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小。
11.根据权利要求10所述的装置,其特征在于,所述判断模块还用于判断所述视频数据帧中相邻两个数据包各自的大小是否超过设定的阈值,以及判断所述相邻两个数据包的发送时间戳是否相同;若所述相邻两个数据包的每个数据包大小超过设定的阈值且小于最大传送单元大小,并且相邻两个数据包的发送时间戳相同,则所述相邻两个数据包为带宽探测包对。
12.根据权利要求9所述的装置,其特征在于,所述包对信息获取模块还用于获取观测到的所述带宽探测包对的两个数据包的接收时间,计算两个数据包接收时间的差值,将所述差值的绝对值作为所述带宽探测包对的散列间隔;
所述信道容量估算模块还用于求取所述带宽探测包对中数据包的大小与所述带宽探测包对的散列间隔的比值,将所述比值作为所述发送端到接收端的最小信道容量值。
13.根据权利要求9所述的装置,其特征在于,所述信道容量估算模块还用于获取多次根据所述带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小估算的发送端到接收端的最小信道容量值;
所述装置还包括:
滤波模块,用于对多个最小信道容量值进行滤波处理得到滤波后的最小信道容量值;
所述带宽估计模块还用于根据所述滤波后的最小信道容量值得到可用带宽的初始估计值。
14.根据权利要求9所述的装置,其特征在于,所述带宽估计模块还用于将最小信道容量减去音频数据所占带宽后的值作为可用带宽的初始估计值;或者,取最小信道容量的预设比例值作为可用带宽的初始估计值;或者,将最小信道容量减去音频数据所占带宽得到差值,再将该差值的预设比例值作为可用带宽的初始估计值。
15.一种带宽估测装置,其特征在于,包括:
编码模块,用于对采集的视频数据帧进行编码,生成二进制码流;
分包模块,用于将所述二进制码流分成多个数据包;
包对组成模块,用于将视频数据帧中相邻两个数据包组成带宽探测包对;
发送模块,用于发送包含所述带宽探测包对的视频数据帧;
反馈接收模块,用于接收反馈的可用带宽的初始估计值;以及接收反馈的可用带宽的估计值;其中,所述可用带宽的初始估计值是接收端根据接收视频数据帧后获取观测到的所述带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小,根据所述带宽探测包对的散列间隔及所述带宽探测包对中数据包的大小估算发送端到接收端的最小信道容量值,以及根据所述最小信道容量值得到可用带宽的初始估计值;
所述发送模块,还用于以所述初始估计值为码率发送视频数据帧,以使接收端根据延时情况和/或丢包率对所述初始估计值进行动态微调得到可用带宽的估计值,以及还用于以所述估计值为发送码率向接收端发送视频数据帧。
16.根据权利要求15所述的装置,其特征在于,所述包对组成模块还用于将视频数据帧中相邻两个数据包中第一个数据包添加实时传输协议包头后暂时存放于缓存中;并将视频数据帧中相邻两个数据包中第二个数据包添加的实时传输协议包头中的发送时间戳与第一个数据包的发送时间戳配置相等;且第一数据包和第二数据包组成的包对的大小大于设定的阈值;以及将添加了实时传输协议包头的第一数据包和第二数据包组成带宽探测包对。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510085380.8A CN104618195B (zh) | 2015-02-16 | 2015-02-16 | 带宽估测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510085380.8A CN104618195B (zh) | 2015-02-16 | 2015-02-16 | 带宽估测方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104618195A CN104618195A (zh) | 2015-05-13 |
CN104618195B true CN104618195B (zh) | 2018-11-23 |
Family
ID=53152486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510085380.8A Active CN104618195B (zh) | 2015-02-16 | 2015-02-16 | 带宽估测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104618195B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10756997B2 (en) | 2015-09-28 | 2020-08-25 | Cybrook Inc. | Bandwidth adjustment for real-time video transmission |
US20170094301A1 (en) * | 2015-09-28 | 2017-03-30 | Cybrook Inc. | Initial Bandwidth Estimation For Real-time Video Transmission |
US10506257B2 (en) | 2015-09-28 | 2019-12-10 | Cybrook Inc. | Method and system of video processing with back channel message management |
US10516892B2 (en) | 2015-09-28 | 2019-12-24 | Cybrook Inc. | Initial bandwidth estimation for real-time video transmission |
CN105376614A (zh) * | 2015-10-27 | 2016-03-02 | 南京创维信息技术研究院有限公司 | 视频质量优化方法和装置 |
CN107171969B (zh) * | 2016-03-07 | 2020-06-02 | 华为技术有限公司 | 一种数据传输方法、装置及系统 |
CN106850294B (zh) * | 2017-01-24 | 2019-07-09 | 西安万像电子科技有限公司 | 带宽估计的方法、装置和系统 |
CN107171887B (zh) * | 2017-05-19 | 2021-03-02 | 苏州浪潮智能科技有限公司 | 一种网络带宽测试方法、客户端及网络带宽测试系统 |
CN107454432B (zh) * | 2017-07-26 | 2021-04-20 | 北京疯景科技有限公司 | 数据发送方法及装置 |
CN109962862A (zh) * | 2017-12-25 | 2019-07-02 | 航天信息股份有限公司 | 云平台、基于云平台的动态带宽分配方法及装置 |
CN111836079B (zh) * | 2019-04-18 | 2022-09-02 | 杭州海康威视数字技术股份有限公司 | 一种视频码流的传输方法及装置 |
CN113381905B (zh) * | 2021-05-19 | 2022-12-20 | 北京安信智通科技有限公司 | 数据信息的同步方法、装置以及存储介质 |
CN113301392B (zh) * | 2021-05-26 | 2023-05-16 | 百果园技术(新加坡)有限公司 | 码率确定方法、装置、设备及存储介质 |
CN114785716B (zh) * | 2022-03-21 | 2023-06-16 | 鹏城实验室 | 一种基于自诱导拥塞和单向延迟的可用带宽测量方法 |
CN115174429B (zh) * | 2022-05-25 | 2024-04-09 | 深信服科技股份有限公司 | 网络带宽检测方法、装置、系统、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101110714A (zh) * | 2007-08-20 | 2008-01-23 | 电子科技大学 | 基于稳定采样序列的网络路径带宽测量方法 |
CN103841169A (zh) * | 2012-11-27 | 2014-06-04 | 国际商业机器公司 | 远程复制方法和设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101606355A (zh) * | 2007-04-12 | 2009-12-16 | Lm爱立信电话有限公司 | 使用基准包探测来测量网络性能 |
-
2015
- 2015-02-16 CN CN201510085380.8A patent/CN104618195B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101110714A (zh) * | 2007-08-20 | 2008-01-23 | 电子科技大学 | 基于稳定采样序列的网络路径带宽测量方法 |
CN103841169A (zh) * | 2012-11-27 | 2014-06-04 | 国际商业机器公司 | 远程复制方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104618195A (zh) | 2015-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104618195B (zh) | 带宽估测方法和装置 | |
CN104125429B (zh) | 视频数据传输的调节方法及装置 | |
US11039179B2 (en) | Use of simultaneously received videos by a system to generate a quality of experience value | |
US8284259B2 (en) | Policy-based video quality assessment | |
CN113992967B (zh) | 一种投屏数据传输方法、装置、电子设备及存储介质 | |
US20110007660A1 (en) | System for measuring transmission bandwidth for media streaming and method for same | |
US10601891B2 (en) | Cloud streaming service system and cloud streaming service method for utilizing an optimal GPU for video decoding based on resource conditions, and apparatus for the same | |
US20050021827A1 (en) | Data processing device, data processing system, data processing method, data processing program and recording medium storing the program | |
CN109286813B (zh) | 一种视频通信质量检测方法和装置 | |
CN105376607A (zh) | 一种网络抖动环境下的视频直播方法及装置 | |
CN103259861A (zh) | 一种录制和观看网络视频的方法及系统 | |
KR20150003316A (ko) | 미디어 품질 평가 방법 및 장치 | |
JP2023130418A (ja) | クライアント、サーバ、受信方法及び送信方法 | |
US20150296054A1 (en) | Server apparatus, terminal, thin client system, screen transmission method and program | |
KR101942270B1 (ko) | 재생 지연 방지 시스템을 포함하는 미디어 재생 장치 및 방법 | |
CN112312137A (zh) | 一种视频传输方法、装置、电子设备及存储介质 | |
CN107770538A (zh) | 一种检测场景切换帧的方法、装置和系统 | |
CN103002354A (zh) | 一种消除视频数据传输网络抖动的方法及系统 | |
CN105392023A (zh) | 一种网络抖动环境下的视频直播方法及装置 | |
US9326161B2 (en) | Application-driven control of wireless networking settings | |
KR20230008122A (ko) | 동영상 데이터 처리 방법, 장치 및 전자기기 | |
US8836861B2 (en) | Method and apparatus for processing a video signal | |
JP2015138990A (ja) | 受信装置、送信装置及び通信システム | |
JP2007067738A (ja) | データ送受信システム、送信装置、受信装置及びデータ送受信方法 | |
JP2007274066A (ja) | コンテンツ配信システム |
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 |