一种应用于DASH低延迟直播流的带宽测量方法和设备与流程

专利检索2022-05-10  171


本申请涉及计算机应用技术领域,特别涉及一种应用于DASH低延迟直播流的带宽测量方法和设备。

背景技术

当前,基于超文本传输协议(HTTP)的动态自适应传输流(DASH)已经得到广泛的应用。得益于边下载边播放的特点,DASH也广泛应用于直播流领域,同时随之而来的是低延迟的需求。满足该需求的一个方法是使用HTTP的分块编码传输(Chunked Transfer Encoding)。在基于HTTP chunked编码传输的DASH低延迟直播流播放过程中,如何准确测量带宽,一直是一个比较困难的问题。

目前,本领域内能够解决上述问题的相关技术有ACTE,即:Adaptive Bitrate Streaming(ABR)for Chunked Transfer Encoding,具体参见https://doi.org/10.1145/3304112.3325611,低延迟分块流的带宽预测(Bandwidth prediction in low-latency chunked streaming)。该技术计算每一个chunk块的传输速率和segment下载的平均速率,当chunk块的传输速率是segment下载的平均速率的80%到120%时,丢掉(即过滤掉)该chunk块的速率,然后依据过滤后的chunk速率计算当前带宽。

本申请的发明人在实现本申请的过程中发现,现有ACTE存在以下技术问题:

a、其每次计算是在整个segment下载结束后进行,当segment下载时间较长时,将影响带宽测量的实时性。

b、该算法直接使用chunk块的传输速率,没有考虑到实际网络传输中,由于网络波动或者服务器性能影响而导致的chunk块的传输速率过大或者过小的情况。

c、该算法使用简单的过滤方法,对于接近于segment下载的平均速率的带宽值,无法做到很好的估计。

d、该算法直接累加多个带宽值,然后除以带宽值的个数,即:求取平均带宽,其准确性并不理想。



技术实现要素:

本申请旨在提供一种应用于DASH低延迟直播流的带宽测量方法和设备,以提高DASH低延迟直播流带宽测量的准确性。

本申请公开了一种应用于DASH低延迟直播流的带宽测量方法,在客户端接收到当前数据包时执行以下操作:

过滤不饱和发送的数据包;

在过滤后的数据包中,寻找数据大小以及传输速率的稳定区域,并基于数据大小以及传输速率的稳定区域计算当前带宽。

本申请还公开了一种应用于DASH低延迟直播流的带宽测量设备,包括:

过滤模块,用于在接收到当前数据包时过滤不饱和发送的数据包;

带宽计算模块,用于在过滤后的数据包中,寻找数据大小以及传输速率的稳定区域,并基于数据大小以及传输速率的稳定区域计算当前带宽。

由上述技术方案可见,本申请提出的应用于DASH低延迟直播流的带宽测量技术方案,在客户端接收到数据包时,首先过滤不饱和发送的数据包;然后在过滤后的数据包中,寻找数据大小以及传输速率的稳定区域,并基于数据大小以及传输速率的稳定区域计算当前带宽,能够有效地避免大量数据碎片以及网络波动或者服务器性能造成的瞬间传输速率不稳定的影响,并克服现有计算带宽方法的不足,从而提高DASH低延迟直播流带宽测量的准确性。带宽测量准确性的提高有助于DASH直播流播放时选择准确的分辨率,进而提高用户的观看体验。

附图说明

图1为本申请应用于DASH低延迟直播流的带宽测量方法示意图;

图2为本申请一较佳从接收到的数据包中过滤不饱和发送的数据包的流程示意图;

图3为本申请一较佳在初步过滤后的数据包中寻找数据大小和传输速率的稳定区域,并计算当前带宽的流程示意图;

图4为本申请应用于DASH低延迟直播流的带宽测量设备的组成结构示意图;

图5为本申请实施例三的场景示意图;

图6~图8示出不同直播流码率和网络带宽条件下,本申请技术方案与现有技术的带宽测量结果对比。

具体实施方式

为使本申请的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本申请作进一步详细说明。

本申请为克服现有技术的不足,提出一种应用于DASH低延迟直播流的带宽测量技术方案,该技术方案通过过滤不饱和数据包,并寻找饱和数据包的稳定区域用以计算带宽。所述稳定区域包括数据包的数据大小的稳定区域以及传输速率的稳定区域。本申请提供的技术方案能够有效地避免大量数据碎片以及网络波动或者服务器性能造成的瞬间传输速率不稳定的影响,并克服现有计算带宽方法的不足,从而提高DASH低延迟直播流带宽测量的准确性。带宽测量准确性的提高有助于DASH直播流播放时选择准确的分辨率,进而提高用户的观看体验。

鉴于现有ATCE算法所存在的问题,本申请基于HTTP Chunked编码传输DASH低延迟直播流的特点,提出一种应用于DASH低延迟直播流的带宽测量方法,该方法应用于客户端,其流程图如图1所示,客户端接收到数据包后,执行以下操作:

步骤1:从接收到的数据包中,初步过滤服务器端的不饱和发送。换言之,过滤掉部分不饱和发送的数据包,也就是过滤掉接收到的数据碎片;

步骤2:在初步过滤后的数据包中,寻找数据大小以及传输速率的稳定区域,基于数据大小以及传输速率的稳定区域计算带宽。

以下结合附图对上述各步骤进行详细说明。

图1所示步骤1是客户端从接收到的数据包中过滤掉部分不饱和发送的数据包,其主要原理在于:计算设定时间内接收到的数据包的数据大小平均值,如果当前接收到的数据包的数据大小小于或者等于该数据大小平均值,则过滤该数据包。本申请提供一种较佳的实现该步骤的流程,其流程图如图2所示,包括以下步骤:

步骤1.1:计算该数据包的传输时间,即:该数据包网络传输所花费的时间。

步骤1.2:将该数据包的数据大小以及传输时间作为一项队列元素插入双向队列Qo的尾部。

步骤1.3:如果插入队列Qo头部的队列元素的时间距离当前时间大于某一设定时间To,则表明队列Qo累积队列元素的时长已大于该设定时间To,此时,应当舍弃一些旧的队列元素,即舍弃队列头部的队列元素,执行步骤1.4;否则,直接执行步骤1.5。

步骤1.4:删除队列Qo头部的队列元素。

步骤1.5:计算队列Qo中数据大小的平均值:Savg=Stotal/count。其中,Stotal是队列Qo中各数据大小的总数,即总数据大小,count是队列Qo中队列元素的个数。

步骤1.6、如果步骤1.1所述数据包的数据大小大于队列Qo中数据大小的平均值Savg,则执行步骤1.7,将该数据包的数据大小以及传输时间作为一项队列元素插入双向队列Qf的尾部。与步骤1.3类似,如果插入队列Qf头部的队列元素的时间距离当前时间大于某一设定时长Tf,则表明队列Qf中累积队列元素的时长已大于该设定时长Tf,此时,应当舍弃队列头部的队列元素,即删除队列Qf头部的队列元素。

通过上述步骤1.1至1.6,客户端可以判断出接收到的数据包是否为不饱和发送的数据包,不饱和发送的数据包的数据大小和传输时间信息将无法进入队列Qf,因而,队列Qf中所缓存的数据包中过滤了不饱和发送的数据包。

图1所示步骤2是客户端在初步过滤后的数据包中寻找数据大小的稳定区域以及传输速率的稳定区域,并基于数据大小以及传输速率的稳定区域计算当前带宽。该步骤的流程图如图3所示,包括以下步骤:

步骤2.1:对队列Qf按照数据大小进行排序。

步骤2.2:遍历排序后的队列Qf,获取数据大小相同且个数最多的一组队列元素,并记录这一组队列元素在Qf中的位置:起始位置Pb,结束位置Pe,以及元素个数Cmax。

步骤2.3:如果Cmax大于或者等于某一设定数值C,表明所寻找到的这一组队列元素构成数据大小的稳定区域,可以基于此计算带宽,执行步骤2.4;否则,如果Cmax小于该设定数值C,则执行步骤2.7。

步骤2.4:对队列Qf中Pb到Pe区域中的队列元素按传输时间的大小进行排序。

步骤2.5:基于步骤2.4的排序结果获取传输速率的稳定区域。

传输时间反映的是传输速率,本申请基于步骤2.4的排序结果提供以下两种较佳的获取传输速率的稳定区域的方法:

第一种方法:简单计算。例如,直接取排序结果的1/4处和3/4处的若干队列元素构成传输速率的稳定区域。

这里,1/4处和3/4处是根据实验分析出来的较为合理的位置。

最开始和最末尾的位置可能会出现速率过大或者过小的冲击值,应该去掉;

中间1/2处可能出现带宽的突变,不适宜用于计算;

1/4处和3/4处是带宽速率比较稳定的两个区域,使用这些值可以使带宽测量更为准确。

第二种方法:复杂计算,通过计算方差值,获取传输速率的稳定区域。

具体方法如下:

1)计算Pb到Pe区域的中间位置Pm=(Pe–Pb)/2,如果Pm不为整数,可以向上或向下取整。

2)基于步骤2.4的Pb到Pe区域的排序结果,遍历队列Qf中从Pb到Pm-10的队列元素,计算每个队列元素的传输时间及其后面9个数据的传输时间的方差,获取方差最小的一组队列元素。

3)基于步骤2.4的Pb到Pe区域的排序结果,遍历队列Qf中从Pm 1到Pe-10的队列元素,计算每个队列元素的传输时间及其后面9个数据的传输时间的方差,获取方差最小的一组队列元素。

步骤2)和步骤3)所得到的两组队列元素构成传输速率的稳定区域。

步骤2.6:基于步骤2.5获取的传输速率的稳定区域,累加其数据大小得到S,累加其传输时间得到T,返回B=S/T作为当前带宽,结束当前流程。

步骤2.7:用队列Qo计算带宽。

具体的,累加队列Qo中的数据大小得到总数据大小S,累加队列Qo中的传输时间得到总传输时间T,计算B=S/T作为当前带宽。

至此,结束当前流程。

对应于上述方法,本申请还公开了一种设备,图4为本申请应用于DASH低延迟直播流的带宽测量设备的组成结构示意图,该设备包括过滤模块和带宽计算模块,其中:

过滤模块,用于在接收到当前数据包时过滤不饱和发送的数据包;

带宽计算模块,用于在过滤后的数据包中,寻找数据大小以及传输速率的稳定区域,并基于数据大小以及传输速率的稳定区域计算当前带宽。

较佳的,所述过滤模块具体用于:

计算设定时间To内接收到的数据包的数据大小平均值,如果当前数据包的数据大小小于或者等于所述数据大小平均值,则过滤所述当前数据包。

具体的,所述过滤模块用于执行以下操作:

计算所述当前数据包的传输时间;

将所述当前数据包的数据大小和传输时间插入双向队列Qo的尾部;

如果插入队列Qo头部的队列元素的时间距离当前时间大于所述设定时间To,则删除所述队列Qo头部的队列元素;

计算所述队列Qo中数据大小的平均值;

如果所述当前数据包的数据大小大于所述数据大小的平均值,则将所述当前数据包的数据大小以及传输时间插入双向队列Qf的尾部。

较佳的,所述带宽计算模块具体用于执行以下操作:

对所述队列Qf按照数据大小进行排序;

遍历排序后的所述队列Qf,获取数据大小相同且个数最多的一组队列元素,记录这一组队列元素在队列Qf中的位置:起始位置Pb,结束位置Pe,以及元素个数Cmax;

如果所述Cmax大于或者等于设定数值C,则对所述队列Qf中Pb至Pe区域中的队列元素按传输时间的大小进行排序,并基于排序结果获取传输速率的稳定区域,再基于所述传输速率的稳定区域累加其数据大小得到S,累加其传输时间得到T,计算B=S/T作为当前带宽;

如果所述Cmax小于所述设定数值C,则累加队列Qo中的数据大小得到总数据大小S,累加队列Qo中的传输时间得到总传输时间T,计算B=S/T作为当前带宽。

在基于排序结果获取传输速率的稳定区域时,所述带宽计算模块具体用于:

取排序结果的1/4处的N1个队列元素和3/4处的N2个队列元素,以这N1 N2个队列元素构成传输速率的稳定区域;

或者,基于排序结果计算传输时间的方差值,获取传输速率的稳定区域。

下面通过三个较佳实施例,对本申请技术方案的具体实施进行举例说明。

实施例一:

本实施例假设对DASH直播流使用http chunked编码传输,测量其带宽的方案如下:

Step1、客户端接收到数据包,过滤掉部分不饱和发送的数据包,具体包括以下Step1.1至Step1.4:

Step1.1、计算该数据包网络传输所花费的时间,计算方法为:

a、如果是发出请求后第一次接收数据,则传输时间为:当前接收到数据包的时间Tnow-请求数据的时间Tbegin;

b、如果不是第一包数据(即不属于上述情况a),则传输时间为:当前接收到数据的时间Tnow-上一次接收数据的时间Tprevious。

Step1.2、缓存Step1.1中数据包的数据大小以及生成的传输时间信息到双向队列Qo尾部,如果Qo中累积时间大于某一时间,如1.5s,则弹出队列头部的数据。

Step1.3、计算队列Qo中数据大小的平均值:Savg=Stotal/count。其中,Stotal是队列Qo中的总数据大小,count是队列Qo中队列元素的个数。

Step1.4、如果Step1.1中数据包的数据大小大于Step1.3生成的数据大小的平均值Savg,则缓存该数据包的数据大小以及传输时间信息到双向队列Qf尾部,如果队列Qf中累积队列元素的时间大于某一时间,如1.5s,则弹出队列Qf头部的数据。

Step2、在带宽计算线程中,从Step1生成的队列Qf中寻找稳定区域,具体包括以下Step2.1至Step2.6。循环调用间隔可以依据具体情况设置为250ms,500ms。

Step2.1、对Step1.4生成的队列Qf按数据大小进行排序。

Step2.2、遍历Step2.1排序后的队列Qf,获取数据大小相同且个数最多的一组队列元素,并记录这一组队列元素在队列Qf中的位置:起始位置Pb,Pe,以及元素个数Cmax。

Step2.3、如果Step2.2中获取的Cmax小于30,则用Step1.2中生成的队列Qo计算带宽:累加队列Qo中的数据大小得到S,累加队列Qo中的传输时间信息得到T,返回B=S/T为当前带宽;如果Cmax大于等于30,则继续Step2.4。

Step2.4、对Step2.2生成的Pb到Pe区域中的数据按传输时间的大小进行排序。

Step2.5、在Step2.4生成的Pb到Pe区域的排序结果中,取1/4附近的三个队列元素以及3/4附近三个队列元素。

Step2.6、对Step2.5所取的6个队列元素,累加其数据大小得到S,累加其时间信息得到T,返回B=S/T作为当前带宽。

实施例二:

本实施例假设对DASH直播流使用http chunked编码传输,测量其带宽的方案如下:

Step1、客户端接收到数据包,过滤掉部分不饱和发送的数据包,具体包括以下Step1.1至Step1.4:

Step1.1、计算该数据网络传输所花费的时间,计算方法为:

a、如果是发出请求后第一次接收数据,则传输时间为:当前接收到数据包的时间Tnow-请求数据的时间Tbegin;

b、如果不是第一包数据,则传输时间为:当前接收到数据的时间Tnow-上一次接收数据的时间Tprevious。

Step1.2、缓存Step1.1中数据包的数据大小以及生成的传输时间信息到双向队列Qo尾部,如果Qo中累积时间大于某一时间,如1.5s,则弹出队列头部的数据。

Step1.3、计算队列Qo中数据大小的平均值:Savg=Stotal/count。其中,Stotal是队列Qo中的总数据大小,count是队列Qo中队列元素的个数。

Step1.4、如果Step1.1中数据包的数据大小大于Step1.3生成的数据大小的平均值Savg,则缓存该数据包的数据大小以及传输时间信息到双向队列Qf尾部,如果队列Qf中累积队列元素的时间大于某一时间,如1.5s,则弹出队列Qf头部的数据。

Step2、在带宽计算线程中,从Step1生成的队列Qf中寻找稳定区域,具体包括以下Step2.1至Step2.6。循环调用间隔可以依据具体情况设置为250ms,500ms。

Step2.1、对Step1.4生成的Qf按数据大小进行排序。

Step2.2、遍历Step2.1排序后的队列Qf,获取数据大小相同且个数最多的一组队列元素,并记录这一组队列元素在队列Qf中的位置:起始位置Pb,Pe,以及元素个数Cmax。

Step2.3、如果Step2.2中获取的Cmax小于30,则用Step1.2中生成的队列Qo计算带宽:累加队列Qo中的数据大小得到S,累加队列Qo中的传输时间信息得到T,返回B=S/T为当前带宽;如果Cmax大于等于30,则继续Step2.4。

Step2.4、对Step2.2生成的Pb到Pe区域中的数据按传输时间的大小进行排序。

Step2.5、在Step2.4生成的Pb到Pe区域中,计算Pb到Pe区域的中间位置Pm=(Pe–Pb)/2,如果Pm不为整数,则向下取整。

Step2.6、基于Step2.4的Pb到Pe区域的排序结果,遍历队列Qf中从Pb到Pm-10的队列元素,计算每个队列元素的传输时间及其后面9个数据的传输时间的方差,获取方差最小的一组队列元素。

Step2.7、基于Step2.4的Pb到Pe区域的排序结果,遍历队列Qf中从Pm 1到Pe-10的队列元素,计算每个队列元素的传输时间及其后面9个数据的传输时间的方差,获取方差最小的一组队列元素。

Step2.8、对Step2.6和Step2.8生成的两组队列元素,累加其数据大小得到S,累加其时间信息得到T,返回B=S/T作为当前带宽时间。

实施例三:

准确测量带宽有助于选择分辨率匹配的视频流进行播放:

在高带宽时选择高分辨率视频流进行播放,可以在保持播放流畅的前提下,提高视频质量;

在低带宽时选择低分辨率视频流进行播放,可以保证低带宽时,视频的流畅播放。

本实施例通过完整的场景描述,展现本申请所提供的技术方案在现实场景中的意义。图5为本申请实施例三的场景图,参见图5:

Step 1、摄像头录制足球比赛并编码成DASH直播流,保存在DASH直播服务器(DASH Live Server)上,该DASH直播流包含三种码率和分辨率:8Mbps/UHD,5Mbps/FHD,1Mbps/HD。

Step 2、客户端TV,向DASH直播服务器请求播放直播流,DASH直播服务器以HTTP Chunked编码传输方式传输DASH媒体文件。

Step 3、初始播放时,由于不清楚带宽大小,为保证视频播放流畅,传输低码率的视频流,1Mbps/HD,该视频分辨率较低,用户体验较差。

Step 4、客户端TV应用本申请提供的技术方案进行带宽计算,得到当前带宽值约为10Mbps。

Step 5、客户端TV向DASH直播服务器请求高码率视频流。

Step 6、DASH直播服务器向客户端TV传输8Mbps/UHD的视频流,视频流播放流畅且分辨率高,用户体验变好。

如果用现有技术,计算得到的带宽将约等于视频流的码率1Mbps,客户端TV不会请求更高分辨率的视频,此时用户只能观看到HD的直播流,体验较差。

图6~图8示出不同直播流码率和网络带宽条件下,本申请技术方案与现有技术的带宽测量结果对比,对比显示本申请技术方案相比于现有带宽测量方法有明显的性能提升。其中:

深色线表示:现有测量方法直接通过数据大小/传输时间得到的带宽值;

浅色线表示:应用本申请技术方案计算得到的带宽值。

图6中,直播流码率为:1500kbps,网络带宽为:800kbps。

现有测量方法的测量结果约为700kbps,本申请方案的测量结果约为750kbps。两者测量结果相差不多,但是本申请方案更接近实际网络带宽。

图7中,直播流码率为:2000kbps,网络带宽为:5000kbps。

现有测量方法的测量结果约为2000kbps,接近直播流码率,无法准确测量网络带宽;而本申请方案的测量结果为4700kbps,接近实际网络带宽。

图8中,直播流码率为:1000kbps,网络带宽:从200kbps到8Mbps循环变化。

现有测量方法测量得到的最大带宽约为3Mbps,无法准确测量最大网络带宽;而本申请方案测量得到的最大带宽约为8Mbps,接近实际最大带宽值。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

转载请注明原文地址:https://win.8miu.com/read-60.html

最新回复(0)