热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Netflix:为什么建立专门的媒体数据库?

netflix,为什么,建立,专
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/83373969

本文解释了Netflix建立专门的媒体数据库的原因,包括精准的用户推荐,极致的编码以及更高效的实现创意。


文 / Rohit Puri

译 / 王月美

原文:https://medium.com/netflix-techblog/the-netflix-media-database-nmdb-9bf8e6d0944d


想象一下,我们正在研究下一代自适应视频流算法。我们的目标是最大限度地缩短全球数百万Netflix会员的播放启动时间。为此,我们需要收集ISO BMFF(基本媒体文件格式)格式化比特流的标题的聚合统计数据(包括最小值,最大值,中值,平均值,任意百分数)。Netflix转码集群为大量内容提供服务,并为每个内容生成大量的比特流(具有不同的编解码器+质量组合)。在过去,我们需要编写一次性脚本,以便在我们分析数据之前,以艰难的方式从比特流中抓取头部信息。很显然这种方法无法扩展——我们脚本中的软件错误会将导致重置整个工作。


此外,当分析我们的媒体数据的另一个完全不同的维度时,还需要一个新的“一次性”脚本来处理。对于来自不同域的问题多次重复这种方法使我们意识到这里存在一种模式,并让我们建立一个以可扩展的方式来解决这个问题的系统。


这篇博客文章介绍了Netflix媒体数据库(NMDB)——一种基于Netflix微服务平台构建的高度可查询的数据系统。NMDB用于在Netflix上持久保存有关各种媒体资产的技术元数据,并使用查找和运行时计算的组合近乎实时地提供查询。NMDB使得开发人员(如视频流研究人员)能够将时间集中在对媒体数据洞察的开发上,并制定出令人惊叹的数据驱动算法,而不用操心收集和组织数据的任务。


为何选择媒体数据库?


优化的用户界面,有意义的个性化推荐,高效的流媒体和大量内容是定义终端用户在Netflix体验效果的主要因素。需要将各种复杂程度的业务工作流程聚集在一起,以实现这种体验。


640?wx_fmt=png


与故事相关的艺术品图像和标题概要(见上图),以及富有洞察力的视频预览在帮助用户找到相关的节目和电影方面有很长的路要走。Netflix不断扩大的内容摄取量规模,要求开发能够帮助我们的创意团队及时合成高质量数字商品资产的系统。例如,这可以通过向它们提供有意义的原始图像和从源视频资产中自动(或通过算法)提取视频剪辑完成。这可以作为创建引人入胜的数字媒体资产的起点。


如下所示,内容推荐系统经济地表达了针对最终用户的内容偏好和品味。Netflix目录中内容紧凑且有效的特征表示对此功能是至关重要。例如,可以通过构建使用媒体文件(音频,定时文本,视频)以及标题元数据(类型标签,概要)作为其输入的机器学习模型。


640?wx_fmt=png


高效的音频和视频编码方式可以更有效的利用比特流。对视频时间和空间分析(例如,检测镜头时刻和场景变化)以及识别视频帧中的显著的部分和对象有助于为视频编码系统生成关键信息。


640?wx_fmt=png


最后,在Netflix上保持对源内容质量的高标准对于终端用户的体验非常重要。上图说明了一个这样的用例。该图像对应于来自西方古典类型的标题的视频帧。这种情况下,在视频中可以看到用于制作标题的相机。我们非常希望具有一种自动分析系统,该系统将检测和定位(可能通过矩形边界框)相机的存在。另一种这样的情况如下图所示。在该种情况下,字幕文本被放置在视频呈现的文本顶部,导致这两个文本都是不可读的。而视频文本检测算法以及字幕的定时和定位知识可以用于自动解决该问题。


640?wx_fmt=png


我们需要注意的是,以上说明的看似完全不同的用例实际上与核心组件算法的使用重叠。例如,镜头变化数据对视频编码用例起着至关重要的作用。不同的镜头具有不同的视觉特性并且具有不同的比特预算。出于同样的原因,镜头变化数据也是从源视频资产中生成各种原始图像和视频剪辑的基本要素。通过从每个镜头中选择最优秀的候选者,可以获得高质量的原始艺术品候选者的集合。同样,可以通过组合每个镜头表示来构造视频媒体的有意义的潜在表示。


作为另一个示例,虽然视频文本检测数据在内容质量控制中起着非常宝贵的作用,但是对于视频编码和艺术品自动化用例也是有益的—包含大量文本的视频帧通常不用作良好的艺术品图像候选者。


此外,许多这些分析在计算上代价往往非常昂贵——在处理不同的业务用例时重复相同的计算是非常低效的。总之,这些原因共同构成了一个数据系统的论据,该数据系统可以作为与媒体时间轴相关的任何分析的通用存储。换句话说,我们需要一个“媒体数据库”。


媒体数据库的特征


媒体数据库容纳对应于不同模态媒体的媒体分析数据——这些媒体分析数据包括音频,视频,图像和文本(例如:字幕)。期望在媒体时间轴上提供任意查询。例如,音轨的时间线中的什么时间间隔包含音乐,或者包含文本的视频中的视频帧列表,或者对应于对话的字幕文件中的时间间隔的集合。 鉴于其范围的广度,我们认为以下是媒体数据库的重要特征:


1、对结构化数据的亲和力:具有模式的数据适用于基于机器的处理,因此可用于大规模分析和消费。在我们的案例中,架构合规性允许我们索引数据,这反过来又可以实现数据搜索和挖掘机会。此外,这就把数据的创造者从需要高端服务的消费者中解脱出来了。


2、有效的媒体时间线建模:服务从周期性的面向样本的(例如,视频帧)到基于事件的(例如,定时文本间隔)的各种类型的媒体时间线数据的能力是媒体数据库的基本特征。


3、时空查询能力:媒体数据库本地支持媒体数据的时间(例如,音频轨道中的时间间隔)以及空间(例如,图像的部分)特征,并且在这些维度上提供高效查询能力。作为示例,媒体数据库使得检查连续的视频帧序列是否包含视频帧的特定空间区域(如左上角)中的文本变得容易。这样的查询可以用于检测视频和字幕中存在的文本之间的冲突。


4、多租户:精心设计的媒体数据库可以用作支持来自多个应用的多个分析数据的平台。 因此,它允许存储任意数据,只要它是结构化的。另外,如果该数据也可以与媒体资源的特定时间间隔相关联,则每个租户可以从我们系统的有效查询能力中受益。


5、可扩展性:可扩展的基于微服务的模型至关重要。这意味着系统必须解决各种负载情况下的可用性和一致性的相关问题。


NMDB介绍


上面概述的用例激发了我们构建NMDB——一种通用存储,用于与媒体时间轴相关的任何分析,可用于在媒体时间轴上大规模回答时空查询。Netflix目录包含大量不同形式的媒体资产——静态资产的示例包括图像,可播放资产的示例包括音频,文本和视频。如上所述,无数业务应用程序可以从访问与这些资产相关的深入语义信息中受益。 NMDB的主要目标是提供这些应用程序所需的必要数据—我们将NMDB视为构成各种Netflix媒体处理系统主干的数据系统。


媒体时间轴数据的高效建模是NMDB的核心特征。媒体时间轴的规范表示可以支持大量用例,同时有效地解决用户查询模式。这构成了本系列下一篇文章的主题。


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 本文详细介绍了IBM DB2数据库在大型应用系统中的应用,强调其卓越的可扩展性和多环境支持能力。文章深入分析了DB2在数据利用性、完整性、安全性和恢复性方面的优势,并提供了优化建议以提升其在不同规模应用程序中的表现。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • SQL中UPDATE SET FROM语句的使用方法及应用场景
    本文详细介绍了SQL中UPDATE SET FROM语句的使用方法,通过具体示例展示了如何利用该语句高效地更新多表关联数据。适合数据库管理员和开发人员参考。 ... [详细]
  • Navicat Premium 15 安装指南及数据库连接配置
    本文详细介绍 Navicat Premium 15 的安装步骤及其对多种数据库(如 MySQL 和 Oracle)的支持,帮助用户顺利完成软件的安装与激活。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 搜索大文件(20G左右) ... [详细]
  • 非公版RTX 3080显卡的革新与亮点
    本文深入探讨了图形显卡的进化历程,重点介绍了非公版RTX 3080显卡的技术特点和创新设计。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
author-avatar
mobiledu2502912377
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有