//
腾讯已有超过21年的音视频技术积累,独家具备 RT-ONE 全球网络。此外,构建了包括实时音视频、云直播、云点播、即时通信、媒体处理等业界最完整的 PaaS 及 aPaaS 产品家族,面向各大场景提供低代码解决方案,开发者和企业可以快速上线高品质的音视频应用。下面有请孙祥学老师为我们分享腾讯云在音视频方面采取的质检及画质评估策略。
文/孙祥学
编辑/LiveVideoStack
我是来自腾讯云音视频的孙祥学,现在负责腾讯云媒体处理(MPS)产品的后台开发。今天跟大家分享的主题是音视频质检及画质评估。质检的概念大家可能比较陌生,但其实在很早以前,广电领域就有另一个相关的叫法------视频技审,从技术的角度审核视频质量,区别于内容审核,视频内容审核大家应该比较熟悉,审核视频是否涉黄政暴。而质检则是从技术维度去检查视频的问题。
这个画面大家可能有点似曾相识,这不是现场设备导致的无法播放,这本身就是一张无法播放的截图。大家平时在家里看电视、手机视频,特别是一些老的视频源时,偶尔会出现这样的问题。很多视频在终端上面存在一些兼容性的问题,导致无法播放。对于内容提供商来说,这种播放体验很差,甚至会导致一部分客户的流失。质检就是为解决这种问题而衍生出的解决方案,防止有问题的视频出现在线上,甚至被用户点播发现异常。
今天将从概述、格式诊断、内容质检、无参考评分、异常修复和体验测试六个部分展开介绍。
-01-
概述
贯穿整个视频的生命周期,从拍摄、采集、编码、封装,到传输、解封装、解码、渲染播放都有可能引入质量问题。举两个例子,大家都知道现在短视频很火,在短视频拍摄里面有一个大家耳熟能详的词叫运镜。运镜运的好叫技术流,运的不好的晃的人头晕眼花,这就是从拍摄环节引入的质量问题。另一个例子是编码环节,视频有非常多的编解码格式、封装格式,非标准编码之后,在不同的终端上、不同手机型号,都可能会存在兼容性的问题。单个视频兼容性排查就已经耗时费力,海量视频数据的质量把控就更加是个头疼的问题,质检的作用就是在视频投放前及时发现这些有问题的视频。
为了解决这个问题,腾讯云媒体处理(MPS)搭建了一套媒体质量监控的全平台链路。主要由媒体质检、后处理修复和播放三部分构成。媒体质检负责先找出问题,然后进行后处理修复,再到终端播放,播放之后通过用户的QoE和QoS行为数据对质检算法进行反馈。
媒体质检内部也分为三部分,分别是格式诊断、内容质检和无参考打分。格式诊断,聚焦视频的封装格式的规范性检查,例如视频的MP4、AV1、ASF格式等,音频的MP3、AAC等。在检查封装格式的同时还会进行编码规范的检查,检查视频编码时是否有按官方的规范。格式诊断发现视频没有格式问题,之后会对画面进行内容质检。检测画面能否正常播放、是否存在一些抖动、是否有模糊、过爆、噪点等问题。音频方面会聚焦音量不均衡、噪声、杂音等问题。在完成内容质检之后,会从清晰度、饱和度、深度、对比度出发,美学分析整个画面的构图色彩,进行无参考打分。通过打分对视频做出区分,给用户推荐的时候,推荐打分较好的视频,带来更好的完播率以及收藏、点击和关注的转化。
在找出问题之后做相应的修复。例如抖动很厉害的时候可以通过转码去抖,色彩非常暗的场景可以进行色彩增强,格式有问题可以进行转码修复,诸如此类的修复手段还有很多。
后处理修复之后,会分发到终端播放。在播放的时候收集用户的观看数、完播率、QoE和QoS等数据,对算法进行反馈。对接云上客户我们慢慢也发现用户的思维也在不断的转变,以前用户都比较追求准确率和召回率类似指标数据,现在用户更在意QoS和QoE的数据的提升,说的再好不如ab对照看看是否有收益再谈。
通过大量对照实验观察,我们发现:***对于质检没有发现问题的视频,QoS和QoE数据明显好于发现有质量问题的视频。***这是质检有问题和无问题视频的对照。第二种对照是有问题的视频修复前和修复后的对照,修复后的视频确实会带来质量上的提升,继而带来Qos和 QoE 的提升。第三种对照比较常见,对视频进行无参考打分之后,在线上播放不同分段的视频,会发现明显不同的用户播放行为。打分高的视频,无论是完播率还是观看次数、观看时长都会明显高于分值较低的视频。这也从侧面验证了:质检能发现问题;发现问题确实也能修复;无参考打分有区分度;
我们将格式诊断、内容质检、无参考打分称为媒体质检三板斧。格式诊断解决能不能播的问题。内容质检解决播的好不好的问题。无参考打分解决播的爽不爽的问题。下面分别详细介绍下这三板斧。
-02-
格式诊断
在做云上媒体处理时,有两个问题经常出现。第一个问题是发现视频有问题,但是不知道是什么问题,排查起来非常困难。第二个问题在于如何在非常多的播放平台都能够稳定的播放。这也是媒体处理的两大挑战,即异常流分析和跨平台兼容性问题。
媒体诊断是针对媒体流进行诊断的云端音视频处理服务,不仅支持直播流,也支持点播离线文件。通过流信息、时间信息、流状态、容器封装、码流诊断的多层检查,其实也是对照封装格式和编码格式规范进行逐一检查,实时发现异常问题,从而给予用户反馈,让用户快速定位到问题所在。针对离线文件可以生成一个诊断报告,直播流会实时的生成回调事件,用户基于回调事件可以进行切备流、断流重推等操作。
下面列举了几个诊断的应用场景。第一个场景是关于直播流的实时监控。针对重要直播活动,通过实时监播进行直播过程的实时监控,对网络异常、流中断等影响直播的情况进行告警,便于客户快速干预处理,为重要直播业务保驾护航。右图就是实时监播的画面截图。常规监控配置包括断流检测、格式异常检测、低帧率检测等。未来还会上线内容质检和无参考打分相关的能力。
第二个场景是OTT场景的检测,ETSI TR 101-290标准是用于衡量DVB系统质量的参考标准,主要用于OTT场景的MPEG-TS流检测。针对MPEG-TS流定义了三种优先级的要求,一是是否影响正常的解码(包括TS同步码检查、PAT、PMT检查等);二是是否影响连续正确解码;三是是否影响具体应用。整个流程走完之后,就可以判断是否存在问题,给予实时的反馈。
第三个场景是播放兼容性的检测。这里例举了三个线上问题:
***第一个问题是关于苹果设备的兼容性。***某用户反馈他们编码出来的视频流Safari播放只有声音没有画面,而我们转码出来的确没有这个问题。通过排查我们发现TS流中的H.264码流没有AUD。AUD,全称Access Unit Delimiter,是H.264接入单元分隔符,AUD在H.264标准中的nal_unit_type为9,在H.265中nal_unit_type是35,在H264中是可选的,但TS规范要求带上AUD。如果没有带接入单元分隔符,就会导致在苹果设备上出现上述的问题。
***第二个问题也是苹果设备上的兼容性问题。***H.265编码MP4格式视频无法播放,排查后发现H.265 fourcc设置成了hev1而非hvc1。这是由于hev1 or hvc1是两种codec tag,而苹果不支持265的hev1。
***第三个问题是用户反馈Dolby Digital Plus音频在部分机顶盒上无法播放。***这是由于Dolby Digital Plus在TS中有ATSC和DVB两种标准,部分机顶盒不支持ATSC标准的Dolby Digital Plus。我们通过Tsduck工具查看ts文件的PMT中eac3的stream_type发现,dvb为0x06,atsc为0x87。诸如这些问题排查十分耗费精力,但如果使用腾讯云音视频质检这套诊断系统,可以较为快速的定位出问题。
-03-
内容质检
在格式诊断发现没有异常之后,就需要进行内容质检。
内容质检,不仅可以智能检测视频画面中抖动重影、模糊、低光照、过曝光、黑边、白边、黑屏、白屏、花屏、噪点、马赛克、二维码(包括条形码、小程序码、二维码)等在内的多个场景,还可以自动检测视频无音轨异常、声音异常片段(包括静音、音量过低、爆音)。
从左到右、从上到下示例依次是重影、模糊、低光照、黑边、花屏、过曝、噪点、二维码、马赛克。
首先来看关于抖动的检测。两帧图像之间的相对运动可以分解为大部分场景的全局运动和小部分场景的局部运动,而全局运动一般代表着摄像机的主观运动。摄像载体的不稳定,会导致在连续的帧间出现上下起伏的运动轨迹。第三幅图表示将t和t+1两帧之间的运动简化为平移、旋转、缩放。
左边的视频是由于摄像载体不稳定导致的画面晃动很厉害,长时间观看很容易头晕。由于相邻两帧图像的间隔很短,几乎没有扭转变化,所以一般采用平移、旋转加缩放的模型对其运动进行建模。第一行的公式就描述了一个平移变化,即X轴和Y轴的像素平移。最终通过推演,得到最后一行的公式。根据模型计算出两帧之间的平移值、旋转值、缩放值,从而判断是否发生抖动。实际应用场景是通过统计一段时间内的平均变化,如果平均值达到阈值,则认为画面抖动情况较为严重。直播流也是类似计算。
黑白边检测的算法相对简单。在进行灰度图转换之后通过两个门限函数处理,把黑白边在灰度图上全部处理成边界为零的一个框。只要找出这个零的边界在哪里,自然就计算出黑白边的边界在哪里。不仅可以知道是否有黑白边,还可以知道黑白边的边界在哪里。
虽然算法不复杂,但是依然会出现一些bad case。最常见的案例是很多电视剧开头显示第一集的画面整个都是黑的,这个算法很有可能将除了第一集的框全部当成黑白边返回。为此我们增加了类似于斜角的检测,去覆盖这样的bad case。
纯色屏检测算法大家可能比较容易想到,常规操作是灰度图之后统计其直方图中像素的占比。当单像素占比超过一定阈值,就认为是一个纯色屏。右图列举的是一个线上bad case。用户和我们反映一张人眼看"纯黑"的图,但算法没有检测出来。通过计算其灰度值,发现并不是单点分布在某一个像素值,它是在几个像素值临近区域分布。这个时候仅仅统计单点像素的占比达不到预期。所以我们增加了类似于滑动窗口的机制,检测邻近像素累加值的占比,从而解决了这样的bad case。
-04-
无参考评分
打分大家听到的最多的应该是VAMF、PSNR等,这些需要基于参考源计算分值。无参考评分的特点在于不需要参考源,直接基于画面的构图、色彩饱和度等计算分值。模型基于深度学习模型,综合考虑视频的清晰度、构图、色彩等多个维度,对视频画面进行无参考质量评估,从而给出综合性视频质量打分建议。输出评分范围40~100,粗略分为三段,40~60为差,60~80为一般,80~100为好。
在直播场景可以通过打分,实时引导主播调整画面、灯光等,从而带来更好的直播体验。这张图展示了深度学习的核心数据网络。左边是视频到图片帧的预处理。这里我们采用的输入尺寸跟720p接近,为672×448。之所以选择这个尺寸,是因为深度学习卷积神经网络输入一般为224,我们将224×3作为高224×2作为宽,可以得到更多的图像特征。采用混合的column结构,不单单使用block4作为特征提取输入,而是采集每一层的输出,从而抬升low-level特征对质量预测的影响。同时参考不同视频之间的rank,强化学习的效果。右边是算法在线上实测的PLCC和SRCC数据。横轴是预测分值,纵轴是mos分值。越靠近中间的实线,就表示与人眼主观打分的相关性越高,算法指标越好。
这里展示了不同评分分段的视频样例。
-05-
异常修复
通过三板斧检出问题之后,我们还会给出对应的修复策略。这里列举了几个不同场景修复前后的对比图。左边的图片显示的是智能去水印的效果。将水印去掉之后,根据水印周围的像素值拟合,贴近原生效果。一开始我们采取的策略是直接高斯模糊,但一旦用户注意到,就会很突兀,反而更抓眼球,所以后期就陆续开始尝试采用GAN网络拟合缺失的部分。
右图是去抖动的效果,通过转码可以将抖动去除。可以明显看到同一个视频,抖动情况缓解很多,整个视频运动更加平滑。
当检测到视频有黑白边时,可以智能去黑白边。去黑白边之后,为了保持与之前相同的分辨率,我们将视频进行了拉伸,同时将字幕进行了平移。但是细心的同学可以发现,拉伸过以后画面比例稍微有些奇怪,所以现在我们也在尝试使用GAN网络甚至大模型补齐边缘细节。当画面较暗时,可以对色彩进行增强,下方左右两幅图片对比效果就非常明显。
左边的图有划痕、有噪声、有压缩,而且分辨率低。中间那个图是在进行画质估计和修复、反交错、去划痕、去噪声、压缩复原等操作之后的效果。右图是在经过画质增强、提升分辨率、人脸增强、提高清晰度之后的效果。下图也是对一部老电视剧的修复,采用了超分、插帧、色彩增强等处理,提升效果很明显。
音频层面,可以通过降噪处理掉音频的噪声;或者经过音量均衡处理降低音频中的爆音,提高低音,使声音更加自然;也可以对音频进行美化,消除一些杂音和齿音等。
-06-
体验测试
上述提到的能力,腾讯云有提供一些接口进行体验测试,大家可以关注一下。
离线:https://cloud.tencent.com/document/api/862/37578
直播:https://cloud.tencent.com/document/api/862/39227
谢谢大家!
▲ 扫描图中 二维码 或点击" 阅读原文 " ▲
直通LiveVideoStackCon 2023深圳站 9折购票通道