对于大部分海量视频平台和需要持续交付视频服务的平台而言,采取视频自动化测试是唯一可行的选择。在WebRTCon 2018期间,英特尔Intel® Collaboration Suite for WebRTC (面向WebRTC 的英特尔® 协同通信开发套件)客户端测试架构负责人张琰彬接受了LiveVideoStack的采访,详细阐述了视频视频质量自动化测试的难点及应对方案。
策划 / LiveVideoStack
LiveVideoStack:琰彬你好,音视频服务交付涉及很多环节,从音视频采集、处理、传输、服务器处理,再通过网络分发出去并在客户端上显示,这么长的链条如何自动化的分析和定位问题呢?难点分别有哪些?
张琰彬:我们要自动化首先要保证的就是测试结果的可重复性,从第一个点音视频采集来说,我们采取了固定视频代替随机视频的方式来确保视频的固定,这个中间又出现了第二个问题就是怎么定位视频帧,我们需要定位发送和接收视频帧才能计算出精确的延时。此外,比如说现在通常用到的有参考评估相关视频质量标准PSNR、SSIM、VMAF都依赖发送接收视频序列定位等问题。
问题中说的处理传输和服务器处理,分发到客户端这个几个点,这其实是一个完整的音视频传输通道的实现,我们做评估系统的话一定是建立在现有的音视频传输通道上的,所以我们如何建立现有传输通道的兼容模块,如何兼容现有传输通道但是又不能影响现有通道的性能是我们第三个要考虑的问题。
第四个问题是网络模拟,因为我们通常说的各种视频问题,可能出现问题的有几个地方,一是发送方的处理,视频采集和有损编码,二是服务器处理模块,特别是视频会议模式,服务器可能会对视频做编解码、转码、混流等。三是发送接收方中间的网络状态,我们需要建立一个精确的网络模拟模型,包括各种网络参数,比如丢包和各种丢包方式,比如说随机丢包,固定丢包,突发丢包等等。除此之外还有延时、抖动等都有各种精细分类,再就是如何精确的复现客户实际网络,比如不同时段的4G网络状态。
上述这些问题解决之后,我们还需要解决的难点和重点就是视频自动评估,评估标准和评估方法的选择,我们需要选择哪些评估方法,有视频帧相关的,有参考评估,无参考评估,还有描述当前场景的网络因子,比如说端对端延时、实际传输带宽、视频抖动等,以便于提供足够多的场景复现和结果量化数据。
LiveVideoStack:视频质量评估分主观测试和客观测试,实现持续的自动化测试恐怕只能采用客观测试的方法吧?
张琰彬:是的,要做全自动化,就意味着任何数据必须具备可重复性、量化的特点,这里我们可以先讲解一下主观测试和客观测试。关于视频质量评估本身,业界通常将评估方法分为两种类别,一个叫做主观评估,一种叫做客观评估。
主观评估,顾名思义就是人参与的人工评估,视频主观质量评价就是选择一批非专家类型的受测者,让他们参加一些培训,至少是阅读一些评估规范和标准比如说ITU-R BT.500 等,然后在一个特定的受控环境中,连续观看一系列的测试序列大约10至30分钟,然后采用不同方法让他们对视频序列的质量进行评分,最后求得平均意见分(Mean Opinion Score,MOS),并对所得数据进行分析。测试环境中的受控因素包括:观看距离、观测环境、测试序列的选择、序列的显示时间间隔等。
客观评估通过一些评估标准来量化视频质量,主要也分为两类,一类是有参考评估,另一类是无参考评估。有参考评估就是依赖原始视频和待评测视频进行对比,目前比较熟知的就是PSNR、SSIM、VIF、VMAF、PEVQ 等。无参考评估,在判断视频质量时不需要来自原始参考视频的任何信息,通过对失真视频空域和频域的处理分析来提取失真视频的特征,或者基于视频像素的质量模型等来得到视频质量。这种评估标准适合与线上无原始参考视频序列的无线和IP视频业务,或者输入和输出差异化的模型,比如说视频增强,视频合并等场景。
整体来看 客观和主观视频评估各有优缺点。对于主观评估,虽然可以直观反应人对视频的观感,但是需要专业培训的人员进行评估;而且随机选取人员会导致主观差异;时间和人力成本高;重复性低;数据缺乏参考性,很难做到精确计算延时,帧抖动等。对于客观评估来说,可以数据量化,参考性高,可重复操作,可以精确计算时延,抖动测试,并进行自动化集成和监控等。所以说如果要做全自动化测试,必须采取客观评估。
LiveVideoStack:测试平台如何获得客户端的视频客观质量数据的?
张琰彬:是这样的, 如果听了演讲的同学应该就很清楚,我会介绍我们的自动化测试框架架构,这就是我们说的与原有视频通道兼容模块的任务,我们单举一个有参考视频质量评估信息来说,在发送的客户端我们需要保存发送帧视频信息,比如说每一帧定位信息,帧本身视频信息,发送时间戳信息等。在接收方,我们同样需要保存接收视频帧信息,每一帧的定位信息以便于发送和接收帧定位,帧本身视频信息,接收时间戳信息等。除此之外,我们要存储的还有网络因子,WebRTC 状态因子等,配合视频信息来计算视频帧抖动、帧率、端对端延时等。这些信息并不是保存在客户端本身的,而是通过额外的信令通道实时传输到我们质量服务器端进行数据存储,这样在不影响本身视频通道性能的同时,也便于分析模块计算各种对比性能参数信息。
LiveVideoStack:在保证服务的可用性、用户观看体验的同时,是否能够通过测试服务来优化服务成本?比如在维持可用性和用户主观体验的同时,通过使用P2P CDN,优化的编码策略或新的Codec来降低成本?
张琰彬:测试服务核心的就是为了产品服务,无论你是在做实时视频通信的这样一个产品还是SDK 的提供方,我们常常会遇到各种视频问题,对于测试来说,我们要思考怎么来发现这些问题,如何重现这些问题,如何自动来复现,如何量化这些问题。那么对于整个团队,包括研发和设计来说,拿到这些问题就可以思考出现这些问题怎么办,怎么来优化我们的产品,因为在实际产品实际中,在有限的资源比如带宽条件下,我们是应该现考虑清晰度还是先考虑流畅度,不同的场景,不同的公司产品策略都可能给出不同的解决办法,但是核心的一点就是我们需要这样一个自动视频评估体系,有足够多的场景复现和结果量化数据,才能给出合理的设计标准。
比如使用我们的自动化测试框架,我们曾经评估过不同的Codec 之间,各种传输带宽带来的最终视频质量性能对比,各种编码在消耗多少带宽的时候他们的视频质量是均衡的,产品设计就可以针对不同的Codec 设置不同的标准带宽。对于产品新增加的Codec, 在最后上线之前,我们也会做对比测试,对比现有的Codec 策略,各种参数是否有新的性能突破,带宽优化等等。我们还可以帮助产品找到精确的最大或者最小阈值,比如说720p 的视频在提供最少带宽的时候就能够达到足够好的视频体验,那么就可以帮用户节省没有必要的增大带宽的设置。