APP下载

自适应动态网络的流媒体传输策略

2018-12-22洪煌辉袁清珂

计算机工程与设计 2018年12期
关键词:网络带宽码率差值

洪煌辉,袁清珂

(广东工业大学 机电工程学院,广东 广州 510006)

0 引 言

随着流媒体技术的飞速发展,流媒体数据量的不断增大使得传统的基于RTP/RTSP的流媒体技术不能满足高质量的流媒体需求[1],导致影响用户观看体验,并制约多媒体技术进一步的发展[2]。许多文献提出数据传输应具有动态网络的自适应性。其中包括根据当前的网络情况(例如可用带宽)动态地调整视频码率,从而生成合适于当前网络的视频流[3,4]。采用探测的方式,判断吞吐量或网络带宽等情况来调整码率,以生成合适的视频流[5-7]。文献[8]通过计算当前吞吐量,从而决策是否调节视频码率。文献[9]介绍了一种采用“探测”的方法估算实时带宽,但该算法需要发送大量的探测数据包,在网络拥塞时会进一步加重网络的负载。因此,以上方法仍然存在一定程度的缺陷,还不能直接应用于实际。本文将立足于已有的视频网络传输控制方法,并根据上述所提及的问题,提出一种自适应网络带宽的H.264码率控制策略。建立带宽预测模型检测网络情况,再评价源端的视频传输质量,自适应地调整量化参数和最高码率值。该算法可以解决传统码率控制算法的缺陷,精确检测网络情况,提高视频传输质量,码率控制误差更小。

1 可用带宽预测算法

1.1 带宽预测技术

目前,带宽测量技术根据是否发送探测包可分为被动测量技术和主动测量技术。被动测量技术通过结合软件和硬件监听网络分组流来推测网络带宽。因存在需要额外的专用设备、权限以及成本的限制,使其难以简单方便地应用于实际。主动测量则是通过发送网络探测包并根据包中所携带的信息来计算网络带宽。较为成熟的测量机制分为基于速率模型和基于报文间隔模型。

上述的测量机制都可以得到网络中的可用带宽,但它们都是通过在网络中不断地发送测量数据包,这无疑是增加了网络的负载,特别是在网络拥塞的情况下使得拥塞更加严重。而且测量过程需要一定的时间作为代价,故不适合实时性要求较高的场合。针对上述的缺点,参考文献[10]中提到的带宽预测算法,此算法在网络拥塞的时候仍存在不足,在计算上一个时刻的可用带宽时存在滞后性,所以会导致下一个时刻的预测带宽范围也有一定程度的延时,故不能直接应用于实际。本文将在此算法的基础上做进一步的优化,使其适用于H.264编码技术且有效地应用于实际。即在不影响数据传输的情况下测量上一个时刻的网络可用带宽,并且构建基于高斯分布的预测算法,预测下一个时刻的网络可用带宽。

1.1.1 前一刻可用带宽

发送端对视频帧进行数据封装后作为计算可用带宽的“标记帧”,并设置超时计时器。在不影响网络负载的情况下,统计接收端接收若干个“标记帧”所需的时间,计算出这时间段的可用带宽,具体过程如下:

(1)初始化超时计时器。

(2)对一组视频帧进行标记,并发送。

(3)当发送第一个“标记帧”时,启动计时器,并继续视频帧的发送。

(4)在预定时间T内,若收到接收端发来的接收时间信息,则复位计时器,并在下一次发送第一个“标记帧”时启动;若在时间T内未收到可用带宽的回复包,则做超时计数,并复位超时计时器,返回步骤(2)。

(5)接收端接收到视频帧后,首先对标志位进行判断,记录有标记的视频帧的数据大小。

(6)若视频帧没有开始标志位,则无需动作,继续执行步骤(5);否则,若出现开始标志位,则记录起始时间为time_start并记录接收到当前视频帧的数据大小size1,并继续执行步骤(5)。直至接收到结束标志的视频帧时,记录结束时间为time_stop,并记录数据大小为sizen。计算接收这组帧的时间间隔

time_gop=time_stop-time_start

(1)

根据记录的每个视频帧的大小,有

size=size1+size2+…+sizei+…+sizen

(2)

根据式(1)和式(2),有

Bti=size/time_gop

(3)

式中:Bti则为可用带宽的数值。

(7)接收端将计算出来的可用带宽值发送至发送端。

1.1.2 预测带宽

为了检验网络的可用带宽确实服从正态分布,本文通过利用Python语言及其相应的库,结合反复取样的可用带宽值,对可用带宽的正态性进行检验,得出网络的可用带宽近似服从一个数学期望为μ、标准方差为σ2的正态分布,记为X~N(μ,σ2)。其概率密度函数如式(4)所示

(4)

通过k次前一刻可用带宽的计算,得到k个可用带宽值(Bt1、Bt2、……、Btk),并利用可用带宽具有正态分布的特性,推算出数学期望和标准方差,将其带入式(4)中,即可得到一个关于可用带宽的概率密度函数,并得可用带宽的预测区间分布概率,见表1。

表1 不同区间的分布概率

1.2 下一刻带宽预测区间

首先计算前N个时段的网络带宽作为参考值,获得正态分布的参数μ和σ,从而获得带宽的概率密度函数。然后按实际需求确定带宽可能出现的范围,如当带宽区间为(μk-2.58σk,μk+2.58σk)时,其出现的概率为99%。之后每获取一次网络带宽值则更新一次密度函数的μ和σ值,但考虑到网络的突变等特性,所以需加入一些限制条件。具体过程如图1所示。

图1 预测可用带宽流程

从流程图可知,在具有N个带宽值的前提下,计算出概率密度函数并获得预测区间。每次计算网络带宽都会与前一次的预测范围做对比。若如果连续超过D次带宽值在预测范围之外,则将N个参考值归零,并重新计算N个带宽值;否则,将用该带宽值更新原有的参数μ和σ。

2 自适应带宽的码率控制策略

根据上述的带宽概率密度函数,本文提出一种按需计算可用带宽区间且加入源端实际帧率作为补偿因子的帧层码率控制算法。通过补偿因子的引入,可有效地避免了码率切换太频繁或因临界点的问题导致错误切换的问题。

2.1 源端实际帧率评价

TCP是一种面向连接的、可靠的、字节流的传输协议,许多视频传输的应用传输协议都是基于TCP协议,如HTTP协议。在传输层中存在发送和接收缓冲区,应用层使用套接字接口时,把数据放入传输层相应的缓冲区中,而如何发送和接收则取决于协议的传输算法。本文在源端以阻塞方式使用套接字,在网络良好且接收端应用层处理接收缓存的速度足够快的时候,源端基本能按照默认的帧率进行视频流的传输。但在网络拥塞时,由于发送缓冲的数据未能及时发送到接收端,缓冲区剩余的长度不足够存放新的数据,从而导致源端阻塞等待直至缓冲区剩余的大小大于需要存放的数据大小。所以在网络不良时,源端发送视频帧的速率(文后或称其为实际帧率)会减小。通过计算默认帧率与实际帧率的差值,可以反映出当前网络环境的状态。

设在某段时间S秒内,源端发送了X帧的视频数据,则在S秒内的平均发送视频帧的速率Y为

Y=X/S

(5)

设默认帧率为Z,则默认帧率和实际帧率的差值为

DIF=Z-Y

(6)

2.2 自适应带宽的码率控制策略

本文提出的码率控制策略引入了默认帧率和实际帧率之间的差值与预测的可用带宽区间这两个因子,通过对这两个因子的限制,对帧层获得的QP值与最高码率值进行再次调整,达到控制码率的作用,以获得适合当前网络环境的码率。

具体的控制策略阐述如下:若连续出现P次默认帧率和实际帧率之间的差值大于M值(M值为判断视频流畅度的一个阈值)与当前实际码率大于预测区间的中间值band_mid,则表明每秒发送的帧数过少且网络带宽不足,接收端未能取到足够的视频帧进行播放。此时上调当前帧的QP值和限制最高码率值以减少输出码率的大小。当默认帧率与实际帧率的差值不大于M值,此时进入区间判断的过程。若当前码率处于预测区间范围内时,表明当前码率可以适用于当前可用带宽且实际帧率足以让接收端流畅播放视频,故不进行码率调整。若当前码率小于预测区间的左边界并且默认帧率与实际帧率的差值不大于M值,表明有足够的可用带宽,此时下调当前帧的QP值和增加最高码率值以增加输出码率的大小,使得视频播放质量更好。

码率控制策略的实现过程如下:

(1)通过上述预测可用带宽的算法,可获得下一个时刻可用带宽的预测区间[band_left,band_right]。并且根据已编码的视频帧,得到一个有关当前帧的输出码率real_bit,从而可计算当前码率处于预测区间的位置。

(2)通过源端实际帧率计算方法,获得当前实际的帧率real_FPS。再通过获得默认的帧率def_FPS,并计算出默认帧率和当前实际帧率的差值diff_FPS。且码率调整的具体流程如图2所示。

3 实验结果及分析

3.1 实验方案

测试环境的总体方案如图3所示,图中的网络摄像机(IP Camera)采用的是华为海思的系统级芯片Hi3518V200,其集成了新一代的H.264编码器,并且可通过有线或无线网络进行视频帧的传输。一台PC通过4G无线路由器接入中国联通无线网络从而接入Internet;IPC则通过有线接入本地局域网并将其IP映射到外网,从而接入Internet,并把视频数据传输到具有4G网络的PC上进行播放。

首先IPC的VENC模块从外存中读取原始图像后,运行本文所提出的码率控制策略。根据计算的结果,使用码率控制器对编码参数进行调整,再经过编码器(Encoder)进行H.264编码处理,并把编码后的视频帧通过网络传输到PC端。测试时,使用另一台PC接入IPC所在的局域网,并通过挂载网络文件系统(NFS)的方式获得所需的测试数据,并将其绘制成图表。两台IPC设置相同的编码参数,如表2所示列举了几个重要的编码参数。

3.2 对比分析

在传统的根据带宽情况调整码率的视频传输控制策略中,大多通过探测的方式获取当前带宽情况,再根据探测情况来调整码率[3]。当带宽充足时,提高视频码率;当带宽不足时,则减小视频码率。因有不同的方式调整视频码率,为了更准确地测试出二者的区别,本文统一采用调整QP值的方式调整码率。同时,为了便于观察码率切换的情况,设置15个切换等级,每个等级对应一个QP值和对应一个最高码率值,如初始等级为0对应的初始QP值为22以及最高码率值为2048,等级为1对应的QP值为23和最高码率值为1800,以此类推。

实验时,将两台用做对比的IPC尽量朝向同一区域(区域内放置一个匀速摆动的摇摆器),并尽可能设置在相同的网络环境中。同时,利用软件对两台IPC实施网络限速,使得视频发送的带宽发生变化。经多次重复测试的结果表明,两台IPC在网络带宽充足的情况下,没有明显的区别;但在网络情况一般和较差的情况下,使用本文算法的IPC所传输到PC中显示的播放画面流畅度具有明显的优势。以下通过限制网速的方式,使得码率出现的上调、下降和不变的情况,从而获得需要对比的数据。

3.2.1 向上切换

首先各分配相同且足够的带宽给两台IPC,使其可以平稳地进行数据传输。然后降低相同大小的网络带宽,使其不能满足当前的视频码率,从而发生码率下降。如图4所示为两种方法对带宽减少的处理过程,在t1时刻降低网络带宽时,本文方法判断默认帧率与当前帧率之差大于M,并且码率值大于预测区间的中间值,所以下降一级码率。在下降后又经判断,差值仍然过大且码率值大于预测区间,故继续下降一级码率,在t5时刻停在i2处,码率基本满足当前网络带宽情况。而在采用传统方法时,t2时刻检测到当前的带宽下降后,进行码率的下降。但在t3时刻时,出现切换等级下降然后在t4时刻又继续上升的现象,最后在t6时刻停留在i1,并且比本文方法增加了约39.8%的切换时间,而且播放画面有一定程度的卡顿现象。在多次测试的过程中,还会出现另一种现象:两种方法经过码率调整后都可以流畅播放,但此时传统方法的码率值低于本文方法的码率值,造成带宽的浪费。

3.2.2 向下切换

使两台IPC处于较低的带宽环境并调试至其都在同一个切换等级且能稳定传输时,上升相同大小的带宽值,使得视频传输可用的带宽变大。如图5所示,本文方法从t1时刻至t3时刻快速流畅的切换至合适当前带宽的码率值。而传统方式的切换在t2时刻依然出现来回切换的问题,并且最后稳定在i1上。

3.2.3 码率变化情况及分析

图4 向上切换的等级与帧率差值比较

图5 向下切换的等级与帧率差值比较

在几个不同时刻同时增加或减少两台IPC的网络带宽,观察其码率变化并将具体的码率值绘制曲线图,如图6所示。在t1和t2时刻左右同时下降同样数值的带宽,并在15 s和45 s左右同时上升同样数值的带宽。通过观察可得,本文方法快速流畅地下降或上升到合适当前带宽的码率值,带宽利用率提高约22.7%,并且能进行流畅的数据传输;而传统的方法则在下降和上升带宽的时间间隔里还未完成合适的码率切换,并且在切换中码率出现了来回切换的现象。

通过上述测试情景的比较分析,本文方法在相似网络环境、相同时间内,不仅能快速流畅地将码率切换至合适当前带宽的数值而且能充分利用当前可用带宽,并且实际帧率变化小,视频播放流畅。

4 结束语

本文提出了一种基于预测可用网络带宽的自适应流媒体传输策略,在不增加网络负载的前提下准确地计算出下一个时刻可用带宽的范围,并计算默认帧率与实际帧率之间的差值来反应目前视频帧的传输情况。通过这两个因子设计出码率调整策略,从而判断何时需要上调或下调视频码率,最终实现视频码率随网络带宽的波动而自适应地进行调整。实验结果表明,该控制策略能充分地利用当前的网络带宽,在保证视频传输流畅性基础上,提供更加清晰的播放效果。

猜你喜欢

网络带宽码率差值
移动视频源m3u8多码率节目源终端自动适配技术
数字日照计和暗筒式日照计资料对比分析
一种基于HEVC 和AVC 改进的码率控制算法
基于状态机的视频码率自适应算法
如何提升高带宽用户的感知度
枳壳及其炮制品色差值与化学成分的相关性
合理配置QoS改善校园网络环境
浅析泰州电视台超大型高清非编网建设
经典路由协议在战场环境下的仿真与评测
多光谱图像压缩的联合码率分配—码率控制方法