本发明涉及音视频应用领域,尤其涉及用于svc-dash点播系统的动态缓存调度方法、设备及存储设备。
背景技术:
:现如今,网络内容的分发和传输正在显著增长,而其中视频内容占据了很大比例。据思科vni(ciscovni)预测,到2021年,年度全球ip流量将达到3.3zb,而视频流量将占据82%的比例,占据主导地位。在视频的传输方面,面对终端和网络的异构性,我们需要针对不同的设备和变化的网络提供不同质量的视频。http自适应码流(has)技术应运而生,客户端能够根据自身情况挑选不同质量的视频分片,而dash作为has的一员,凭借自己的诸多优势,已经发展成为当今最先进的视频流传播技术。同时,由于h.264/svc(scalablevideocoding)能够极大地节约服务器存储空间,而且拥有更灵活的调节模式,近年来越来越多的svc-dash方案被提出。然而,一些问题仍然存在,比如在频繁波动的网络环境中会出现视频质量频繁切换甚至出现视频中断等现象,严重影响用户观看体验。现有的svc-dash解决方案大多是通过带宽预测或者简单的横向堆叠来调整视频质量。本发明提供了一种基于svc-dash的动态缓存调度方法。从而应对带宽的频繁抖动对视频质量的负面影响,同时针对现有svc-dash解决方案存在的不足做进一步的改进。技术实现要素:为了解决上述问题,本发明提供了用于svc-dash点播系统的动态缓存调度方法、设备及存储设备,用于svc-dash点播系统的动态缓存调度方法,主要包括以下步骤:s101:获取svc格式的视频源,将视频源均匀分离成n个视频分片;并根据视频源的质量层级,将每一个视频分片均匀分离成m个视频块,将每个视频分片的m个视频块堆叠成m层,并将所有视频块存储于服务器中;每一个视频块对应有一个分片号i和一个层序号j;其中,m和n均为大于等于1的整数;i的取值范围为[1,n],j的取值范围为[1,m];初始化i和j的值为1;s102:初始化缓存区参数:设定缓存区高度lmax的变化范围为[1,m],设定缓存区长度bmax的变化范围为[min,max],缓存区的缓存面积是长度为bmax,高度为lmax的矩形区域;初始化lmax的值为m,bmax的值为max;将缓存区划分为lmax*bmax个存储块,这些存储块按照坐标[1,1]、[1,2]…[1,bmax]、[2,1]…[2,bmax]…[lmax,bmax]依序排列,用来存储所述视频块;s103:下载分片号为i,层序号为j的视频块到第一个空的存储块,s104:完成所述视频块的下载后,更新缓存区缓存状态数据和平均网络带宽avgbw;所述缓存状态数据包括缓存区各层视频块的下载个数和缓存区中最新被下载的视频块的分片号;s105:根据平均带宽avgbw调整缓存区高度lmax;s106:根据缓存状态数据调整缓存区长度bmax;s107:判断是否下载结束或者视频客户端被关闭;若是,则到步骤s109;若否,则到步骤s108;s108:遍历缓存区的所有存储块,查找第一个空的存储块,根据缓存区缓存状态数据确定下一个被下载的视频块的分片号i和层序号j;返回到步骤s103;s109:结束缓存程序,完成动态缓存调度。进一步地,所述步骤s105中,根据平均网络带宽avgbw调整缓存区高度lmax的具体步骤为:s201:判断平均网络带宽avgbw是否大于等于第k-1层视频的码率qk-1;若是,则缓存区高度lmax的值为k;若否,则到步骤s202;其中,k为整数,取值范围为[1,m],且k的初始值取最大值m;s202:将k更新为k-1,判断k是否为1;若是,则缓存区高度lmax的值为1;若否,则返回步骤s201;进一步地,所述步骤s106中,根据缓存状态数据调整缓存区长度bmax的具体步骤为:s301:判断条件bmax>buffer_len1≥min与buffer_lenlmax<buffer_len1是否同时成立;若是,则将bmax更新为bmax-1;若否,则到步骤s302;其中,buffer_len1为缓存区中第1层视频块的下载个数,buffer_lenlmax为缓存区最高层视频块的下载个数;s302:判断条件bmax=buffer_len1<max与buffer_lenlmax=buffer_len1是否同时成立;若是,则将bmax更新为bmax+1;若否,则bmax值不变。进一步地,所述步骤s108中,根据缓存区高度lmax、缓存区长度bmax和缓存状态调整下一个被下载的视频块所对应的分片号i和层序号j的具体步骤为:s401:判断缓存区是否有剩余存储块的层,从缓存区第一层开始判断,令判断层数p=1;s402:判断p是否小于等于lmax;若是,则到步骤s403;若否,则到步骤s406;s403:判断缓存区中第p层是否有空余存储块;若是,则到步骤s405;若否,则到步骤s404;s404:将p更新为p+1,返回步骤s402;s405:将层序号j赋值为p,判断第p层是否有视频块;若是,则i等于第p层最新下载的视频块的分片号加1;若否,则i等于缓存区第1层第一个分片号;s406:判断缓存区第一层的最后一个视频块的分片号是否为n;若是,结束下载;若否,则到步骤s407;s407:将下载线程挂起,并设置i为缓存区第1层最后一个分片号的下一号,层序号j为1;循环判断缓存区是否出现空余存储块,一旦出现空余存储块,则继续下载;在缓存视频分片的同时,解码播放线程将持续从缓存区中取出视频分片至客户端进行解码播放,每当取走一个视频分片,缓存区中剩余的视频分片依次前移。一种存储设备,所述存储设备存储指令及数据用于实现用于svc-dash点播系统的动态缓存调度方法。用于svc-dash点播系统的动态缓存调度设备,包括:处理器及所述存储设备;所述处理器加载并执行所述存储设备中的指令及数据用于实现用于svc-dash点播系统的动态缓存调度方法。本发明提供的技术方案带来的有益效果是:与现有的svc-dash调度方法相比,本发明的技术方案在质量的提升速度、质量的平均等级、视频播放流畅度以及播放质量的平稳度方面均有更好的表现。附图说明下面将结合附图及实施例对本发明作进一步说明,附图中:图1是本发明实施例中用于svc-dash点播系统的动态缓存调度方法的流程图;图2是本发明实施例中视频缓存区模型的示意图;图3是本发明实施例中用于svc-dash点播系统的动态缓存调度方法的详细流程图;图4是本发明实施例中视频缓存区模型1的示意图;图5是本发明实施例中视频缓存区模型2的示意图;图6是本发明实施例中视频缓存区模型3的示意图;图7是本发明实施例中视频缓存区模型4的示意图;图8是本发明实施例中视频缓存区模型5的示意图;图9是本发明实施例中硬件设备工作的示意图。具体实施方式为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。本发明的实施例提供了用于svc-dash点播系统的动态缓存调度方法、设备及存储设备,用于图2所示的视频缓存区模型。请参考图1,图1是本发明实施例中用于svc-dash点播系统的动态缓存调度方法的流程图,具体包括如下步骤:s101:获取svc格式的视频源,将视频源均匀分离成n个视频分片;并根据视频源的质量层级,将每一个视频分片均匀分离成m个视频块,将每个视频分片的m个视频块堆叠成m层,并将所有视频块存储于服务器中;每一个视频块对应有一个分片号i和一个层序号j;其中,m和n均为大于等于1的整数;i的取值范围为[1,n],j的取值范围为[1,m];初始化i和j的值为1;s102:初始化缓存区参数:设定缓存区高度lmax的变化范围为[1,m],设定缓存区长度bmax的变化范围为[min,max],缓存区的缓存面积是长度为bmax,高度为lmax的矩形区域;初始化lmax的值为m,bmax的值为max;将缓存区划分为lmax*bmax个存储块,这些存储块按照坐标[1,1]、[1,2]…[1,bmax]、[2,1]…[2,bmax]…[lmax,bmax]依序排列,用来存储所述视频块;其中,[1,1]、[2,1]…[bmax,1]为缓存区第一层,[1,2]、[2,2]…[bmax,2]为缓存区第二层,[1,j]、[2,j]…[bmax,j]为缓存区第j层,[1,lmax]、[2,lmax]…[bmax,lmax]为缓存区第lmax层;s103:下载分片号为i,层序号为j的视频块到第一个空的存储块,s104:完成所述视频块的下载后,更新缓存区缓存状态数据和平均网络带宽avgbw;所述缓存状态数据包括缓存区各层视频块的下载个数和缓存区中最新被下载的视频块的分片号;s105:根据平均带宽avgbw调整缓存区高度lmax;s106:根据缓存状态数据调整缓存区长度bmax;s107:判断是否下载结束或者视频客户端被关闭;若是,则到步骤s109;若否,则到步骤s108;s108:遍历缓存区的所有存储块,查找第一个空的存储块,根据缓存区缓存状态数据确定下一个被下载的视频块的分片号i和层序号j;返回到步骤s103;s109:结束缓存程序,完成动态缓存调度。所述步骤s105中,根据平均网络带宽avgbw调整缓存区高度lmax的具体步骤为:s201:判断平均网络带宽avgbw是否大于等于第k-1层视频的码率qk-1;若是,则缓存区高度lmax的值为k;若否,则到步骤s202;其中,k为整数,取值范围为[1,m],且k的初始值取最大值m;s202:将k更新为k-1,判断k是否为1;若是,则缓存区高度lmax的值为1;若否,则返回步骤s201;所述步骤s106中,根据缓存状态数据调整缓存区长度bmax的具体步骤为:s301:判断条件bmax>buffer_len1≥min与buffer_lenlmax<buffer_len1是否同时成立;若是,则将bmax更新为bmax-1;若否,则到步骤s302;其中,buffer_len1为缓存区中第1层视频块的下载个数,buffer_lenlmax为缓存区最高层视频块的下载个数;s302:判断条件bmax=buffer_len1<max与buffer_lenlmax=buffer_len1是否同时成立;若是,则将bmax更新为bmax+1;若否,则bmax值不变。所述步骤s108中,根据第一个空的存储块确定下一个被下载的视频块的分片号i和层序号j的步骤为:s401:判断缓存区是否有剩余存储块的层,从缓存区第一层开始判断,令判断层数p=1;s402:判断p是否小于等于lmax;若是,则到步骤s403;若否,则到步骤s406;s403:判断缓存区中第p层是否有空余存储块;若是,则到步骤s405;若否,则到步骤s404;s404:将p更新为p+1,返回步骤s402;s405:将层序号j赋值为p,判断第p层是否有视频块;若是,则i等于第p层最新下载的视频块的分片号加1;若否,则i等于缓存区第1层第一个分片号;s406:判断缓存区第一层的最后一个视频块的分片号是否为n;若是,结束下载;若否,则到步骤s407;s407:将下载线程挂起,并设置i为缓存区第1层最后一个分片号的下一号,层序号j为1;循环判断缓存区是否出现空余存储块,一旦出现空余存储块,则继续下载;在缓存视频分片的同时,解码播放线程将持续从缓存区中取出视频分片至客户端进行解码播放,每当取走一个视频分片,缓存区中剩余的视频分片依次前移。如图3所示为本发明的实施例中用于svc-dash点播系统的动态缓存调度方法的详细流程图,展现了整个动态缓存调度方法的实施流程,与图3对应的各变量的解释如表1所示:表1变量表1i(1~n)视频块分片号j(1~m)视频块层序号lmax(1~m)缓存区高度bmax(min~max)缓存区长度qk(1<=k<=m)第k层视频的码率buffer_lenp(1<=p<=m)缓存区第p层视频块下载的个数last_idq(1<=q<=n)缓存区第q层最新视频分片号avgbw平均网络带宽基本思想是:从基本层(缓存区第1层)开始依次向后下载,当缓存内所有视频分片的基本层填充完毕,转而填充第一增强层(缓存区第2层),以此类推,随着增强层的堆叠,视频质量不断提升,直到到达视频质量最高层级。与此同时,根据近期带宽限制缓存区中堆叠的最大层级(缓存区高度)。当缓存区出现空列(与视频分片相对应),且前面还有未填满的高层分片,若缓存长度未到最小值,缓存缩短,如图4。当缓存区填满,且缓存长度未到达最大值,缓存变长,如图5。各图中的变量含义如表2所示。表2变量表2segid缓存区分片号layerid缓存区层序号bmax缓存区长度lmax缓存区高度dynamicarea动态变化范围decoding解码播放区buffering缓存区通过顺序堆叠的方式,可以有效减少卡顿现象,同时大幅度减少质量切换频率。另外,由于引入了动态缓存和层级限制,相比于单纯的堆叠(wquad),本发明的方法(lsdc)优势主要体现在两点:(1)快速提升质量t0表示下载开始,此时缓存区为空,tp表示下载线程开始后的第p个分片时长,视频块中的数字代表其在第几个分片时长内被下载。假设此后带宽为4视频块/分片时长。在wquad中,缓存区长度保持不变(15),在lsdc中,缓冲区长度从t1时的15压缩到t4时的5,再经过33个分片时长还原到t37的15。从图6中可以看出,wquad在第13个分片时质量提到最高层,而在lsdc中在第4个分片就提升至最高层。这是因为lsdc中,每下载一个视频块,缓存区长度自适应调整,在前期通过压缩缓存区长度提前填充缓存区高层,快速提升质量(当一个视频分片的第一层视频块被下载后,这个视频分片即可被播放,一个视频分片的视频块下载的越多,则这个视频分片的视频播放质量越高),在缓存区填满后慢慢扩大缓存区长度,在第37个分片时长后追回到最大长度。wquad在第37个分片时长之前就达到了饱和,后面多余的带宽都浪费了,相当于预支后期的多余带宽提前提升质量。(2)提高容错性在缓存过程中,若缓存区在某时刻填满了,假定此时为t0。网络发生波动,带宽降低到2视频块/分片时长,后来提升到4视频块/分片时长。图7为前15个分片时长的填充情况,从图7中可以看出,wquad将后续的分片列全都堆叠到第二层,而lsdc通过压缩缓存区长度,将质量维持在lmax。15个分片时长以后,wquad将出现质量等级的下降,而lsdc保持不变。在第t31时,lsdc缓存区长度压缩到极限,失去调节能力,开始和wquad一样的堆叠模式,相当于一个压缩版的wquad。如果此后带宽回升,lsdc将逐渐扩充缓存区长度,直到还原。从图8中可以看出,若带宽在t31时提升,lsdc迅速填充缓存区高层视频块,然后逐步扩大缓存区长度,到t46时追回压缩的缓存区长度,在此过程中始终保持在lmax的等级,而wquad则已经经历了20个分片的等级下降,在第21个播放分片才回升质量,所以lsdc有效规避了带宽的波动。通过与现有的调度方法作对比,本发明的技术方案在四种不同的网络环境下(平稳、渐变、突变、抖动),调度策略在质量提升速度、平均视频质量以及视频播放的流畅度和平稳度方面均有良好甚至更好的表现。请参见图9,图9是本发明实施例的硬件设备工作示意图,所述硬件设备具体包括:用于svc-dash点播系统的动态缓存调度设备901、处理器902及存储设备903。用于svc-dash点播系统的动态缓存调度设备901:所述用于svc-dash点播系统的动态缓存调度设备901实现所述用于svc-dash点播系统的动态缓存调度方法。处理器902:所述处理器902加载并执行所述存储设备903中的指令及数据用于实现所述用于svc-dash点播系统的动态缓存调度方法。存储设备903:所述存储设备903存储指令及数据;所述存储设备903用于实现所述用于svc-dash点播系统的动态缓存调度方法。本发明的有益效果是:与现有的svc-dash调度方法相比,本发明的技术方案在质量的提升速度、质量的平均等级、视频播放流畅度以及播放质量的平稳度方面均有更好的表现。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12