本发明实施例涉及多媒体技术领域,尤其涉及一种视频卡顿预测方法、装置、计算机设备及存储介质。
背景技术:
视频卡顿是用户设备播放视频经常会遇到的一种现象。可以通过视频卡顿预测结果配合基站调度算法来调整调度策略以及配置方案,保证视频播放流畅,实现提升用户的观赏体验。
目前,视频是否卡顿的判断方式为:通过统计某段预设时间内各单位时间主视频流的接收帧率,并计算接收帧率方差,通过判断该方差是否大于卡顿阈值,确定该时间段内视频是否出现卡顿。
上述卡顿判断方式是通过一段时间内的视频帧率方差判断该时间段内视频的卡顿情况,无法预测下一时间段内的视频是否出现卡顿,且不具有实时性。
技术实现要素:
本发明实施例提供一种视频卡顿预测方法、装置、计算机设备及存储介质,可以准确预测视频在下一时间内的卡顿。
第一方面,本发明实施例提供了一种视频卡顿预测方法,包括:
获取目标视频在设定时刻的前一时间段内的流量特征,形成流量特征序列;
将所述流量特征序列输入到预先训练的卡顿预测模型中,得到所述目标视频在设定时刻的后一时间间隔内的卡顿预测结果,其中,所述时间段的时长大于等于所述时间间隔的时长。
第二方面,本发明实施例还提供了一种视频卡顿预测装置,包括:
流量特征序列生成模块,用于获取目标视频在设定时刻的前一时间段内的流量特征,形成流量特征序列;
视频卡顿预测模块,用于将所述流量特征序列输入到预先训练的卡顿预测模型中,得到所述目标视频在设定时刻的后一时间间隔内的卡顿预测结果,其中,所述时间段的时长大于等于所述时间间隔的时长。
第三方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明实施例中任一所述的视频卡顿预测方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的视频卡顿预测方法。
本发明实施例通过获取视频在设定时刻之前一段时间内的流量特征,并形成流量特征序列,输入到预先训练的卡顿预测模型中,可以得到视频在设定时刻之后的一段时间内的卡顿预测结果,解决了现有技术中无法预测视频卡顿的问题,实现预测未来时间段内的视频卡顿,提高了视频卡顿预测的实时性。
附图说明
图1a是本发明实施例一中的一种视频卡顿预测方法的流程图;
图1b是本发明实施例一中的一种神经网络模型的示意图;
图1c是本发明实施例一中的一种长短期记忆网络模型的示意图;
图1d是本发明实施例一中的一种卷积神经网络模型的示意图;
图2是本发明实施例二中的一种视频卡顿预测方法的流程图;
图3是本发明实施例三中的一种视频卡顿预测装置的结构示意图;
图4是本发明实施例四中的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1a为本发明实施例一中的一种视频卡顿预测方法的流程图的示意图,本实施例可适用于获取视频的一段时间内的流量特征,并预测下一时间段内是否卡顿的情况,该方法可以由本发明实施例提供的视频卡顿预测装置来执行,该装置可采用软件和/或硬件的方式实现,并一般可集成计算机设备中。如图1a所示,本实施例的方法具体包括:
s110,获取目标视频在设定时刻的前一时间段内的流量特征,形成流量特征序列。
目标视频可以是指网络(如视频网站)上可实时播放的视频,或者还可以是预先录制的视频。可选的,所述目标视频为实时播放的视频,所述设定时刻为当前系统时刻。目标视频为实时播放的视频,同时设定时刻为当前系统时刻,实现快速准确地预测当前系统时刻未来时间间隔内是否卡顿。
设定时刻的前一时间段是指,在设定时刻以前的时间段,其中,时间段的时长可以根据需要进行设定,例如,时间段的时长为3秒。
用户在使用视频播放器播放视频时,会产生网络流量。通常流量特征用于描述在预设时间段内的网络情况,进而体现用户终端播放视频时的网络质量。流量特征可以是指播放视频产生的网络流量的特征。流量特征序列至少包括以下一个或几个流量特征。
可选的,所述流量特征包括下述至少一项:每秒字节数、上行每秒字节数、下行每秒字节数、每秒数据包数、上行每秒数据包数、下行每秒数据包数、每秒抖动字节数、上行每秒抖动字节数、下行每秒抖动字节数、每秒抖动包数、上行每秒抖动包数、下行每秒抖动包数、每秒最大字节数、上行每秒最大字节数、下行每秒最大字节数、每秒最大包数、上行每秒最大包数、下行每秒最大包数、每秒最小包数、上行每秒最小包数、下行每秒最小包数、每秒包间延时总和、每秒包间平均延时、每秒上行包间延时总和、每秒上行平均包间延时、每秒下行包间延时总和、每秒下行平均包间延时、码率和视频分辨率。其中,上行是指本地ip(internetprotocol,网际协议地址)向服务器ip发送字节数的方向。下行是指服务器ip向本地ip发送字节数的方向。
具体的,每秒字节数(kb/s):每秒传输的总字节数。上行每秒字节数(up_kb/s):本地ip每秒向视频服务器ip发送的字节数总和。下行每秒字节数(down_kb/s):视频服务器ip每秒向本地ip发送的字节数总和。
每秒包数(packets/s):每秒传输的数据包数。上行每秒数据包数(up_packets/s):本地ip向视频服务器ip每秒发送的包数总和。下行每秒数据包数(down_packets/s):视频服务器ip向本地ip每秒发送的包(packet)数总和。
每秒抖动字节数(shake_kb/s):请求时刻(s为单位)的每秒字节数与上一时刻每秒字节数之差。上行每秒抖动字节数(up_shake_kb/s):请求时刻(s为单位)的上行每秒字节数与上一时刻上行每秒字节数之差。下行每秒抖动字节数(down_shake_kb/s):请求时刻(s为单位)的下行每秒字节数与上一时刻下行每秒字节数之差。
每秒抖动包数(shake_packets/s):请求时刻(s为单位)的每秒包数与上一时刻每秒包数之差。上行每秒抖动包数(up_shake_packets/s):请求时刻(s为单位)的上行每秒包数与上一时刻上行每秒包数之差。下行每秒抖动包数(down_shake_packets/s):请求时刻(s为单位)的下行每秒包数与上一时刻下行每秒包数之差。
每秒最大字节数(max_kb/s):先记录初始时刻每秒字节数(kb/s)为每秒最大字节数,若任意当前时刻统计的每秒字节数大于历史统计的每秒最大字节数,则进行更新,否则保持不变。
上行每秒最大字节数(up_max_kb/s):先记录初始时刻上行每秒字节数(up_kb/s)为上行每秒最大字节数,若任意当前时刻统计的上行每秒字节数大于历史统计的上行每秒最大字节数,则进行更新,否则保持不变。
下行每秒最大字节数(down_max_kb/s):先记录初始时刻下行每秒字节数(down_kb/s)为下行每秒最大字节数,若任意当前时刻统计的下行每秒字节数大于历史统计的下行每秒最大字节数,则进行更新,否则保持不变。
每秒最大包数(max_packets/s):先记录初始时刻每秒包数数(packets/s)为每秒最大包数,若任意当前时刻统计的每秒包数大于历史统计的每秒最大包数,则进行更新,否则保持不变。
上行每秒最大包数(up_max_packets/s):先记录初始时刻上行每秒包数数(up_packets/s)为上行每秒最大包数,若任意当前时刻统计的上行每秒包数大于历史统计的上行每秒最大包数,则进行更新,否则保持不变。
下行每秒最大包数(down_max_packets/s):先记录初始时刻下行每秒包数(down_packets/s)为下行每秒最大包数,若任意当前时刻统计的下行每秒包数大于历史统计的下行每秒最大包数,则进行更新,否则保持不变。
每秒最小包数(min_packets/s):记初始时刻每秒包数数(up_packets/s)为每秒最小包数,若任意当前时刻统计的每秒包数小于历史统计的每秒最小包数,则进行更新,否则保持不变。
上行每秒最小包数(up_min_packets/s):记初始时刻上行每秒包数数(up_packets/s)为上行每秒最小包数,若任意当前时刻统计的上行每秒包数小于历史统计的上行每秒最小包数,则进行更新,否则保持不变。
下行每秒最小包数(down_min_packets/s):记初始时刻下行每秒包数(down_packets/s)为下行每秒最小包数,若任意当前时刻统计的下行每秒包数小于历史统计的下行每秒最大包数,则进行更新,否则保持不变。
每秒包间延时总和(decay_time):当前时刻(s为单位)每秒传输所有包的包间延时总和。
每秒上行包间延时总和(up_decay_time):当前时刻(s为单位)每秒上行传输所有包的包间延时总和。
每秒下行包间延时总和(down_decay_time):当前时刻(s为单位)每秒下行传输所有包的包间延时总和。
每秒包间平均延时(avg_decay_time):当前时刻(s为单位)每秒传输所有包的包间延时平均值。
每秒上行平均包间延时(avg_up_decay_time):当前时刻(s为单位)每秒上行传输所有包的包间延时平均值。
每秒下行平均包间延时(avg_down_decay_time):当前时刻(s为单位)每秒下行传输所有包的包间延时平均值。
码率(coderatio):视频播放过程中视频传输的码率。
视频分辨率(videoresolution):根据传输的ts(transportstream,传输流)分片开头固定编码,可以解析出视频的分辨率。
其中,请求时刻可以为本地向目标视频服务器发送获取(get)请求的时刻。上述流量特征均通过解析网络上抓取视频播放器播放目标视频产生的数据包获取,其中,数据包为pcap格式。具体的,数据包中的本地ip地址和服务器ip地址,可以通过get请求的源ip和目的ip来获取。
通过获取多样性的流量特征,用于预测视频卡顿情况,可以提高视频卡顿预测结果的准确性。
流量特征可以从网络直接抓取获得,对获取的流量特征进行处理,形成多个流量特征序列。具体的,将向视频服务器发出的第一个get请求的时间为作为从数据包提取流量特征的开始时间戳。对于每一个时间间隔均采集上述所描述的流量特征数据,用于模型训练。
s120,将所述流量特征序列输入到预先训练的卡顿预测模型中,得到所述目标视频在设定时刻的后一时间间隔内的卡顿预测结果,其中,所述时间段的时长大于等于所述时间间隔的时长。
卡顿预测模型为预先训练的神经网络模型。卡顿预测结果用于判断视频在未来时间间隔内是否会发生卡顿。设定时刻的后一时间间隔是指,在设定时刻以后的时间间隔,通常时间间隔的时长小于等于时间段。时间间隔用于作为评价视频卡顿的单位时间。
选择长时长的时间段内的特征数据,来预测短时长的时间间隔内的卡顿情况,可以提高卡顿预测结果的准确率。
可选的,在将所述流量特征序列输入到预先训练的卡顿预测模型中之前,还包括:获取采样视频至少一个所述时间间隔内的流量特征,以及在至少一个所述时间间隔的下一个时间间隔的卡顿评价结果;根据各所述时间间隔内的卡顿评价结果,以及各所述时间间隔内的流量特征,生成训练样本;根据多个所述训练样本,对神经网络模型进行训练,得到卡顿预测模型。
采样视频可以是各大视频类网站中的视频,具体是实时播放的视频。
时间间隔用于作为样本采集的单位时间,进行流量特征以及卡顿评价结果的数据采集。可以将流量特征和卡顿评价结果进行组合,形成多个训练样本。
时间间隔内的流量特征,用于描述该时间间隔内的网络流量的特征。时间间隔内的卡顿评价结果,用于描述视频在该时间间隔内是否卡顿。
训练样本用于训练神经网络模型,以形成卡顿预测模型。示例性的,神经网络模型可以是循环神经网络模型、卷积神经网络或深度神经网络等。
具体的,生成训练样本的方式具体可以是:将流量特征的时间间隔在前,卡顿评价结果的时间间隔在后,且相邻的一个时间间隔内的流量特征和一个时间间隔内的卡顿评价结果,进行组合形成训练样本。还可以是将时间连续的至少两个流量特征进行组合,形成一个时间段的流量特征,并与时间最后的时间间隔相邻的时间间隔的卡顿评价结果进行组合,形成训练样本。例如,可以是将连续t个时间间隔的流量特征拼接组合,以下一个t 1时间间隔的评价结果作为卡顿标签,形成训练样本。此外,还有其他样本形成方式,对此,本发明实施例不作具体限制。
通过获取多个时间间隔的流量特征以及多个相同时长的时间间隔的卡顿评价结果,进行组合,形成训练样本,并对神经网络模型进行训练,形成卡顿预测模型,实现准确得到卡顿预测结果。
可选的,所述根据各所述时间间隔内的卡顿评价结果,以及各所述时间间隔内的流量特征,生成训练样本,包括:将目标时刻的后一所述时间间隔的卡顿评价结果,以及所述目标时刻的至少一个前一所述时间间隔的流量特征,生成训练样本。
目标时刻用于作为卡顿评价结果和流量特征进行组合的时间点,具体可以指待组合的卡顿评价结果的时间间隔对应的起始时刻,以及待组合的流量特征中时间最后的流量特征的时间间隔对应的结束时刻。
示例性的,时间间隔为1秒,对仅包括一个时间间隔的流量特征组合,若序列长度为1。对于第1秒,即流量特征形成的序列,仅包括第1秒的流量特征,以第2秒的卡顿评价结果作为这条样本的标签。同理对于第2秒,即流量特征形成的序列,仅包括第2秒的流量特征,以第3秒的卡顿评价结果作为这条样本的标签。以此类推形成训练样本。
对于包括连续t(t大于等于2)个时间间隔的流量特征组合包括,视频播放时长大于等于t个时间间隔,可以直接获取连续t个时间间隔的流量特征形成流量特征序列,并将第t个时间间隔后的第t 1个时间间隔对应的卡顿评价结果作为该流量特征序列的卡顿评价结果。如果视频播放时长小于t个时间间隔,可以获取可获取的连续n(n小于t)个时间间隔的流量特征,并将第n 1个到第t个时间间隔的的流量特征补零(padding)形成流量特征序列,同时将第n 1个时间间隔对应的卡顿评价结果作为该流量特征序列的卡顿评价结果。
通过对卡顿评价结果和流量特征的时间间隔对应的时刻进行分析,确定目标时刻,并进行组合,形成训练样本,增加样本的多样性,以及样本的代表性。
可选的,所述神经网络模型为卷积神经网络和循环神经网络融合的神经网络模型。
具体的,卷积神经网络是一种多层的监督学习神经网络,其结构主要包括输入层、卷积层、池化层、全连接层等。输入样本通过卷积核进行卷积操作,提取特征得到特征映射图(featuremap),然后通过池化操作(比如平均池化,最大池化等)进行特征下采样(subsample),最后由全连接层进行输出。
循环神经网络是基于时间的前馈神经网络,循环神经网络的目的是用来处理时间序列数据。在传统的神经网络模型中,从输入层到隐含层再到输出层,层与层之间是全连接的,相隔层之间的节点是无连接的。而在循环神经网路中,网络当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆,并应用于当前输出的计算中,即隐藏层之间的节点是有连接的。并且隐藏层的输入不仅包含输入层的信息,还包括上一时刻隐藏层的信息。
采用卷积神经网络和循环神经网络融合的神经网络模型,可以集合卷积神经网络和循环神经网络的优势,进一步提高卡顿预测的准确性。具体的,卷积神经网络和循环神经网络分别对预处理后流量特征数据进行特征向量提取工作,形成相同形状(shape)的特征向量,进行特征融合,再经过两层全连接,使用分类器(softmax函数)进行二分类(其中0为不卡顿,1为卡顿)预测,输出最终结果。
在一个具体的例子中,如图1b所示,卡顿预测模型的结构包括循环神经网络特征提取层、卷积神经网络特征提取层、特征融合、全连接网络和softmax分类器。其中,循环神经网络特征提取层和卷积神经网络特征提取层均从输入数据中提取特征。循环神经网络特征提取层和卷积神经网络特征提取层提取的特征为相同形状的特征向量,并进行融合,输入到全连接层(如两层)和softmax分类器得到分类后的结果,即输出结果。
示例性的,所述循环神经网络(recurrentneuralnetwork,rnn)是一类以时间序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursiveneuralnetwork),它具有记忆性、参数共享的特点,但是rnn会出现梯度消失的问题。采用长短期记忆网络(lstm)可以选择部分信息被保留,部分信息被遗忘。其中,由于视频播放过程化中产生的流量特征是一个时序序列,下一时间视频是否卡顿与上一时间的流量数据存在关联关系。由此,可选用循环神经网络解决卡顿预测的问题。
如图1c所示,长短期记忆网络网络结构图包括两层lstm,同时两层lstm之间设置有dropout层。输入数据通过经过两层lstm,实际上是根据历史的流量特征(kb/s,packets/s等)和当前的流量特征(kb/s,packets/s等),形成特征向量。其中,dropout层用于防止模型过拟合,提高模型的泛化性能。
如图1d所示,卷积神经网络结构包括卷积层和最大池化层。卷积神经网络将多个流量特征序列拼接成矩阵,通过卷积核的卷积操作来提取历史的流量特征(kb/s,packets/s等)和当前的流量特征(kb/s,packets/s等)中的特征0、特征1、特征2、特征3……,最后通过最大池化层进行降维,形成第二特征。
将长短期记忆网络网络得到的第一特征和卷积神经网络得到的第二特征进行特征融合,形成融合特征向量,可以基于如下公式计算:
concat_features=concat(features_1,features_2)
其中,concat_features为融合特征向量,features_1为第一特征,features_2为第二特征。
进而如图1b所示,融合后的特征向量经过两层全连接网络,重新组合成完整的特征图,最终经过softmax分类器的输出结果与最终预测的卡顿预测结果(例如0:不卡顿,1:卡顿)相对应,输出结果实际描述不同类别出现的概率,将出现最大概率对应的类别作为卡顿预测类别。使用交叉熵计算输出结果与真实结果之间的损失,并通过adam优化器最小化损失函数,同时对整个网络模型中的参数进行优化,得到最终的预测模型。
在lstm的基础上,通过融合卷积神经网络,增加提取特征的代表性,提高特征提取的精确性,从而提高卡顿预测模型的预测准确率。
本发明实施例通过获取视频在设定时刻之前一段时间内的流量特征,并形成流量特征序列,输入到预先训练的卡顿预测模型中,可以得到视频在设定时刻之后的一段时间内的卡顿预测结果,解决了现有技术中无法预测视频卡顿的问题,实现预测未来时间段内的视频卡顿,提高了视频卡顿预测的实时性。
实施例二
图2为本发明实施例二中的一种视频卡顿预测方法的流程图,本实施例以上述实施例为基础进行具体化。本实施例的方法具体包括:
s210,获取按照时间间隔对采样视频进行截取形成的图像帧。
本发明实施例中的时间间隔、视频、流量特征、卡顿评价结果、目标时刻、训练样本、神经网络模型、卡顿预测模型、流量特征序列、当前系统时刻、卡顿预测结果和时间段可以参考前述实施例的描述。
实际上,视频包括多个图像连续快速切换的过程。图像帧是指视频在不同时刻对应的图像。图像帧随时间的变化情况用于评价视频是否卡顿。
图像帧可以通过对实时播放的视频进行截图获取。通常,视频播放器所在的页面还包括其他与视频无关的内容,可以仅截取播放视频的区域的图像,作为图像帧。
为了减少图像帧的处理数据量,可以按照预设时间间隔,周期性对采样视频进行截图。
s220,对每两个相邻图像帧进行比较,确定所述两个相邻图像帧的获取时刻关联的时间间隔匹配的卡顿评价结果。
获取时刻是指图像帧在采样视频播放过程中的截图时刻。示例性的,获取时刻是图像帧在采样视频中的时间位置。
两个相邻图像帧是指,获取时刻相邻的图像帧。
对每两个相邻图像帧进行比较,实际是判断两个相邻图像帧是否相同,或者是否满足相似条件。如果两个相邻图像帧相同或者非常相似,则表明这两个相邻图像帧没有发生变化,也即采样视频在播放至这两个相邻图像帧的获取时刻的位置处,采样视频发生了卡顿。
两个相邻图像帧的获取时刻关联的时间间隔匹配的卡顿评价结果,表明采样视频在播放至这两个相邻图像帧的获取时刻的位置处是否发生了卡顿。卡顿评价结果包括卡顿和不卡顿。
两个相邻图像帧的获取时刻关联的时间间隔用于确定采样视频在这个时间间隔播放是否发生了卡顿。如果相邻图像帧的获取时刻关联的时间间隔匹配的卡顿评价结果为卡顿,则表明采样视频在这两个图像帧的获取时刻关联的时间间隔内发生了卡顿。如果相邻图像帧的获取时刻关联的时间间隔匹配的卡顿评价结果为不卡顿,则表明采样视频在这两个图像帧的获取时刻关联的时间间隔内流畅播放。
通过记录采样视频中各图像帧的获取时刻,每两个相邻图像帧的获取时刻之间的时长为时间间隔,如果这两个相邻图像帧保持一致,则标记这两个相邻图像帧的获取时刻关联的时间间隔匹配的卡顿评价结果为卡顿,否则标记为不卡顿。
s230,获取所述采样视频的抓包数据,并进行解析,得到流量特征,所述抓包数据包括pcap包数据。
抓包数据用于获取流量特征。示例性的,抓包数据为pcap包。
可以从网络上直接抓取视频网站的视频播放过程中产生的pcap数据包,每个pcap包对应一个视频样本,解析pcap包,得到流量特征。
实际上,用户在视频播放页面中使用视频播放器播放视频时候,产生的原始流量包括视频资源,以及其他内容,其他内容可能是与视频资源无关的内容。此时,需要过滤掉与视频资源无关的一些数据,包括广告或图片等等。可以通过分析请求的链接数据来实现过滤除视频资源之外的内容。示例性的,针对图片,pcap包中包括带有图片格式的链接,而视频资源pcap包对应的是ts分片的链接,进而可以将视频资源的流量数据过滤出来。
可选的,所述流量特征包括下述至少一项:每秒字节数、上行每秒字节数、下行每秒字节数、每秒包数、上行每秒数据包数、下行每秒数据包数、每秒抖动字节数、上行每秒抖动字节数、下行每秒抖动字节数、每秒抖动包数、上行每秒抖动包数、下行每秒抖动包数、每秒最大字节数、上行每秒最大字节数、下行每秒最大字节数、每秒最大包数、上行每秒最大包数、下行每秒最大包数、每秒最小包数、上行每秒最小包数、下行每秒最小包数、每秒包间延时总和、每秒包间平均延时、每秒上行包间延时总和、每秒上行平均包间延时、每秒下行包间延时总和、每秒下行平均包间延时、码率和视频分辨率。
流量特征有多个,可以从中任选至少一个作为待形成流量特征序列的流量特征。
s240,将所述抓包数据中首个获取请求的获取视频数据的时刻关联的时间间隔作为所述流量特征匹配的时间间隔。
抓包数据的请求时刻可以是指发出获取流量特征的请求方和响应方的地址的请求的时刻。具体的,通过判断每两个相邻图像帧是否相同来确定在这两个两个相邻图像帧之间的时间间隔内,视频是否卡顿,作为卡顿评价结果。相同则为卡顿,不相同则为不卡顿。
通常在流量特征中需要确定请求方和响应方(服务器)。具体的,可以通过get请求来获取请求方ip和响应方ip,进而将请求方ip向响应方ip传输的数据定义为上行数据,响应方ip向请求方ip传输的数据定义为下行数据。
可以理解的是,流量特征实际是表征某个时间段内的网络质量。例如,上行每秒字节数,表明从某一时刻开始,经过一秒,请求方ip向响应方ip发送的数据量。具体的,可以将发出get的请求时刻作为流量特征的起始时刻,并根据起始时刻以及时间间隔,确定结束时刻,作为流量特征的结束时刻。
s250,将目标时刻的后一所述时间间隔的卡顿评价结果,以及所述目标时刻的至少一个前一所述时间间隔的流量特征,生成训练样本。
具体的,将目标时刻之前的连续预设数量的流量特征,与目标时刻之后的一个卡顿评价结果进行组合,形成训练样本。其中,目标时刻为连续预设数量的流量特征中时间最后的流量特征匹配的时间间隔对应的结束时刻,同时,目标时刻为卡顿评价结果匹配的时间间隔对应的起始时刻。对于连续t个时间间隔的流量特征拼接组合包括训练样本为连续t个时间间隔的流量特征和卡顿评价结果形成的流量特征序列。
在一个具体的例子中,比如规定t为10,其序列长度为10,在10秒以内,需要形成包括前10秒时间间隔的流量特征序列,如果视频当前仅播放到第1秒,则获取前1秒(对应的时间间隔为0秒-1秒)的流量特征数据,同时后面9秒(对应的时间间隔为2秒-10秒)的流量特征数据用0进行拼接填充并记为seq_len=1,以第2秒的卡顿评价结果作为该流量特征序列的卡顿评价结果;如果视频当前仅播放到第2秒,则获取前2秒(对应的时间间隔为0秒-2秒)的流量特征数据,同时后面8秒(对应的时间间隔为3秒-10秒)的流量特征数据用0进行拼接填充并记为seq_len=2,以第3秒的卡顿评价结果作为流量特征组合的卡顿评价结果;以此类推,直到视频播放到第10秒以后,以当前时刻相邻的前10秒(如第12秒,直接将对应的时间间隔为3秒-12秒的的流量特征数据)的流量特征数据进行拼接并记为seq_len=10,以下一秒对应的时间间隔内的卡顿评价结果作为流量特征组合的卡顿评价结果。以此类推,构建训练样本。
也即任意时刻t前的连续10秒的流量特征形成流量特征序列,不足10秒的用0填充补齐,作为输入x,用对应的任意时刻t 1秒的卡顿预测结果作为输出y,记录seq_len。实际上,卡顿预测结果可以采用label(0或1标识分类结果,例如,0为不卡顿,1为卡顿)这样处理的好处是每一条样本数据彼此独立,训练互不影响。使用数据时应进行归一化处理,由于采集的数据卡顿与不卡顿的比例不均衡,所以还需要对样本进行采样均衡操作。此外,采用二分类需要对label进行onehot编码处理。
具体的,实际上,在训练模型之前,需要获取流量特征和匹配的卡顿评价结果,并进行预处理,如补零处理、归一化处理和样本均衡处理等,形成训练样本,提高训练样本的代表性,减少冗余数据。
示例性的,可以使用python脚本程序将流量特征与卡顿评价结果按时间间隔一一对应,其中卡顿评价结果为卡顿标记为1,不卡顿标记为0,并保存到本地。
s260,根据多个所述训练样本,对神经网络模型进行训练,得到卡顿预测模型,所述神经网络模型为卷积神经网络和循环神经网络融合的神经网络模型。
s270,获取目标视频在当前系统时刻的前一时间段内的流量特征,形成流量特征序列,所述目标视频为实时播放的视频。
同前述,训练样本中流量特征序列的处理方式,在后期进行实时播放视频的卡顿预测时,流量特征序列的处理方式要保持一致。
需要说明的是,训练样本对应的流量特征序列中包括卡顿评价结果。而实时播放的视频的流量特征形成的待预测的流量特征序列中不包括卡顿评价结果。
流量特征形成的待预测的流量特征序列的过程中同样包括数据预处理,如前述padding处理、标准归一化处理和样本均衡处理等。
s280,将所述流量特征序列输入到预先训练的卡顿预测模型中,得到所述实时播放的视频在所示当前系统时刻的后一时间间隔内的卡顿预测结果,其中,所述时间段的时长大于等于所述时间间隔的时长。
本发明实施例通过获取网络上采样视频在播放时的抓包数据,以及采样视频在播放过程中的卡顿情况,形成训练样本,对融合神经网络模型进行训练,得到卡顿预测模型,并根据实时播放的目标视频的流量特征,对目标视频在当前系统时刻之后的时间间隔内的卡顿情况进行预测,实现预测未来时间段内的视频卡顿,提高了视频卡顿预测的实时性。
实施例三
图3为本发明实施例三中的一种视频卡顿预测装置的示意图。实施例三是实现本发明上述实施例提供的视频卡顿预测方法的相应装置,该装置可采用软件和/或硬件的方式实现,并一般可集成计算机设备中。
相应的,本实施例的装置可以包括:
流量特征序列生成模块310,用于获取目标视频在设定时刻的前一时间段内的流量特征,形成流量特征序列;
视频卡顿预测模块320,用于将所述流量特征序列输入到预先训练的卡顿预测模型中,得到所述目标视频在设定时刻的后一时间间隔内的卡顿预测结果,其中,所述时间段的时长大于等于所述时间间隔的时长。
本发明实施例通过获取视频在设定时刻之前一段时间内的流量特征,并形成流量特征序列,输入到预先训练的卡顿预测模型中,可以得到视频在设定时刻之后的一段时间内的卡顿预测结果,解决了现有技术中无法预测视频卡顿的问题,实现预测未来时间段内的视频卡顿,提高了视频卡顿预测的实时性。
进一步的,所述视频卡顿预测装置,还包括:模型训练模块,用于在将所述流量特征序列输入到预先训练的卡顿预测模型中之前,获取采样视频至少一个所述时间间隔内的流量特征,以及在至少一个所述时间间隔的下一个时间间隔的卡顿评价结果;根据各所述时间间隔内的卡顿评价结果,以及各所述时间间隔内的流量特征,生成训练样本;根据多个所述训练样本,对神经网络模型进行训练,得到卡顿预测模型。
进一步的,所述模型训练模块,包括:训练样本生成单元,用于将目标时刻的后一所述时间间隔的卡顿评价结果,以及所述目标时刻的至少一个前一所述时间间隔的流量特征,生成训练样本。
进一步的,所述模型训练模块,包括:特征获取单元,用于获取按照时间间隔对采样视频进行截取形成的图像帧;对每两个相邻图像帧进行比较,确定所述两个相邻图像帧的获取时刻关联的时间间隔匹配的卡顿评价结果;获取所述采样视频的抓包数据,并进行解析,得到流量特征,所述抓包数据包括pcap包数据;将所述抓包数据中首个获取请求关联的获取视频数据的时刻关联的时间间隔作为所述流量特征匹配的时间间隔。
进一步的,所述神经网络模型为卷积神经网络和循环神经网络融合的神经网络模型。
进一步的,所述目标视频为实时播放的视频,所述设定时刻为当前系统时刻。
进一步的,所述流量特征包括下述至少一项:每秒字节数、上行每秒字节数、下行每秒字节数、每秒数据包数、上行每秒数据包数、下行每秒数据包数、秒抖动字节数、上行每秒抖动字节数、下行每秒抖动字节数、每秒抖动包数、上行每秒抖动包数、下行每秒抖动包数、每秒最大字节数、上行每秒最大字节数、下行每秒最大字节数、每秒最大包数、上行每秒最大包数、下行每秒最大包数、每秒最小包数、上行每秒最小包数、下行每秒最小包数、每秒包间延时总和、每秒包间平均延时、每秒上行包间延时总和、每秒上行平均包间延时、每秒下行包间延时总和、每秒下行平均包间延时、码率和视频分辨率。
上述装置可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
实施例四
图4为本发明实施例四提供的一种计算机设备的结构示意图。图4示出了适于用来实现本发明实施方式的示例性计算机设备12的框图。图4显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。计算机设备12可以是挂接在总线上的设备。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(industrystandardarchitecture,isa)总线,微通道体系结构(microchannelarchitecture,mca)总线,增强型isa总线、视频电子标准协会(videoelectronicsstandardsassociation,vesa)局域总线以及外围组件互连(peripheralcomponentinterconnect,pci)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如紧凑磁盘只读存储器(compactdiscread-onlymemory,cd-rom),数字视盘(digitalvideodisc-readonlymemory,dvd-rom)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(input/output,i/o)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(localareanetwork,lan),广域网(wideareanetwork,wan)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图4中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列(redundantarraysofinexpensivedisks,raid)系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明任意实施例所提供的方法。
实施例五
本发明实施例五提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请所有发明实施例提供的视频卡顿预测方法:
也即,该程序被处理器执行时实现:获取目标视频在设定时刻的前一时间段内的流量特征,形成流量特征序列;将所述流量特征序列输入到预先训练的卡顿预测模型中,得到所述目标视频在设定时刻的后一时间间隔内的卡顿预测结果,其中,所述时间段的时长大于等于所述时间间隔的时长。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、ram、只读存储器(readonlymemory,rom)、可擦式可编程只读存储器(erasableprogrammablereadonlymemory,eprom)、闪存、光纤、便携式cd-rom、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、无线电频率(radiofrequency,rf)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c ,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括lan或wan——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
1.一种视频卡顿预测方法,其特征在于,包括:
获取目标视频在设定时刻的前一时间段内的流量特征,形成流量特征序列;
将所述流量特征序列输入到预先训练的卡顿预测模型中,得到所述目标视频在设定时刻的后一时间间隔内的卡顿预测结果,其中,所述时间段的时长大于等于所述时间间隔的时长。
2.根据权利要求1所述的方法,其特征在于,在将所述流量特征序列输入到预先训练的卡顿预测模型中之前,还包括:
获取采样视频至少一个所述时间间隔内的流量特征,以及在至少一个所述时间间隔的下一个时间间隔的卡顿评价结果;
根据各所述时间间隔内的卡顿评价结果,以及各所述时间间隔内的流量特征,生成训练样本;
根据多个所述训练样本,对神经网络模型进行训练,得到卡顿预测模型。
3.根据权利要求2所述的方法,其特征在于,所述根据各所述时间间隔内的卡顿评价结果,以及各所述时间间隔内的流量特征,生成训练样本,包括:
将目标时刻的后一所述时间间隔的卡顿评价结果,以及所述目标时刻的至少一个前一所述时间间隔的流量特征,生成训练样本。
4.根据权利要求2所述的方法,其特征在于,所述获取采样视频至少一个所述时间间隔内的流量特征,以及在至少一个所述时间间隔的下一个时间间隔的卡顿评价结果,包括:
获取按照时间间隔对采样视频进行截取形成的图像帧;
对每两个相邻图像帧进行比较,确定所述两个相邻图像帧的获取时刻关联的时间间隔匹配的卡顿评价结果;
获取所述采样视频的抓包数据,并进行解析,得到流量特征,所述抓包数据包括pcap包数据;
将所述抓包数据中首个获取请求的获取视频数据的时刻关联的时间间隔作为所述流量特征匹配的时间间隔。
5.根据权利要求2所述的方法,其特征在于,所述神经网络模型为卷积神经网络和循环神经网络融合的神经网络模型。
6.根据权利要求1所述的方法,其特征在于,所述目标视频为实时播放的视频,所述设定时刻为当前系统时刻。
7.根据权利要求1所述的方法,其特征在于,所述流量特征包括下述至少一项:每秒字节数、上行每秒字节数、下行每秒字节数、每秒数据包数、上行每秒数据包数、下行每秒数据包数、每秒抖动字节数、上行每秒抖动字节数、下行每秒抖动字节数、每秒抖动包数、上行每秒抖动包数、下行每秒抖动包数、每秒最大字节数、上行每秒最大字节数、下行每秒最大字节数、每秒最大包数、上行每秒最大包数、下行每秒最大包数、每秒最小包数、上行每秒最小包数、下行每秒最小包数、每秒包间延时总和、每秒包间平均延时、每秒上行包间延时总和、每秒上行平均包间延时、每秒下行包间延时总和、每秒下行平均包间延时、码率和视频分辨率。
8.一种视频卡顿预测装置,其特征在于,包括:
流量特征序列生成模块,用于获取目标视频在设定时刻的前一时间段内的流量特征,形成流量特征序列;
视频卡顿预测模块,用于将所述流量特征序列输入到预先训练的卡顿预测模型中,得到所述目标视频在设定时刻的后一时间间隔内的卡顿预测结果,其中,所述时间段的时长大于等于所述时间间隔的时长。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7中任一所述的视频卡顿预测方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的视频卡顿预测方法。
技术总结