音视频质检及画质评估——为QoS QoE 指标保驾护航

news2024/11/23 0:13:16

  //  

腾讯已有超过21年的音视频技术积累,独家具备 RT-ONE 全球网络。此外,构建了包括实时音视频、云直播、云点播、即时通信、媒体处理等业界最完整的 PaaS 及 aPaaS 产品家族,面向各大场景提供低代码解决方案,开发者和企业可以快速上线高品质的音视频应用。下面有请孙祥学老师为我们分享腾讯云在音视频方面采取的质检及画质评估策略。

文/孙祥学

编辑/LiveVideoStack

我是来自腾讯云音视频的孙祥学,现在负责腾讯云媒体处理(MPS)产品的后台开发。今天跟大家分享的主题是音视频质检及画质评估。质检的概念大家可能比较陌生,但其实在很早以前,广电领域就有另一个相关的叫法——视频技审,从技术的角度审核视频质量,区别于内容审核,视频内容审核大家应该比较熟悉,审核视频是否涉黄政暴。而质检则是从技术维度去检查视频的问题。

1ff79ea708b47c9d83381dbe02251e22.png

这个画面大家可能有点似曾相识,这不是现场设备导致的无法播放,这本身就是一张无法播放的截图。大家平时在家里看电视、手机视频,特别是一些老的视频源时,偶尔会出现这样的问题。很多视频在终端上面存在一些兼容性的问题,导致无法播放。对于内容提供商来说,这种播放体验很差,甚至会导致一部分客户的流失。质检就是为解决这种问题而衍生出的解决方案,防止有问题的视频出现在线上,甚至被用户点播发现异常。

今天将从概述、格式诊断、内容质检、无参考评分、异常修复和体验测试六个部分展开介绍。

-01-

概述

2966e74f75ad428788c2ce883f0719fe.png

贯穿整个视频的生命周期,从拍摄、采集、编码、封装,到传输、解封装、解码、渲染播放都有可能引入质量问题。举两个例子,大家都知道现在短视频很火,在短视频拍摄里面有一个大家耳熟能详的词叫运镜。运镜运的好叫技术流,运的不好的晃的人头晕眼花,这就是从拍摄环节引入的质量问题。另一个例子是编码环节,视频有非常多的编解码格式、封装格式,非标准编码之后,在不同的终端上、不同手机型号,都可能会存在兼容性的问题。单个视频兼容性排查就已经耗时费力,海量视频数据的质量把控就更加是个头疼的问题,质检的作用就是在视频投放前及时发现这些有问题的视频。

93ed1f6ce222e81ba9e488957d8d2645.png

为了解决这个问题,腾讯云媒体处理(MPS)搭建了一套媒体质量监控的全平台链路。主要由媒体质检、后处理修复和播放三部分构成。媒体质检负责先找出问题,然后进行后处理修复,再到终端播放,播放之后通过用户的QoE和QoS行为数据对质检算法进行反馈。

媒体质检内部也分为三部分,分别是格式诊断、内容质检和无参考打分。格式诊断,聚焦视频的封装格式的规范性检查,例如视频的MP4、AV1、ASF格式等,音频的MP3、AAC等。在检查封装格式的同时还会进行编码规范的检查,检查视频编码时是否有按官方的规范。格式诊断发现视频没有格式问题,之后会对画面进行内容质检。检测画面能否正常播放、是否存在一些抖动、是否有模糊、过爆、噪点等问题。音频方面会聚焦音量不均衡、噪声、杂音等问题。在完成内容质检之后,会从清晰度、饱和度、深度、对比度出发,美学分析整个画面的构图色彩,进行无参考打分。通过打分对视频做出区分,给用户推荐的时候,推荐打分较好的视频,带来更好的完播率以及收藏、点击和关注的转化。

在找出问题之后做相应的修复。例如抖动很厉害的时候可以通过转码去抖,色彩非常暗的场景可以进行色彩增强,格式有问题可以进行转码修复,诸如此类的修复手段还有很多。

后处理修复之后,会分发到终端播放。在播放的时候收集用户的观看数、完播率、QoE和QoS等数据,对算法进行反馈。对接云上客户我们慢慢也发现用户的思维也在不断的转变,以前用户都比较追求准确率和召回率类似指标数据,现在用户更在意QoS和QoE的数据的提升,说的再好不如ab对照看看是否有收益再谈。

通过大量对照实验观察,我们发现:对于质检没有发现问题的视频,QoS和QoE数据明显好于发现有质量问题的视频。这是质检有问题和无问题视频的对照。第二种对照是有问题的视频修复前和修复后的对照,修复后的视频确实会带来质量上的提升,继而带来Qos和 QoE 的提升。第三种对照比较常见,对视频进行无参考打分之后,在线上播放不同分段的视频,会发现明显不同的用户播放行为。打分高的视频,无论是完播率还是观看次数、观看时长都会明显高于分值较低的视频。这也从侧面验证了:质检能发现问题;发现问题确实也能修复;无参考打分有区分度;

f7b0c44877ba1f462491cced61c7a8fc.png

我们将格式诊断、内容质检、无参考打分称为媒体质检三板斧。格式诊断解决能不能播的问题。内容质检解决播的好不好的问题。无参考打分解决播的爽不爽的问题。下面分别详细介绍下这三板斧。

-02-

格式诊断

3a90ea584c4850e712aece51dca02570.png

在做云上媒体处理时,有两个问题经常出现。第一个问题是发现视频有问题,但是不知道是什么问题,排查起来非常困难。第二个问题在于如何在非常多的播放平台都能够稳定的播放。这也是媒体处理的两大挑战,即异常流分析和跨平台兼容性问题。

e0e0e95ff83835d163f4c0efdb9776d6.png

媒体诊断是针对媒体流进行诊断的云端音视频处理服务,不仅支持直播流,也支持点播离线文件。通过流信息、时间信息、流状态、容器封装、码流诊断的多层检查,其实也是对照封装格式和编码格式规范进行逐一检查,实时发现异常问题,从而给予用户反馈,让用户快速定位到问题所在。针对离线文件可以生成一个诊断报告,直播流会实时的生成回调事件,用户基于回调事件可以进行切备流、断流重推等操作。

12dfdf3a410e2e4f6829b65d53115008.png

下面列举了几个诊断的应用场景。第一个场景是关于直播流的实时监控。针对重要直播活动,通过实时监播进行直播过程的实时监控,对网络异常、流中断等影响直播的情况进行告警,便于客户快速干预处理,为重要直播业务保驾护航。右图就是实时监播的画面截图。常规监控配置包括断流检测、格式异常检测、低帧率检测等。未来还会上线内容质检和无参考打分相关的能力。

f560c2c8cd2eb33267d9b0fea07a1334.png

第二个场景是OTT场景的检测,ETSI TR 101-290标准是用于衡量DVB系统质量的参考标准,主要用于OTT场景的MPEG-TS流检测。针对MPEG-TS流定义了三种优先级的要求,一是是否影响正常的解码(包括TS同步码检查、PAT、PMT检查等);二是是否影响连续正确解码;三是是否影响具体应用。整个流程走完之后,就可以判断是否存在问题,给予实时的反馈。

09ae2d13b175f979e4fa97942a8791bc.png

第三个场景是播放兼容性的检测。这里例举了三个线上问题:

第一个问题是关于苹果设备的兼容性。某用户反馈他们编码出来的视频流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-

内容质检

在格式诊断发现没有异常之后,就需要进行内容质检。

309b0a9f741c367e4c0bf520d21b9be0.png

内容质检,不仅可以智能检测视频画面中抖动重影、模糊、低光照、过曝光、黑边、白边、黑屏、白屏、花屏、噪点、马赛克、二维码(包括条形码、小程序码、二维码)等在内的多个场景,还可以自动检测视频无音轨异常、声音异常片段(包括静音、音量过低、爆音)。

0db1805dffcbc0d9b9acb8e1bbd19fa4.png

从左到右、从上到下示例依次是重影、模糊、低光照、黑边、花屏、过曝、噪点、二维码、马赛克。

9c65fdc1b3c74df6526e897e797209b9.png

首先来看关于抖动的检测。两帧图像之间的相对运动可以分解为大部分场景的全局运动和小部分场景的局部运动,而全局运动一般代表着摄像机的主观运动。摄像载体的不稳定,会导致在连续的帧间出现上下起伏的运动轨迹。第三幅图表示将t和t+1两帧之间的运动简化为平移、旋转、缩放。

e819c62d9ff42ae8e4fec2dbe0d07fa3.png

左边的视频是由于摄像载体不稳定导致的画面晃动很厉害,长时间观看很容易头晕。由于相邻两帧图像的间隔很短,几乎没有扭转变化,所以一般采用平移、旋转加缩放的模型对其运动进行建模。第一行的公式就描述了一个平移变化,即X轴和Y轴的像素平移。最终通过推演,得到最后一行的公式。根据模型计算出两帧之间的平移值、旋转值、缩放值,从而判断是否发生抖动。实际应用场景是通过统计一段时间内的平均变化,如果平均值达到阈值,则认为画面抖动情况较为严重。直播流也是类似计算。

ee48f4090c4da5a1d62c96839d486cea.png

黑白边检测的算法相对简单。在进行灰度图转换之后通过两个门限函数处理,把黑白边在灰度图上全部处理成边界为零的一个框。只要找出这个零的边界在哪里,自然就计算出黑白边的边界在哪里。不仅可以知道是否有黑白边,还可以知道黑白边的边界在哪里。

虽然算法不复杂,但是依然会出现一些bad case。最常见的案例是很多电视剧开头显示第一集的画面整个都是黑的,这个算法很有可能将除了第一集的框全部当成黑白边返回。为此我们增加了类似于斜角的检测,去覆盖这样的bad case。

86f4619eadc67aee102a2941db1e47e1.png

纯色屏检测算法大家可能比较容易想到,常规操作是灰度图之后统计其直方图中像素的占比。当单像素占比超过一定阈值,就认为是一个纯色屏。右图列举的是一个线上bad case。用户和我们反映一张人眼看“纯黑”的图,但算法没有检测出来。通过计算其灰度值,发现并不是单点分布在某一个像素值,它是在几个像素值临近区域分布。这个时候仅仅统计单点像素的占比达不到预期。所以我们增加了类似于滑动窗口的机制,检测邻近像素累加值的占比,从而解决了这样的bad case。

-04-

无参考评分

14e25afff6dff3042a9347109f5b4ac3.png

打分大家听到的最多的应该是VAMF、PSNR等,这些需要基于参考源计算分值。无参考评分的特点在于不需要参考源,直接基于画面的构图、色彩饱和度等计算分值。模型基于深度学习模型,综合考虑视频的清晰度、构图、色彩等多个维度,对视频画面进行无参考质量评估,从而给出综合性视频质量打分建议。输出评分范围40~100,粗略分为三段,40~60为差,60~80为一般,80~100为好。

68b3fa8cf28aa1f313a9bea9099f158c.png

在直播场景可以通过打分,实时引导主播调整画面、灯光等,从而带来更好的直播体验。这张图展示了深度学习的核心数据网络。左边是视频到图片帧的预处理。这里我们采用的输入尺寸跟720p接近,为672×448。之所以选择这个尺寸,是因为深度学习卷积神经网络输入一般为224,我们将224×3作为高224×2作为宽,可以得到更多的图像特征。采用混合的column结构,不单单使用block4作为特征提取输入,而是采集每一层的输出,从而抬升low-level特征对质量预测的影响。同时参考不同视频之间的rank,强化学习的效果。右边是算法在线上实测的PLCC和SRCC数据。横轴是预测分值,纵轴是mos分值。越靠近中间的实线,就表示与人眼主观打分的相关性越高,算法指标越好。

6e3ef5c5d1cb180083553fadf6c53674.png

这里展示了不同评分分段的视频样例。

-05-

异常修复

通过三板斧检出问题之后,我们还会给出对应的修复策略。这里列举了几个不同场景修复前后的对比图。左边的图片显示的是智能去水印的效果。将水印去掉之后,根据水印周围的像素值拟合,贴近原生效果。一开始我们采取的策略是直接高斯模糊,但一旦用户注意到,就会很突兀,反而更抓眼球,所以后期就陆续开始尝试采用GAN网络拟合缺失的部分。

右图是去抖动的效果,通过转码可以将抖动去除。可以明显看到同一个视频,抖动情况缓解很多,整个视频运动更加平滑。

1a8806fc368af43ae4a04301da5f6184.png

当检测到视频有黑白边时,可以智能去黑白边。去黑白边之后,为了保持与之前相同的分辨率,我们将视频进行了拉伸,同时将字幕进行了平移。但是细心的同学可以发现,拉伸过以后画面比例稍微有些奇怪,所以现在我们也在尝试使用GAN网络甚至大模型补齐边缘细节。当画面较暗时,可以对色彩进行增强,下方左右两幅图片对比效果就非常明显。

0b421cc6b571c0f9bcfa8173f9238fd7.png

左边的图有划痕、有噪声、有压缩,而且分辨率低。中间那个图是在进行画质估计和修复、反交错、去划痕、去噪声、压缩复原等操作之后的效果。右图是在经过画质增强、提升分辨率、人脸增强、提高清晰度之后的效果。下图也是对一部老电视剧的修复,采用了超分、插帧、色彩增强等处理,提升效果很明显。

d2fdf901dfe1bae65fa03aa2b1dca654.png

音频层面,可以通过降噪处理掉音频的噪声;或者经过音量均衡处理降低音频中的爆音,提高低音,使声音更加自然;也可以对音频进行美化,消除一些杂音和齿音等。

-06-

体验测试

上述提到的能力,腾讯云有提供一些接口进行体验测试,大家可以关注一下。

离线:https://cloud.tencent.com/document/api/862/37578

直播:https://cloud.tencent.com/document/api/862/39227

监播:https://cloud.tencent.com/document/product/267/79959

点播:https://cloud.tencent.com/document/product/266/94242

谢谢大家!


871315f59966bbb5548f9864f28ef09b.png

扫描图中二维码或点击“阅读原文 

直通LiveVideoStackCon 2023深圳站 9折购票通道

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/994575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

lighttpd以及socket和WebSocket编程

综述 本文涉及到下图绿色背景部分的内容: 左侧位于Linux下,其中包括lighttpd和socket程序;右侧是WebSocket程序。两者通过网络交互。 本文介绍lighttpd的基本使用方式,并通过编程完成一个socket服务器与浏览器端的WebSocket客户…

180B参数的Falcon登顶Hugging Face,vs chatGPT 最好开源大模型使用体验

文章目录 使用地址使用体验test1:简单喜好类问题test2:知识性问题test3:开放性问题test4:中文支持test5:问题时效性test6:学术问题使用地址 https://huggingface.co/spaces/tiiuae/falcon-180b-demo 使用体验 相比Falcon-7b,Falcon-180b拥有1800亿的参数量

【数据结构】AVL树的插入和自平衡调整

AVL树是最早发明的自平衡二叉查找树。在AVL树中,任一节点对应的两颗子树的最大高度差为1,因此他被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是 O ( log ⁡ n ) O(\log{n}) O(logn)增加和删除操作后可能需要通过一次货多次旋转…

斯坦福兔子,犰狳,obj模型下载

序 这俩,可能是计算机图形学里比较有名的模型。 但是,官方网站上下载的话,模型是ply格式的,不大习惯;想要obj格式的。 有没有现成的obj格式的? 相关网页 PositionBasedDynamics/data/models at master…

动态规划之子数组系列

子数组系列 1. 环形⼦数组的最⼤和2. 乘积最大子数组3. 等差数列划分4. 最长湍流子数组5. 单词拆分6. 环绕字符串中唯⼀的子字符串 1. 环形⼦数组的最⼤和 1.题目链接:环形⼦数组的最⼤和 2.题目描述:给定一个长度为 n 的环形整数数组 nums &#xff0c…

Pytorch-基于RNN的不同语种人名生成模型

一、RNN背景介绍 循环神经网络(Recurrent Neural Networks, RNN) 是一种常用的神经网络结构,它源自于1982年由Saratha Sathasivam提出的霍普菲尔德网络。 其特有的循环概念及其最重要的结构——长短时记忆网络——使得它在处理和预测序列数据…

Linux初探 - 概念上的理解和常见指令的使用

目录 Linux背景 Linux发展史 GNU 应用场景 发行版本 从概念上认识Linux 操作系统的概念 用户的概念 路径与目录 Linux下的文件 时间戳的概念 常规权限 特殊权限 Shell的概念 常用指令 ls tree stat clear pwd echo cd touch mkdir rmdir rm cp mv …

请求与响应以及REST风格

目录 请求与响应请求参数参数传递 五种类型参数传递普通参数POJO数据类型嵌套POJO类型参数数组类型参数集合类型参数JSON数据传输参数JSON对象数据JSON对象数组 响应返回文本数据[了解]响应JSON数据 REST风格REST简介RESTful入门案例RESTful快速开发 请求与响应 请求参数 参数…

【SpringMVC】实现增删改查(附源码)

目录 引言 一、前期准备 1.1.搭建Maven环境 1.2.导入pom.xml依赖 1.3.导入配置文件 ①jdbc.properties ②generatorConfig.xml ③log4j2.xml ④spring-mybatis.xml ⑤spring-context.xml ⑥spring-mvc.xml ⑦修改web.xml文件 二、逆向生成增删改查 2.1.导入相关u…

网络原理,了解xml, json,protobuffer的特点

目录 外卖服务器场景带入 大佬们通用的规范格式 一、👦 外卖服务器场景 外面服务器沟通有很多模式——展示商家列表等等,只是其中一个,因此需要一个统一的规划了——不同应用程序,里面的自定义格式是不一样的,这样的…

基于微服务+Java+Spring Cloud +UniApp +MySql开发的智慧工地源码(物联网、人工智能、AI识别、危大工程)

智慧工地系统利用物联网、人工智能、云计算、大数据、移动互联网等新一代信息技术,通过工地中台、三维建模服务、视频AI分析服务等技术支撑,实现智慧工地高精度动态仿真,趋势分析、预测、模拟,建设智能化、标准化的智慧工地综合业…

LeetCode 49题: 字母异位词分组

题目 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate", "nat&qu…

maven聚合工程的创建

父工程: parent-project 子工程:project-child project-child2 project-child3 创建父工程 将src目录删除了(在父工程中的src目录是没有用的) 创建子工程 右击父工程------new------module 聚合工程创建完之后 在父工程的pom文件中 …

IJ中PHP环境的搭建和使用教程

目录 目录 前言 思维导图 1,PHP环境下载 1.下载链接 2.进行安装 3,自定义路径 4.进行相关的一些库的选择下载 2,进行IJ中PHP环境的配置 2.1,下载PHP插件 2.2,下载过程中的注意事项 3,为什么这么做呢? 3.1,原因 3.2,进行代码…

【Java 基础篇】Java List 使用指南:深入解析列表操作

Java 是一门强大的编程语言,拥有丰富的数据结构和集合类,其中之一就是 List 列表。List 是 Java 集合框架中的一个重要接口,它允许我们以有序、可重复的方式存储一组元素。本篇博客将从基础到高级,详细介绍 Java 中的 List 接口以…

Vulnhub系列靶机---HarryPotter-Aragog-1.0.2哈利波特系列靶机-1

文章目录 方式一信息收集主机发现端口扫描目录扫描wpscan工具 漏洞利用msf工具数据库权限用户权限root提权 方式二信息收集gobuster扫描wpscan扫描 漏洞利用POC 靶机文档:HarryPotter: Aragog (1.0.2) 下载地址:Download (Mirror) 方式一 信息收集 主机…

入门人工智能 —— 学习条件语句、循环语句、使用 Python 的数据结构来存储和组织数据,例如列表、字典、集合(3)

入门人工智能 —— 学习条件语句、循环语句、使用 Python 的数据结构来存储和组织数据,例如列表、字典、集合 1. 条件语句(Conditional Statements)2. 循环语句(Loop Statements)使用 for 循环:使用 while 循环&#x…

Spring Cache:提高应用性能的策略和技巧

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

Java项目基于SpringBoot藏区特产销售系统,可作为毕业设计

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 今天为大家带来的是基于 Java SpringBootVue 的藏区特产销售系统 文章目录 1. 简介2.主要技术3 功能分析4 系…

Python超入门(3)__迅速上手操作掌握Python

# 11.if语句 is_student True # bool类型 is_teacher Falseif is_student:print("请到操场集合") elif is_teacher:print("请到办公室集合") else:print("请离开学校") print("谢谢合作") """ 请到操场集合 谢谢合…