本发明属于视频传输技术领域,涉及基于mpeg-dash协议的流媒体视频或音频的传输,具体涉及一种基于mpeg-dash协议的动态自适应码率选择方法。
背景技术:
目前,随着网络带宽的不断增加,人们对媒体信息的需求也在不断增长。据cisco公司在年五月发布的报告中显示,到2017年,媒体流量将占据整个网络流量的86%,各类媒体应用将成为人们信息化生活中不可或缺的一部分。当前各种多媒体应用层出不穷,它们为人们提供集音频,视频,图文于一体的综合体验。人们期望获得更快速,更流畅,更高质量的媒体服务体验,如何满足这一需求成为当今流媒体技术的一大难点。
流媒体技术指的是采用流式传输方式传输媒体数据的技术,它的主要特点由服务器向用户连续、实时地传送媒体数据。在采用流媒体技术的系统中,用户无需等待全部数据下载完成即可进行播放,即实现边下载边播放的效果,大大降低了用户启动时间和对用户侧缓存大小的需求。传统的rtp/rtsp流媒体技术采用udp协议进行数据传输,因此仅能提供不可靠的传输。此外由于rtp/rtsp流媒体技术需要特定的流媒体服务器,导致部署成本较高。针对这些问题,http动态自适应流媒体(dash,dynamicadaptivestreamingoverhttp)技术成为近年来流媒体界的新宠。该技术釆用http/tcp协议架构,为用户提供可靠的数据传输。同时该技术使用的是80端口,因此可以轻松穿越防火墙。再者,dash技术可以重用普通的web服务器,部署成本低。最后,该技术支持同一媒体内容不同质量级别的媒体表示,尤其是移动端用户可以根据设备能力、缓存区大小和实时网络带宽情况实时调整请求的媒体质量级别,具备动态自适应的特点。因此,dash技术得到了各类厂商和标准化组织的广泛关注,有望成为下一代主流流媒体技术。
但是mpeg-dash协议只定义了mpd文件结构以及流媒体切片格式,并没有规定客户端选择切片文件的流程或机制,在某种程度上基于dash协议的动态自适应码率选择方法的好坏直接决定了流媒体传输效率的高低和用户的观看体验,所以基于dash协议的动态自适应码率选择方法有着很大的研究和发展空间,而现在还未有类似技术出现。
技术实现要素:
为实现上述目的,本发明提供一种基于mpeg-dash协议的动态自适应码率选择方法,实现了在流畅播放的前提下尽可能的提高视频质量,极大的增强了用户观看体验。
本发明所采用的技术方案是,基于mpeg-dash协议的动态自适应码率选择方法,具体按照以下步骤进行:
步骤1,建立服务器与客户端的http连接;
步骤2,客户端向服务器发送httpget请求,请求下载mpd文件并存储;
步骤3,服务器收到客户端的请求后对客户端进行响应发送mpd文件,客户端对mpd文件进行下载并对下载的mpd文件进行解析;为了使视频可以尽快开始播放,根据解析mpd文件所得到的视频分片的url所对应的码率范围先以最小码率下载一部分视频切片,服务器收到请求后给客户端发送视频切片文件,客户端对切片文件进行下载;
步骤4,对步骤3下载视频切片时的网络带宽进行计算,统计和记录并运用卡尔曼滤波预测法对下载下一个视频分片时的网络带宽进行预测;
步骤5,根据步骤4所得到的预测带宽并结合当前缓存区视频切片剩余情况对下载下一个视频切片的码率做出选择;
步骤6,若视频切片没有全部下载完成则跳转到步骤4-5,继续执行预测和下载过程,否则退出循环过程,方法结束。
进一步的,所述步骤1的具体过程是:
步骤11:创建一个url对象;
步骤12:创建一个http链接;
步骤13:使用io流获取数据。
进一步的,所述步骤2的具体过程是:
步骤21:判断mpd文件是否存在,若存在则返回1否则返回0;
步骤22:文件不存在时对文件进行下载;
步骤23:对下载完成的文件进行存储。
进一步的,所述步骤3的具体过程是:
步骤31:获取mpd文件中representation元素的指定属性,只需要获取id,width,height三个属性;
步骤32:获取mpd文件中每个等级视频切片的url;
步骤33:根据解析mpd文件所得url地址选取最小码率的视频切片进行下载。
进一步的,所述步骤4的具体过程是:
步骤41:获取已下载分片的网络带宽bn:
其中:tn(e)表示第n个切片下载完成的时间;tn(s)表示第n个切片开始下载的时间;r(n)表示第n个切片所选的码率;θ表示每个切片播放持续的时间,其值为2秒;bn是第n个切片的网络下载带宽值;
步骤42:建立系统状态方程和量测方程:
其中:bn+1是第n+1个切片的预测下载带宽值;yn+1是n+1个切片带宽量测值;a是状态转移矩阵,反映了系统从第n个切片的下载带宽到第n+1个的状态变化;un是第n个切片的控制向量;b是控制分配矩阵;qn和rn+1分别是系统噪声和测量噪声,qn的统计特性e[qn]=0,rn+1的统计特性e[rn+1]=0;h为观测矩阵;
步骤43:由第n个分片的最优带宽值
步骤44:由上一次的误差协方差pn和系统噪声qn的协方差q预测新的误差协方差
其中q为系统噪声qn的协方差,类型属于高斯白噪声;
步骤45:计算卡尔曼增益
其中r为测量噪声rn+1的协方差;
步骤46:对
此时
步骤47:若切片尚未全部下载完成则继续步骤48,否则退出整个预测过程;
步骤48:为下一步估计第n+2个切片的最优带宽值的迭代进行更新操作,即更新pn+1值:
pn+1是第n+1个切片的最优带宽偏差;
步骤49,跳转到步骤43,一直重复至到步骤47终结。
进一步的,所述步骤5的具体过程是:
步骤51:若视频分片未全部下载完成,即仍然存在预测带宽,则执行步骤52,否则下载过程结束;
步骤52:
为了确保缓存区不出现上溢及下溢,同时确保缓冲区可以有效抵消带宽波动所造成的预测不准确带来的播放停滞或缓冲区上溢的可能性,现对缓冲区设置两个时间阀值qmin和qmax,根据缓冲区设置的阀值和已经存在的分片数以及预测带宽来决定所要选取的码率值。
进一步的,所述步骤52的具体过程是:
步骤521:
计算第n个分片sn下载完成后缓冲区剩余的时长:
t(tn(e))=t(tn(s))+θ-(tn(e)-tn(s))(8)
其中t(tn(e))表示第n个分片下载完后缓冲区时长,同时也是开始下载第n+1个切片时缓冲区的时长,t(tn(s))表示开始下载第n个分片时缓冲区的时长,同时也是下载完第n-1个分片时缓冲区的时长;
步骤522:
当t(tn+1(s))<qmin时缓存区的切片有用完的可能性,为了确保缓冲区有足够的视频切片必须保证t(tn+1(e))≥qmin,则其码率需满足:
ψ无含义,仅将公式等号左面计算得到的值记为ψ,第n+1片所选取的码率r(n+1)值为max(r(1),ψ),但是由于码率值是一系列离散值,所以在保证视频播放流畅的前提下最终的码率值为距离max(r(1),ψ)最近的向下取定的码率值,其中r(1)为视频切片生成时的最小码率;
步骤523:
当t(tn+1(s))>qmax时缓冲区有了足够的切片,继续下载有上溢出的可能性,为了确保缓冲区不上溢保证t(tn+1(e))≤qmax,则其码率需要满足:
ξ无含义,仅将公式等号左面得到的值记为ξ;
情况一:r(p)≥ξ为了保证视频画面尽可能小的抖动,选取的码率值为ξ,同时由于码率值是一系列离散值,所以在保证视频播放流畅的前提下最终的码率值为距离ξ最近的向上取定的码率值;
情况二:r(p)<ξ时,继续下载必定会出现缓存区上溢,为了避免这种情况发生则启动睡眠机制,即下载会被暂停一段时间,暂停过后重新计算第n个分片sn下载完成后缓冲区剩余的时长,继续进行码率判决,其中r(p)为视频切片生成时的最大码率;
步骤524:
当qmin≤t(tn+1(s))≤qmax时,缓冲区的分片数在一个最优的范围中,码率的取值范围为:
为了减少码率波动,码率值与上一个切片码率值保持相同即可:r(n+1)=r(n)。
本发明的有益效果:本发明是基于dash协议的动态码率自适应选择算法,涉及到了带宽预测和缓存区管理,实现了视频质量随网络情况的动态改变。算法采用了卡尔曼滤波来预测带宽,极大的提高了预测精度,并将预测出的带宽与缓存区限制条件相结合,最终确定待下载切片的码率并下载该码率的切片文件。保证了在流畅播放的前提下尽可能的提高视频播放质量,极大的增强了用户观看体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的客户端与服务器的连接交互过程图。
图2是本发明实施例的mpd结构示意图。
图3是本发明实施例的码率自适应算法的流程图。
具体实施方式
下面将结合本发明实施例中,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种基于mpeg-dash协议的动态自适应码率选择方法,其中包括以下功能:建立服务器与客户端的http连接、下载与存储mpd文件、解析mpd文件、码率自适应选择。
思路如下:首先建立服务器与客户端的http连接,当连接建立完成后客户端从服务器下载mpd文件并对其进行存储和解析;其次为了缩短缓冲时间尽快进行视频的播放,和为后续带宽预测积累原始数据,根据解析mpd文件所得到的码率范围先以最小码率下载一部分视频切片并对下载该部分视频切片时的网络带宽进行计算、统计和记录,并运用卡尔曼滤波预测法对下载下一个视频分片时的网络带宽进行预测;最后根据上面所得到的预测带宽和当前缓存区视频切片剩余情况对下载下一个视频切片的码率做出选择,从而使所播放视频质量动态的适应不同网路情况。
具体来说按照以下步骤进行:
步骤1,
首先建立服务器与客户端的http连接;由于dash在应用层是以http作为传输协议的,而http在传输层是基于tcp协议的,所以客户端与服务器的会话需要建立连接。
其建立服务器与客户端的http连接的具体过程为:
步骤11:创建一个url对象;
步骤12:创建一个http链接;
步骤13:使用io流获取数据。
步骤2,
然后客户端向服务器发送httpget请求,请求下载mpd文件并存储。
具体过程为:
步骤21:判断mpd文件是否存在,若存在则返回1否则返回0;
步骤22:文件不存在时对文件进行下载;
步骤23:对下载完成的文件进行存储。
步骤3,
服务器收到客户端的请求后对客户端进行响应发送mpd文件,客户端对mpd文件进行下载并对下载的mpd文件进行解析;为了使视频可以尽快开始播放,根据解析mpd文件所得到的视频分片的url所对应的码率范围先以最小码率下载一部分视频切片,服务器收到请求后给客户端发送视频切片文件,客户端对切片文件进行下载。mpd文件的结构如图2所示。
具体过程为:
步骤31:获取mpd文件中representation元素的指定属性,这里只需要获取id,width,height三个属性即可;
步骤32:获取mpd文件中每个等级视频切片的url;
步骤33:根据解析mpd文件所得url地址选取最小码率的视频切片进行下载。
步骤4,
对步骤3下载视频切片时的网络带宽进行计算,统计和记录并运用卡尔曼滤波预测法对下载下一个视频分片时的网络带宽进行预测。
图3是码率自适应选择算法的流程图,当客户端对mpd文件进行下载并解析后虽然得到了视频文件的url,但是为了使用户得到更好的视听体验还不能直进行下载,必须要经过码率自适应选择策略。
其具体步骤如下:
步骤41:获取已下载分片的网络带宽bn:
其中:tn(e)表示第n个切片下载完成的时间;tn(s)表示第n个切片开始下载的时间;r(n)表示第n个切片所选的码率;θ表示每个切片播放持续的时间,这里,每个切片播放持续的时间都相同,在进行视频切割封装时都切成相同的时间长度其值为2秒;bn是第n个切片的网络下载带宽值。
步骤42:建立系统状态方程和量测方程:
其中:bn+1是第n+1个切片的预测下载带宽值;yn+1是n+1个切片带宽量测值;a是状态转移矩阵,反映了系统从第n个切片的下载带宽到第n+1个的状态变化;un是第n个切片的控制向量;b是控制分配矩阵;qn和rn+1分别是系统噪声和测量噪声,qn的统计特性e[qn]=0,rn+1的统计特性e[rn+1]=0;h为观测矩阵。
步骤43:由第n个分片的最优带宽值
步骤44:由上一次的误差协方差pn和系统噪声qn的协方差q预测新的误差协方差
其中q为系统噪声qn的协方差,其类型属于高斯白噪声;
步骤45:计算卡尔曼增益
其中r为测量噪声rn+1的协方差;
步骤46:对
此时
步骤47:若切片尚未全部下载完成则继续步骤48,否则退出整个预测过程。
步骤48:为下一步估计第n+2个切片的最优带宽值的迭代进行更新操作,即更新pn+1值:
pn+1是第n+1个切片的最优带宽偏差;
步骤49,跳转到步骤43,一直重复至到步骤47终结。
步骤5:根据步骤4所得到的预测带宽并结合当前缓存区视频切片剩余情况对下载下一个视频切片的码率做出选择,具体过程为:
步骤51:若视频分片未全部下载完成,即仍然存在预测带宽,则执行步骤52,否则下载过程结束。
步骤52:
为了确保缓存区不出现上溢及下溢,同时确保缓冲区可以有效抵消带宽波动所造成的预测不准确带来的播放停滞或缓冲区上溢的可能性,现对缓冲区设置两个时间阀值qmin和qmax,根据缓冲区设置的阀值和已经存在的分片数以及预测带宽来决定所要选取的码率值。
其中,步骤52具体为:
步骤521:
计算第n个分片sn下载完成后缓冲区剩余的时长:
t(tn(e))=t(tn(s))+θ-(tn(e)-tn(s))(8)
其中t(tn(e))表示第n个分片下载完后缓冲区时长(同时也是开始下载第n+1个切片时缓冲区的时长),t(tn(s))表示开始下载第n个分片时缓冲区的时长(同时也是下载完第n-1个分片时缓冲区的时长)。
步骤522:
当t(tn+1(s))<qmin时缓存区的切片有用完的可能性,为了确保缓冲区有足够的视频切片必须保证t(tn+1(e))≥qmin,则其码率需满足:
ψ并无含义,仅将公式等号左面计算得到的值记为ψ。第n+1片所选取的码率r(n+1)值应该为max(r(1),ψ),但是由于码率值是一系列离散值,所以在保证视频播放流畅的前提下最终的码率值为距离max(r(1),ψ)最近的向下取定的码率值。其中r(1)为视频切片生成时的最小码率。
步骤523:
当t(tn+1(s))>qmax时缓冲区有了足够的切片,继续下载有上溢出的可能性,为了确保缓冲区不上溢必须保证t(tn+1(e))≤qmax,则其码率需要满足:
ξ同理并无具体含义,仅将公式等号左面得到的值记为ξ;
情况一:r(p)≥ξ为了保证视频画面尽可能小的抖动,选取的码率值应该为ξ,同时由于码率值是一系列离散值,所以在保证视频播放流畅的前提下最终的码率值为距离ξ最近的向上取定的码率值。
情况二:r(p)<ξ时,继续下载必定会出现缓存区上溢,为了避免这种情况发生则启动睡眠机制,即下载会被暂停一段时间,暂停过后重新计算第n个分片sn下载完成后缓冲区剩余的时长,继续进行码率判决。其中r(p)为视频切片生成时的最大码率。
步骤524:
当qmin≤t(tn+1(s))≤qmax时,缓冲区的分片数在一个最优的范围中,码率的取值范围为:
为了减少码率波动,码率值与上一个切片码率值保持相同即可:r(n+1)=r(n)。
步骤6:若视频切片没有全部下载完成则跳转到步骤4-5,继续执行预测和下载过程,否则退出循环过程,方法结束。
本发明在带宽预测时采用了卡尔曼滤波预测的方法,由于该方法的原理遵从预测—修正的重复迭代过程,所以保证了其带宽预测精度;其次,由于移动客户端存在存储容量不足的实际情况,这种情况极可能导致缓存区发生“溢出”现象,当缓存区发生下溢出时,会使得视频播放出现停滞,当发生上溢出时,又不能充分利用带宽资源提高视频播放质量。为了解决这个问题又加入了缓存区控制策略,并通过将带宽预测与缓存区控制相结合的方法来预测待下载视频切片的码率,这样可以使得所选切片码率既能满足客户端缓存实际情况,减少由缓存区溢出带来的问题,优先保证了视频流畅播放,又可以使所选码率符合网络带宽实际变化情况,保证视频质量,极大的增强了用户观看体验。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。