本发明涉及hls视频领域,尤其涉及基于网络抓包来评估hls视频播放质量的方法和相应的评估系统。
背景技术:
hls(httplivestreaming)是一个近几年开始流行的基于http的新型流媒体网络传输方法。它将视频大文件切割成固定大小的小块视频文件(通常5-10秒的视频小分片),然后用m3u8索引表进行管理,供客户端设备以http方式按顺序拉取并播放,多用于直播或点播场景。
由于客户端下载到的视频都是5-10秒的完整数据,因此视频的流畅性很好。客户端支持简单,只需要支持http协议,按顺序下载媒体片段即可。而且,其网络兼容性好,http数据包可以方便地通过防火墙或者代理服务器。因此,具有较好的用户体验。但网络时延会对它的传输造成一定影响,这就需要对hls视频播放质量进行实时的准确评估。
由于hls传输方式与基于传统的rtp(real-timetransportprotocol实时传输协议)的实时流媒体有较大的差异,传统的mdidf\lr(丢包、抖动)等指标无法用于评估hls的播放质量。这是由于传统方式是基于tcp协议进行传输,网络中发生的丢包会由tcp的重传机制补回,丢包率这一指标不再有意义也难以计算。而一些传统的tcp指标,例如tcp重传率、tcp重复率等,虽然能一定程度反应网络的好坏,但很难直接与实际的hls视频观看体验关联,在实际应用中作用不大。另外,由于tcp的机制,通常丢包会被重传机制补回,因此hls视频播放过程中,几乎不会有马赛克现象,hls播放质量下降通常表现为卡顿。
虽然通过获取解码器、播放器的报错信息等传统手段也可以得知hls播放卡顿的情况,但此种方式需要解码器/播放器厂商配合提供接口,需要一定的适配,在实际应用中操作难度大。
现有技术中通过计算单分片下载时长dt及单分片播放时长pt,比较dt与pt的差值,并结合tcp建立时间、tcp重传率、响应时延等,来判断hls播放质量并定位问题。
附图1是一种基于现有技术的基于网络抓包和深度包解析来评估hls播放质量的方法示意。图中示出了1-5五个分片,上面一行为各分片的下载时长示意,下面一行为各分片的可播放时长示意。
图1的方法首先包括单分片比较,即,对每个分片实际下载时长和该分片可播放时长比较,如果下载时长大于可播放时长,则称这块分片为“坏”的分片,例如图1中的分片5就可以被认为是“坏”的分片。然而,单个分片的下载超时并不一定会造成卡顿和观看体验下降,比如图1中可见,分片5的下载完成时间是领先于其播放时间的,设想其后分片都具有较快的下载时长,即下载时长小于可播放时长,那么用户可以感觉到的卡顿实际并不会出现,换言之,“坏”分片5并没有带来任何可以察觉的后果。只有当其后超时的“坏”分片占大多数,才会造成卡顿和用户体验下降。
可见,图1的单分片比较方法会因那些并不会造成整体影响的单个“坏”分片而误判卡顿的出现。
图1的方法还可进一步考虑分片下载间隔,即,比较上一个分片下载完成时间和下一个分片下载开始时间的差值,这个差值称为分片下载间隔,如图1中的双箭头所示。如分片下载间隔过长,也被评估为会造成卡顿问题。
然而,由于客户端设备会根据自身缓存空/满情况调节下载请求间隔,因此分片下载间隔这个量化值在用于播放质量评估、卡顿判断方面也是有问题的,分片下载间隔变长到什么程度会影响播放是难以评估的。
总之,现亟需一种简便适用hls的质量评估方法,检查视频播放的卡顿情况,用于有效评估hls视频播放质量。
技术实现要素:
提供本发明内容以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征;也不旨在用于确定或限制所要求保护的主题的范围。
本发明提出一种基于网络抓包的方法,对hls视频播放质量进行评估。该方法包括:获得已下载完成的当前分片的可播放时长;计算至当前分片为止已下载完成的前序各分片连同当前分片的累计可播放时长;以及将累计可播放时长与当前已播放时长进行比较,求当前已播放时长和累计可播放时长的比值,在所述当前已播放时长小于所述累计可播放时长时,判断播放质量良好,并评分为等于阈值,而在所述当前已播放时长大于所述累计可播放时长时,判断发生过播放质量劣化,并评分为阈值除以所述比值。
所述评估hls视频播放质量的方法还包括,实时针对下载的每个分片进行评分,并对所得的各评分值求平均,若评分平均值小于阈值,则判断发生过播放质量劣化,若评分平均值等于阈值,则判断播放质量良好。
所述累计可播放时长可进一步包括前一个采样周期的可播放时长余量。
所述评估hls视频播放质量的方法还包括,针对本采样周期中仅完成部分下载的当前分片,计算该当前分片的已下载部分的可播放时长,以及计算本采样周期的可播放时长余量。
针对本采样周期中仅完成部分下载的当前分片,计算该当前分片的已下载部分的可播放时长可采取比较该当前分片中已完成下载的那部分的文件大小和该分片总文件的大小,也可采取比较该当前分片文件第一个时间戳和该当前分片已下载部分的最后一个时间戳的差值。
本发明提出一种评估hls视频播放质量的系统,包括:处理设备;以及存储器,所述存储器存储指令,使所述处理设备执行上述评估hls视频播放质量的方法。
附图说明
各附图解说了本发明的实现。本发明方案的特征和效果可通过参考以下结合附图的具体实施方式的描述来更容易地理解。各附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。
图1是一种基于现有技术的基于网络抓包和深度包解析来评估hls视频播放质量的方法的示意图。
图2是根据本发明的一个实施例的基于网络抓包和深度包解析来评估hls视频播放质量的方法的示意图。
图3是根据图2实施例的方法的进一步的示意图。
图4是根据图2实施例的方法的流程图。
图5是根据本发明的另一个实施例的基于网络抓包和深度包解析来评估hls视频播放质量的方法的示意图。
图6是根据图5实施例的方法的流程图。
图7是实现本发明各实施例的评估hls视频播放质量的系统的计算环境示意图。
具体实施方式
以下将通过参考附图中示出的具体实施例来对本发明进行更具体描述。通过阅读下文具体实施方式的详细描述,本发明的各种优点和益处对于本领域普通技术人员将变得清楚明了。然而应当理解,可以以各种形式实现本发明而不应被这里阐述的各实施方式所限制。提供以下实施方式是为了能够更透彻地理解本发明。除非另有说明,本申请使用的技术术语或者科学术语应当为本申请所属领域技术人员所理解的通常意义。
图2是根据本发明的一个实施例的基于网络抓包和深度包解析来评估hls视频播放质量的方法的示意图。图中也示出了1-5五个分片,同样,上面一行为各分片的下载时长示意,下面一行为各分片的可播放时长示意,而最下面从左到右的宽箭头是已播放时长示意。
根据该实施例,每个分片下载完成时,解析该分片,获得该分片的可播放时长,从中计算到目前为止累积的分片可播放总时长,将可播放总时长与当前已播放时长比较,如果可播放总时长大于已播放时长,则认为播放流畅,没有卡顿现象出现。
相比于现有技术的图1的单分片比较方法,本发明的该实施例的方法考察累积的可播放时长和已播放时长,可直观的反映观看体验,更好地和实际情况吻合。
举例而言,针对图3中分片7的情况,其单个分片的下载时长超过了该分片的可播放时长,如果按照图1示意的现有技术单分片比较方法,会判分片7为“坏”分片,进而误判卡顿会出现,这就不符合实际情况了。但根据本发明的方法则判断到分片7为止的累积的可播放时长大于实际已播放时长,因此整个片子仍能流畅播放,进而判断卡顿不会出现,这和实际情况是吻合的。
以下结合图4说明本实施例的累积时长判断方法的具体步骤:
方法在步骤401开始;
在步骤402完成第n个分片下载;
在步骤403解析分片,获得该第n个分片的可播放时长tn;
在步骤404计算已完成下载的前n个分片总的累计可播放时长t为:
在步骤405,比较当前己播放时长t与前n个分片总的累计可播放时长t,r=t/t;
随后在步骤406做出判断,假设r<1,则说明己播放时长小于可播放时长,播放流畅,流程前进至步骤4071,给予阈值评分m=5.0,假设r≧1,则说明己播放时长小于等于可播放时长,播放过程中可能发生过卡顿,流程前进至步骤4072,计算评分m=5.0/r;
在步骤408,判断是否所有分片均已下载完成,若否,则返回步骤402,在每个分片下载完成时,都重复以上步骤以计算评分m;
若所有分片均已下载完成,则前进到步骤409,在步骤409,对所有的m计算平均值:
如果最后得到的
方法在410结束。
上述实施例的累积时长判断方法是在每个分片下载完成时就进行一次判断,最后在全部分片下载完后进行最终的判断。
然而,对于需要实时进行评分的场景,通常会有一个固定的采样周期,在该周期内进行各个指标的评分。例如采样周期为5分钟,那么就有可能出现采样周期结束时某个分片只下载了一部分这样的情况,如图5所示,在采样周期2中前1-n个分片已经被完全下载,但后续分片未完全下载。此时,上述实施例的方法就不完全适用。
下文中,本发明的另一个实施例描述在采样周期结束/开始的时刻存在未下载完全的分片的情况下进一步的处理方式。
以下结合图6和图5对该处理过程进行描述。
方法在步骤601开始;
首先,在步骤602针对已经完成了采样周期1,记录整个周期内的下载的所有分片的可播放时长之和ta1,以及到周期结束时的本周期内的己播放时长tb1,求截止采样周期1的可播放时长余量tleft1=ta1-tb1的值,该值代表截止采样周期1的可播放时长余量,留供下一采样周期使用。
接着,步骤在603,针对采样周期2中未下载完全的那个分片计算其已下载部分的可播放时长。这里有两种方法。
在步骤6031,针对未下载完全的分片,计算该分片的已下载部分的可播放时长,可以通过该分片中已完成下载的那部分的文件大小s1和该分片总文件的大小s2之比来进行计算。假设该分片完整播放的可播放总时长为t2(这通常是已知的),那么该分片已下载的部分的可播放时长t1可以以如下公式来进行计算:t1=s1×t2/s2。
在又一个实施例中,作为替换方法,如在步骤6032,计算该未下载完全的分片的已下载部分的可播放时长,可以通过时间戳来计算。对ts(transportstream)包解封装后,比较该分片文件第一个pts(时间戳)和该分片已下载部分的最后一个pts的差值,计算得到该分片已下载的部分的可播放时长t1。
接着,在步骤604,在采样周期2内,假设第一个分片可播放时长为t1,最后一个下载完全的分片,即第n个分片可播放时长为tn,则至tn为止的累计可播放时长为
假设第n个分片为止的在采样周期2内的己播放时长为t,在步骤605,比较当前采样周期2己播放时长t与当前采样周期2前n个分片总的累计可播放时长t,r=t/t,在步骤606做出判断,如r<1,在步骤6071,第n个分片的评分为阈值评分m=5.0,如r>=1,在步骤6072,第n个分片的评分m=5.0/r。
在步骤608,在采样周期2内对m求平均,代表本周期内的评分,如
在步骤609计算截止采样周期2的可播放时长余量tleft2=ta2-tb2+tleft1的值,供后一周期使用,其中ta2为整个采样周期2内的已完成下载的所有分片的可播放时长连同采样周期2末未下载完成的那个分片的已下载部分的可播放时长,即ta2=t+t1,其中tb2为到采样周期2结束时的本采样周期内的己播放时长tb2,tleft1是前述步骤602中根据公式tleft1=ta1-tb1求得的截止采样周期1的可播放时长余量。
在步骤610,判断是否所有采样周期均已完成,若是,则方法在步骤611结束,否则就返回步骤603,重复以上过程。
图7示出了其中可实现所描述的发明的合适的计算环境的一般化示例。示例计算机环境100可以是渲染和显示数字媒体的客户端设备(例如,机顶盒等)或者是和客户端设备相连的服务器或计算机工作站(例如,pc、膝上型计算机、平板计算机、移动设备等)。
参考图7,计算机环境100包括一个或多个处理设备110、115以及存储器120、125。处理设备110、115执行计算机可执行指令,用于获得已下载完成的当前分片的可播放时长,计算至所述当前分片为止已下载完成的前序各分片连同当前分片的累计可播放时长,以及将所述累计可播放时长与当前已播放时长进行比较,在所述当前已播放时长大于所述累计可播放时长时,判断发生过播放质量劣化。处理设备可以是通用cpu、gpu、asic中的处理器、fpga、或任何其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。例如,图7示出处理设备110可以是cpu,而处理设备115可以是gpu或协处理单元。存储器120、125是有形存储器,可以是处理单元可访问的易失性存储器(例如,寄存器、高速缓存、ram)、非易失性存储器(例如,rom、eeprom、闪存等)或这两者的某一组合。存储器120、125以适合供由处理设备执行的计算机可执行指令的形式来储存实现本发明的软件180,以及获得的中间数据和最终数据。
计算机环境100可具有附加的特征。例如,计算机环境100包括存储140、一个或多个输入设备150、一个或多个输出设备160以及一个或多个通信连接170。诸如总线、控制器或网络之类的互连机制(未示出)将计算机环境100的各组件互连。通常,操作系统软件(未示出)为在计算机环境100中执行的其它软件提供操作环境,并协调计算机环境100的各组件的活动。
存储140为有形存储,可以是可移动或不可移动的,包括磁盘、磁带或磁带盒、诸如cd-rom、dvd之类的光学媒体或可用于储存信息并可在计算机环境100内访问的任何其他介质。存储140储存用于实现本文中所描述的发明的软件180。
输入设备150可以是触摸输入设备(诸如键盘、鼠标、笔或跟踪球)、语音输入设备、扫描设备、或向计算机环境100提供输入的另一设备。对于视频,输入设备150可以是相机、视频卡、tv调谐卡、屏幕捕捉模块或接受模拟或数字形式的视频输入的类似设备、或将视频输入读到计算机环境100中的cd-rom或cd-rw。输出设备160包括显示设备,用于输出判断结果。输出设备还可以包括打印机、扬声器、cd刻录机或提供来自计算机环境100的输出的其他设备。
通信连接170使得能够通过通信介质与另一计算实体进行通信。例如,通信连接170可以将计算机环境100连接到互联网并提供本文所描述的功能。通信介质传达诸如计算机可执行指令、音频或视频输入或输出、图像化数据、或调制数据信号中的其他数据之类的信息。作为示例而非限制,通信介质可以使用电的、光学的、rf或其他载体。
本发明可在计算机可执行指令(诸如包括在程序模块中的那些)的一般上下文中描述,在目标现实或虚拟处理器上在计算机系统中执行。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。如各实施例中所期望的,这些程序模块的功能性可以被组合,或者在这些程序模块之间拆分。针对各程序模块的计算机可执行指令可以在本地或分布式计算机系统中执行。
结语
hls是一种较为健壮的媒体传输协议,正常播放的过程中单个分片的下载超时并不一定会造成用户可感知的观看体验下降。本发明通过针对累积的可播放时长和实际播放时长进行评分,可直接反映用户的观看体验,准确性更高,避免现有技术的单片比较造成的误判。而且,本发明无需解码器/播放器厂商配合提供接口,不需要特别的适配,操作简单。