写点什么

一种基于视频帧差异视频卡顿检测方案

  • 2021-03-02
  • 本文字数:1331 字

    阅读完需:约 4 分钟

一种基于视频帧差异视频卡顿检测方案

奇技 · 指南

在视频质量检测中,检测视频是否卡顿也属于视频质量检测的标准之一,在构建视频检测平台中,这一步至关重要。


本文要说明的是把视频转换为帧序列,根据计算帧之间的差值,寻找帧序列中是否有断层,来判断当前视频是否存在卡顿的现象。


结果为一个数据, 0 代表无卡顿现象, 1 代表存在卡顿现象

技术与架构

用户上传视频文件后,使用 ffmpeg 转换为图片序列,抽取图片信息,计算所有序列帧的图片运动像素,计算所有序列图片的平均运动水平,动态计算动态因子,输出判断结果, 0 表示当前不存在卡顿点, 1 表示当前存在卡顿点。



整体方案主要分为六个部分

1. 图片处理

2. 图像相邻帧像素计算

3. 计算所有图片运动量,组合为运动集合

4. 消除视频图片场景剪辑比例,计算平均运动量

5. 计算动态因子

6. 返回结果

技术优势

  • 不需要准备大量的数据集来训练模型,只针对当前要处理的视频进行计算;

  • 不会因为大量的动态场景和静态场景影响卡顿检测的结果;

  • 精准高效,计算量相对较低

技术实现

图片处理

这里采用灰度图片来作为视频卡顿检测的输入序列图片数据,重新设置当前图片的大小为 360*640,当前区域为我们后面计算的兴趣区域.设定兴趣区域,可以有效的避免一些像素点计算的噪声影响。

图像相邻帧计算

A.遍历当前图像集,使用 t+1(下一时刻帧) 的像素减去 t(当前时刻帧)的像素值,计算出两帧之间的差异信息。

B.设定阈值,这里的阈值是一个常量值 = 30,当两帧之间的差异值> 30 的时候,就任务图片存在运动像素,否则,没有存在运动,值为 0,此步骤消除了低运动噪声,或感知能力下的运动像素。

计算所有图片的运动量

将步骤 2 中的值进行平方,将幅度转换为能量,并计算每个视频帧的平均值.该平均值就是当前帧的能量值,所有帧的动量值记为 TI2。

消除视频图片场景切换比例,计算平均运动水量

A.在计算平均值之前要消除场景剪辑比例,这里使用的常量值为 0.02,就是说我们有 100 个帧要消除 2 个场景的剪辑。


B.对 TI2 从小到大排序,在这个序列中,根据 B 中的比例值,消除最高和最低的两个噪声值,循环遍历 TI2,计算 t 时刻帧之前所有帧的平均值,并把这个平均值进行累加.当场景切换的时候,TI2 序列的低点和高点均被消除,平均 TI2 值(TI2_AVG)不会收到影响。

计算动态因子

在近乎静态的场景和动态的场景中,由于像素的变动很小,或者像素变动很大,卡顿的帧/丢失帧会存在少量/大量的运动信息,在确定运动水平的时候需要涉及主观直觉的要素,所以需要利用动态阈值来确定卡顿的视频帧。


在视频中,存在的动态场景较多,该阈值增加,静态场景,阈值减少。


Dfact = a + b * log(TI2_AVG)  a ,b, c 都为常量,分别为 2.5, 1.25, 0.1,c 为限制 Dfact 较小的一个值。

当 Dfact < c = Dfact else 等于 c, Dfact 取值范围是[0, 0.1]之前的一个值。

帧的丢弃和运动量是线性依赖于平均运动能量的对数。

返回结果

循环遍历视频帧,获取每一帧的 TI2 值,如果当前的 TI2 值<= Dfact * Mdrop,认为当前的帧是卡顿的,也就是值为 1,如果当前的 TI2 值> Dfact * Mdrop, 任务当前帧不存在卡顿,把视频所有的帧按找时间顺序排序后,就是我们当前视频卡顿检测的列表值。


Dfact 为上述计算的动态因子,Mdrop 为固定运动能量阈值来确定帧的卡顿.Mdrop 为常量值 0.015。

效果展示


选择 9 张连续的视频帧图片



返回检测结果

本文转载自:360 技术(ID:qihoo_tech)

原文链接:一种基于视频帧差异视频卡顿检测方案

2021-03-02 13:003281

评论

发布
暂无评论
发现更多内容

GPU渲染全解读:GPU渲染器的发展与对比

Finovy Cloud

渲染器 GPU服务器

国际SaaS企业有哪些机遇和挑战

ToB行业头条

云上360行丨深耕快消品行业数字化转型,纷享销客与华为云合力同行

华为云开发者联盟

人工智能 modelarts 快消品 纷享销客

OSPO如何帮助保护你的软件供应链

安势信息

开源 DevOps 开源社区 SCA opensource

数据关联最佳实践

观测云

可观测性 可观测

元气部落仿站开发,元气部落盲盒系统APP开发

WDL22119

盲盒小程序开发 盲盒源码 盲盒H5开发 盲盒APP系统开发 元气部落仿站开发

转行软件测试跳槽到新公司,工作如何快速上手?

伤心的辣条

Python 程序员 软件测试 自动化测试 接口测试

3 个技巧来破解你可以立即使用的 Flutter 生产力!

坚果

6月月更

打造软件供应链安全平台,「安势信息」完成数千万元天使轮融资

安势信息

博云《应用上容器指南》首发!详解应用容器化改造

BoCloud博云

容器 云原生 容器云 应用

CloudTTY:下一代云原生开源 Cloud Shell

Daocloud 道客

Kubernetes 云原生 开源项目 网页命令行

从功能测试进阶自动化测试,熬夜7天整理出这一份3000字超全学习指南【附网盘资源】

伤心的辣条

Python 程序员 软件测试 IT 自动化测试

Git 不要只会 pull 和 push,学学这 5 条提高效率的命令

CRMEB

前端工程化:保姆级教学 Jenkins 部署前端项目

伤心的辣条

Python 程序员 jenkins 自动化测试 接口测试

测试员该知道的软件测试流程,你都知道吗?

伤心的辣条

Python 程序员 软件测试 IT 自动化测试

应用实践 | Apache Doris 在网易互娱的应用实践

SelectDB

MySQL 数据库 最佳实践 apache doris 数据优化

35人首次上榜、行者皆勇者——创业邦3040新青年创投峰会圆满落幕

创业邦

Vue-8-计算属性和侦听属性

Python研究所

6月月更

UI自动化测试框架搭建-优化企业微信通知

伤心的辣条

Python 程序员 软件测试 自动化测试 UI自动化

养老金融政策频出,市场有多大?

易观分析

养老消费

新一代政务云的“前移”与“致远”

云计算

2022中国信通院安全运营发展论坛成功召开

中国IDC圈

安全

国家先进计算产业创新(宜昌)中心正式落地 由中科曙光、升哲科技联合运营

SENSORO

人工智能 物联网 新基建 智慧城市

CVPR2022 |小红书首创多图交互建模挑战热门研究课题,大幅提升行人重识别性能

小红书技术REDtech

Transformer CVPR2022 行人重识别

LeaRun.Java表单快速开发工具

力软低代码开发平台

给你一个项目,你将如何开展性能测试工作?

伤心的辣条

Python 程序员 IT 自动化测试 接口测试

安势信息加入OpenSSF (开源安全基金会), 共建软件供应链安全

安势信息

Linux DevOps SCA工具 opensource

直播回顾 | 传统应用进行容器化改造,如何既快又稳?

BoCloud博云

云原生 容器云 应用

InnoDB体系架构

龙空白白

MySQL InnoDB

如何高效的进行接口测试?【工具篇】

Liam

测试 Postman 接口测试 API接口管理 接口测试工具

俄航天局局长:外星生命或正在研究人类文明

Dylan

俄罗斯 外星人 航天局

一种基于视频帧差异视频卡顿检测方案_架构_360技术_InfoQ精选文章