【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

Electric Eye:Netflix 的音视频测试框架

  • 2015-10-08
  • 本文字数:1833 字

    阅读完需:约 6 分钟

作为一家北美视频租赁供应商, Netflix 还研发了从拇指大小的电视棒到超大屏幕的曲面高清电视等各种各样的设备。如何能够更好的实现这些设备上视频、音频以及字幕的正确同步一直是 Netflix 专注的问题。近日,Netflix 推出了一个自动化的计算机视觉和音频测试框架——电眼(Electric Eye),以辅助在这些设备上进行的同步测试。

提起电眼,首先需要说到美国的二十一世纪通信和视频辅助行动(Twenty-First Century Communications and Video Accessibility Act,CCVA)。CCVA 行动由美国国会提出,主要为残疾人在通信和视频方面提供特殊的帮助。隐藏式字幕(Closed Caption,CC)就是在这种背景下诞生的一种特殊字幕。其最初设计的目的是将节目中的音频或对白等通过文字在屏幕上显示出来,为有听力障碍的人理解电视节目提供帮助。CC 一般采用 Timed Text Markup Language(TTML)进行编写,详细描述了字幕的内容、出现的时间和位置以及消失的时间等等。以往,Netflix 都是采用人工方式来将 CC 和视频结合起来,确定其内容和显示方式。但是,这种方式效率低下,且容易出错。此外,设备多样性也使得该问题不易解决。同步显示还需要考虑到各个设备的特点。由此,电眼项目诞生。

作为该项目的第一步,Netflix 采用 OpenCV 建立了一个针对平面电视的模型,并将问题切分为了两个子问题——获得一个针对电视的可以测试的框架,然后从该框架提取出字幕进行对比。OpenCV 本身已经内置了在平面上探测棋盘模式的功能,并能够产生透视角修正矩阵(perspective-correction matrix)基于该矩阵封装图像的代码。这样,大概的功能已经实现。

但是,接下来还有很多小问题。最主要的就是电视本身是会发射光线的。这就导致摄像机摄录电视中视频时容易出现模糊、鬼影等问题。而视频内容如果为全黑屏又无法显示视频和字幕是否同步。因此,Netflix 选取了一段水流的画面作为测试视频,将其亮度降低了50%,然后在其上覆盖字幕。屏幕上部显示的是应该正确出现、已经内嵌在视频中的字幕,而下部显示的是经过解析显示出的字幕。通过比较这两个字母,系统就可以知道CC 字幕是否正确显示。此外,测试环境中的灯光还容易引起水面反光太强,影响到字幕显示。针对这些问题,Netflix 结合环境矫正技术、传统的OpenCV 图像清理技术以及CV 等提出了解决方案。最终,原型系统可以在66ms 级别可靠的探测delta,从而引入第二个原型系统的创建。

在第一个系统的基础上,第二个系统加入了一些额外的要求:处理过程要实时进行和系统要能够处理音频。但是, OpenCV 并没有提供音频接口,且性能有限。为此,Netflix 团队采用了创造性的编码框架——Cinder 。作为知名的C++ 库,Cinder 还提供了能够桥接OpenCV 的CinderBlock 模块和音频DSP 库。因此,音视频同步测试也加入到了原型系统中。而测试内容也采用了 Archimedia 专门为 Netflix 设计的、用于音视频测试的 Test Pattern 。测试过程包含以下步骤:小球到达底部之前在英语 2.0 轨道播放 1250Hz 的声音,过程持续 400ms;一旦小球到达底部,声音转变为 1000Hz,持续 200ms。这些模式每 6 秒钟重复一次。

为了鉴别正在播放的声音,Netflix 采用了 Cinder 的 MonitorSpectralNode 类。这样,系统就可以抓取第一帧和最后一帧,并感知声音频率变化的时刻,从而进行简单的音视频同步测试。接下来,系统就需要识别小球的位置,实现测试过程的自动化。为了排除屏幕发光、摄像机延迟和像素反应时间等带来的影响,Netflix 采用了图像处理、直方图均衡化以及图像阈值等技术。最终,系统能够取得大约 33ms 的精度和每次测量正负 33ms 的误差。

此外,测试过程中还遇到音频频率不一致的问题。其中,电脑中音频为 44.1kHz,通过 HDMI 后变为 48kHz,而并非所有的摄像机都同时支持 44.1kHz 和 48kHz。因此,Netflix 花费了 5 个月的时间来解决这些问题,最终搭建成功了电眼系统。现在,电眼 1.0 版本正式亮相。Netflix 也在计划尽快开源其绝大部分代码。Netflix 的高级软件工程师 Michael Russel 表示,公司接下来会继续对电眼进行额外的测试,并寻找更多的应用场景。而且,Michael 透露,Netflix 开源电眼的目的则是希望更多测试者能够直接受益或者从中获得计算机视觉和音频处理的测试方面的灵感和经验。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-10-08 19:002508
用户头像

发布了 268 篇内容, 共 118.3 次阅读, 收获喜欢 24 次。

关注

评论

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

开鸿智谷与华秋达成生态共创合作,共同打造硬件生态

华秋电子

有哪些好用的远程传输大文件的软件

镭速

远程传输大文件

国内市场知名的数据可视化工具

2D3D前端可视化开发

数据分析 数据可视化 商业智能 数据可视化工具 可视化大屏

先楫半导体与华秋达成生态共创合作,共建技术生态社区

华秋电子

aspera替代方案:可靠和高效的企业文件传输工具

镭速

aspera替代方案 企业文件传输工具

将DAST集成到CI/CD管道中的优势和实施步骤

互联网工科生

CI/CD DAST web 服务

Java基础入门——Java语言介绍

java易二三

Java

开发微信公众号本地调试+-+cpolar内网穿透

程思扬

微信公众号 网络穿透

华秋慕尼黑上海电子展圆满收官,数字化赋能智能制造!

华秋电子

低代码和无代码平台可以加速应用程序现代化

这我可不懂

软件开发 低代码 无代码 应用程序

IBM收购数据可观测性厂商 Databand.ai

乘云 DataBuff

MES1.0.0正式发布|万界星空推出免费的MES系统

万界星空科技

开源 MES系统 制造业生产管理系统

实现大文件远程传输、备份和共享的小秘诀

镭速

大文件远程传输

如何使用API网关和OPA实现RBAC

这我可不懂

API rbac OPA

在云计算环境中,保护Java应用程序可用的有效措施和工具

高端章鱼哥

Java 云计算

HashData:让大模型“飞入寻常百姓家”

酷克数据HashData

软件测试/测试开发丨Linux常用命令之性能统计

测试人

Python Linux 程序员 性能 软件测试

直播预告 | 博睿学院:让Arthas带你玩转jvm

博睿数据

JVM 可观测性 智能运维 博睿数据 博睿学院

点云标注在自动驾驶中的实践应用与挑战

来自四九城儿

应对突发流量,如何快速为自建 K8s 添加云上弹性能力

阿里巴巴云原生

阿里云 Kubernetes 云原生

在《比特与瓦特》的交点,藏着未来能源的一些真相

脑极体

新能源

低代码技术分享官丨BPMN 2.0简介

inBuilder低代码平台

流程 低代码平台

软件测试/测试开发丨Python 数据类 dataclass 学习笔记

测试人

Python 软件测试 dataclass

共筑信创生态!亚信科技AntDB数据库与用友、东方通、星辰天合达成兼容互认

亚信AntDB数据库

数据库 AntDB AntDB数据库

不懂代码也不用怕!10款无代码网站搭建平台

高端章鱼哥

前端 工具 开发工具 设计师

深开鸿与华秋达成生态共创合作,共同打造硬件生态

华秋电子

润和软件与华秋达成生态共创合作,共同推动物联网硬件创新

华秋电子

LeetCode题解:2618. 检查是否是类的对象实例,迭代和递归

Lee Chen

JavaScript LeetCode

软通动力与华秋达成生态共创合作,共同推动物联网硬件创新

华秋电子

向量检索在大模型应用场景的技术和实践

Baidu AICLOUD

向量检索 大模型

Electric Eye:Netflix的音视频测试框架_语言 & 开发_张天雷_InfoQ精选文章