本发明流媒体技术领域,更具体地,涉及一种基于PID控制器的动态调整视频码率的方法。
背景技术:
近年来,随着高速数据网络的发展以及智能终端设备的迅速普及,人们对流媒体的需求也不断增长,这也导致流媒体在互联网流量中的比重呈爆炸式增长,与之相对应的流媒体技术引起了国内外的高度重视和积极研究。传统的流媒体技术(如RTP和RTSP)有各种各样的弊端,如不支持现有的网络基础设施和无法通过防火墙等问题,而HTTP渐进式下载又会因为网络带宽波动对用户产生不好的用户体验并且不支持直播。基于HTTP的动态自适应流媒体技术(DASH,Dynamic Adaptive Streaming over HTTP)克服了以上的缺点,已经逐渐成为主流的流媒体技术。
基于HTTP的实时流媒体协议现已成为移动互联网上多媒体业务的主流协议,目前在各移动终端和服务厂商推出的自身产品和平台相关的流媒体解决方案中,大部分都是基于HTTP协议实现的。其中较成熟的有苹果公司的HLS(Apple HTTP Live Streaming),微软公司的MSS(Microsoft Smooth Streaming)和Adobe公司的HDS(Adobe HTTP Dynamic Streaming)。上述三大商业流媒体解决方案都是将视频编码成多种码率,将打包好的视频文件进行切片处理,然后用一个索引文件来描述视频内容。但它们之间互不兼容,只能播放遵循自己标准的媒体文件。
3GPP和MPEG总结三大商业系统的特点,联合提出的一种解决方案:MEPG-DASH。该协议综合了现有主流移动流媒体协议的基本构架,对所有平台提供了良好的兼容性。
图1展示了DASH系统的架构。整个系统由三个部分组成,包括媒体服务器(MediaServer)、缓存服务器(Cache Server)和客户端(Client)。在媒体服务器里,视频内容被编码成多种码率,码率高对应的视频清晰度也高,同时视频被切成固定长度的视频片段。客户端播放视频时,根据网络状况,通过HTTP协议向服务器请求相应码率的视频切片,从而最大程度地利用网络带宽,并保证视频播放流畅。用户观看过的视频会在相应的缓存服务器上备份,以备用户再次观看和与用户相近的其他用户观看。在客户端的流控制器是用来控制媒体内容的请求过程。一个典型的控制器会先从原始媒体内容服务器取得媒体内容的基本信息,如媒体描述文件(MPD,Media Presentation Description),再根据网络状况、流媒体策略和设备的配置信息请求相应码率的视频内容。在此之后,视频块就会通过HTTP协议从服务器传到并保存在客户端的缓存中。
目前码率的选取策略主要有以下两种方式:基于带宽预测的方法和基于缓存的方法。基于带宽预测的方法得到广泛的研究和应用,该方法是根据实时检测用户带宽状况,动态调整视频流的质量。然而使用这种方法在有网络资源竞争的情况下服务器的性能会严重下降,降低了用户体验。导致这种现象主要有两个原因:一是带宽预测是很难的并且是不准确的;二是决定在瓶颈情况下有多少带宽可利用是传输层TCP的职责,而HTTP是属于应用层的协议。基于这样的原因,很多研究者就建议不要尝试去预测用户的带宽使用情况,而是通过考虑客户端的缓存状态来动态选取视频的码率。
技术实现要素:
本发明为解决以上基于带宽预测码率的方法预测准确度低的缺陷,提供了一种基于PID控制器的动态调整视频码率的方法,该方法利用PID控制器根据缓存状态信息动态地对视频码率进行调整,使得播放系统能够对复杂的网络环境做出响应并保持稳定性,保证用户具有良好的体验。
为实现以上发明目的,采用的技术方案是:
一种基于PID控制器的动态调整视频码率的方法,包括以下步骤:
S1.对PID控制器比例单元、积分单元、微分单元的参数Kp、Ki和Kd进行初始化,PID控制器的状态转移方程为:
S2.对于下载的第K块视频块,其对应的码率通过下式计算获得:
rk=Kp1(bk-bf)+C
其中k的初始值为1,bf表示缓存稳定时缓存队列的长度,bk表示更新的下载第k块视频块时缓存队列的长度,Kp1、C表示设定的常数,常数Kp1和C满足:
ck表示下载第k个视频块时网络的平均带宽,τ表示每个视频块的长度;
S3.使用流近似来对缓存状态的变化率进行计算:
其中bk-1表示下载第k-1块视频块时缓存队列的长度,tk、tk-1分别表示下载下载第k块视频块、第k-1块视频块的具体时刻;
S4.由上可知,rk、bt′满足以下线性状态方程组:
δ(rk)=rk-rf,其中rf表示当缓存处于稳定状态时的视频码率;δ(·)表示差分运算;
因此状态转移方程为:
S5.将步骤S4的状态转移方程应用到PID控制器的状态转移方程中,得:
S6.根据PID控制器的特性,视频码率的调整表示为:
因此,rk=Q(δ(rk)+rf);其中Q(·)表示量化算子;
S7.令k=k+1,然后重复执行步骤S2~S6。
优选地,所述步骤S2中,更新bk的过程表示如下:
其中Δtk-1表示缓存存满的时候,暂停下载视频块的时间,Bmax表示缓存的最大容量。
与现有技术相比,本发明的有益效果是:
(1)本发明提供的方法利用PID控制器根据缓存状态信息动态地对视频码率进行调整,使得播放系统能够对复杂的网络环境做出响应并保持稳定性,保证用户具有良好的体验。
(2)本发明提供的方法在更新缓存队列时,若缓存存满,则暂停下载视频块,防止缓存队列溢出。
附图说明
图1为DASH系统架构示意图。
图2为本发明提供的方法的流程图。
图3为PID控制器的结构示意图。
图4为线性系统的框图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
以下结合附图和实施例对本发明做进一步的阐述。
实施例1
如图2所示,本发明提供的基于PID控制器的动态调整视频码率的方法,包括以下步骤:
第一步、对PID控制器比例单元、积分单元、微分单元的参数Kp、Ki和Kd进行初始化,如图3所示,PID控制器的状态转移方程为:
第二步、对于下载的第k块视频块,其对应的码率通过下式计算获得:
rk=Kp1(bk-bf)+C
其中k的初始值为1,bf表示缓存稳定时缓存队列的长度,bk表示更新的下载第k块视频块时缓存队列的长度,Kp1、C表示设定的常数,常数Kp1和C满足:
第三步、使用流近似来对缓存状态的变化率进行计算:
其中bk-1表示下载第k-1块视频块时缓存队列的长度,tk、tk-1分别表示下载下载第k块视频块、第k-1块视频块的具体时刻;
第四步、由上可知,如图4所示,rk、bk满足以下线性状态方程组:
因此状态转移方程为:
第五步、将第四步的状态转移方程应用到PID控制器的状态转移方程中,得:
第六步、根据PID控制器的特性,视频码率的调整表示为:
因此,rk=Q(δ(rk)+rf);其中Q(·)表示量化算子;
第七步、令k=k+1,然后重复执行步骤第二步~第六步。
优选地,所述第二步中,更新bk的过程表示如下:
其中Δtk-1表示缓存存满的时候,暂停下载视频块的时间,Bmax表示缓存的最大容量。
上述方法的伪代码如下:
输入:
PID控制模型参数:Kp,Ki,Kd
缓存的平稳状态:bf
初始视频码率和缓存状态:v0,b0
码率选择系数:Kp1
输出:
所要获取的视频块的码率。
1、初始化步骤:t←0,b(0)←0,r←r0;
2、for i←1 to N:
3、下载码率为ri-1第i-1个视频块,等待其下载完成;
4、更新缓存状态
5、计算
6、计算rk=Q(δ(rk)+rf);
end for
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。