CN117981326A - 用于基于云的视频处理的虚拟和索引装配 - Google Patents

用于基于云的视频处理的虚拟和索引装配 Download PDF

Info

Publication number
CN117981326A
CN117981326A CN202280063604.3A CN202280063604A CN117981326A CN 117981326 A CN117981326 A CN 117981326A CN 202280063604 A CN202280063604 A CN 202280063604A CN 117981326 A CN117981326 A CN 117981326A
Authority
CN
China
Prior art keywords
encoded
file
media file
portions
index
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280063604.3A
Other languages
English (en)
Inventor
苏布拉曼亚·文卡特拉夫
陈超
西里尔·康科拉托
刘小梅
阿努什·穆尔士
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netflix Inc
Original Assignee
Netflix Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/528,102 external-priority patent/US20230089154A1/en
Application filed by Netflix Inc filed Critical Netflix Inc
Priority claimed from PCT/US2022/076119 external-priority patent/WO2023049629A1/en
Publication of CN117981326A publication Critical patent/CN117981326A/zh
Pending legal-status Critical Current

Links

Abstract

各种实施例阐述了一种计算机实现的用于处理媒体文件的方法,该方法包括:接收与源媒体文件相对应的索引文件,其中,索引文件指示与源媒体文件的多个经编码部分相关联的位置信息;基于索引文件,从至少一个存储设备取回多个经编码部分中所包括的一个或多个经编码部分;以及基于一个或多个经编码部分,生成源媒体文件的经编码版本的至少一部分。

Description

用于基于云的视频处理的虚拟和索引装配
相关申请的交叉引用
本申请要求2021年9月22日提交的、序列号为63/247,235的美国临时专利申请“VIRTUAL AND INDEX ASSEMBLY FOR CLOUD-BASED VIDEO PROCESSING(用于基于云的视频处理的虚拟和索引装配)”的优先权利益,并要求2021年11月16日提交的、序列号为17/528,102的美国专利申请“VIRTUAL AND INDEX ASSEMBLY FOR CLOUD-BASED VIDEO PROCESSING(用于基于云的视频处理的虚拟和索引装配)”的优先权利益。这些相关申请的主题特此通过引用并入本文。
技术领域
各实施例一般而言涉及计算机科学和视频处理,更具体而言,涉及用于基于云的视频处理的虚拟和索引装配技术。
背景技术
典型的视频流送服务允许用户访问可以在一系列不同终端设备上观看的媒体标题的库。在运行时,给定的客户端设备在各种连接条件下连接到视频流送服务,并且因此可能受到不同的可用网络带宽的影响。为了确保给定的媒体标题可以流送到客户端设备而不出现播放中断,无论可用网络带宽如何,视频流送服务通常预先生成媒体标题的多个不同编码。例如,当可用网络带宽相对较低时,经常将“低质量”编码流送到客户端设备,而当可用网络带宽相对较高时,经常将“高质量”编码流送到客户端设备。
为了生成给定媒体标题的不同编码,视频流送服务通常经由视频编码管线(pipeline)对媒体标题进行多次编码。视频编码管线从与给定媒体标题相关联的源视频中消除不同数量的信息,以生成多个经编码视频,其中每个经编码视频与不同的比特率相关联。然后,当可用网络带宽大于或等于给定比特率时,与该比特率相关联的经编码视频就可以流送到客户端设备,而不出现或减少播放中断。然而,由于通常用于生成经编码视频的编码算法的复杂性,生成给定媒体标题的不同编码相当耗费计算量。
在一种方法中,为了生成多个经编码视频,视频流送服务利用基于云的视频处理管线。视频处理管线将给定媒体标题的源媒体文件分成多个离散部分或“分块”。每个分块可以由在不同云计算实例上执行的编码器的不同实例独立于其他分块地进行编码。因此,编码过程可以在不同的云计算实例上大体并行地执行,这减少了源媒体文件编码所需的时间。随后,装配器将不同的经编码分块组合成单一的经编码视频文件。封装器准备将经编码视频文件流送到客户端设备,例如,通过添加容器和系统层信息、添加数字版权管理(DRM)保护、或执行音频和视频多路复用。
上述基于云的视频处理管线的一个缺点是,在视频处理管线的每一级,每个云计算实例必须下载该管线级所需的输入数据,然后将生成的输出数据上传到其他云计算实例可以访问的数据存储区,这使得在后续管线级中能够访问和使用输出数据。例如,为生成经编码视频文件,装配器器必须下载多个经编码分块,将这些经编码分块组合成单个经编码视频文件,然后上传该经编码视频文件。然后,封装器需要下载该经编码视频文件,以准备将经编码视频文件流送到各种客户端设备。值得注意的是,编码器、装配器和封装器中的每一个都给视频处理管线带来开销,包括处理时间、网络带宽使用、数据下载和上传时间,而且每一个还需要存储空间来存储各自的输出数据。因此,对于较大的源媒体文件,生成多个经编码视频文件所需的开销和存储空间可能相当大。
如上所述,本领域需要更有效的技术来生成经编码视频文件。
发明内容
各个实施例提出了用于处理媒体文件的计算机实现的方法。该方法包括接收与源媒体文件相对应的索引文件,其中,索引文件指示与源媒体文件的多个经编码部分相关联的位置信息;基于索引文件,从至少一个存储设备取回多个经编码部分中所包括的一个或多个经编码部分;以及基于一个或多个经编码部分,生成源媒体文件的经编码版本的至少一部分。
与现有技术相比,所公开的技术的至少一个技术优势在于,所公开的技术减少了装配和封装多个经编码视频部分时所需的开销。在这方面,装配器将与多个经编码视频部分相关的数据合并到索引文件中,而不是将多个经编码视频部分合并到单个经编码视频文件中。因此,利用所公开的技术,装配器无需下载多个经编码视频部分,也无需上传经编码视频文件。因此,与现有技术相比,下载装配器使用的输入数据、上传装配器生成的输出数据以及将输出数据传输给封装器所需的网络带宽和时间都有所减少。此外,在存储由装配器产生的输出数据时所使用的存储空间也有所减少。与现有技术的方案相比,这些技术优势带来了一项或多项技术进步。
附图说明
为了能够详细地理解上述各实施例所叙述的特征的方式,可以参考各种实施例对上文简要概述的本发明概念进行更具体的描述,其中一些实施例在附图中进行了说明。然而,需要指出的是,附图仅说明了本发明构思的典型实施例,因此不能被视为以任何方式限制了本发明构思的范围,而是还有其他同等有效的实施例。
图1图示了被配置用于实现各种实施例的一个或多个方面的网络基础设施;
图2是根据各种实施例的图1的内容服务器的更详细的图示;
图3是根据各种实施例的图1的控制服务器的更详细的图示;
图4是根据各种实施例的图1的终端设备的更详细的图示;
图5是根据各种实施例的图1的云服务的更详细的图示;
图6图示了根据各种实施例的与经编码媒体文件相对应的示例索引;
图7A图示了根据各种实施例的与经编码媒体文件相对应的示例性聚合表示;
图7B图示了根据各种其他实施例的与经编码媒体文件相对应的另一示例性聚合表示;
图8是根据各种实施例生成与经编码媒体文件相对应的索引的方法步骤的流程图;以及
图9是根据各种实施例生成经编码媒体文件的一部分的方法步骤的流程图。
具体实施方式
在以下描述中,列出了许多具体细节,以提供对各种实施例的更透彻的理解。然而,对于本领域的技术人员而言显而易见的是,本发明的概念可以在没有一个或多个这些具体细节的情况下被实践。
概览
典型的媒体处理管线对媒体内容进行编码和封装,以供媒体播放器消费(例如,流送到不同的终端设备)或由媒体编辑工具进一步处理。然而,现有技术中用于生成封装媒体的技术可能有很大的开销和存储要求。例如,要生成经编码视频文件,编码器必须下载源媒体文件的多个分块,对每个分块进行编码,然后上传多个经编码分块。装配器需要下载多个经编码分块,将这些经编码分块组合成一个经编码视频文件,然后上传经编码视频文件。然后,封装器需要下载该经编码视频文件,以准备将经编码视频文件流送到各种客户端设备。因此,视频处理管线的每一级都带来开销,包括处理时间、网络带宽使用、数据下载和上传时间,而且每一级还需要存储空间来存储各自的输出数据。
在各种实施例中,装配器执行多个经编码分块的索引装配,而不是多个经编码分块的物理装配。装配器生成索引文件,该文件与通过组合多个经编码分块生成的单个经编码媒体文件相对应。索引文件表明多个经编码分块在云存储中的位置。此外,索引文件还标明每个经编码分块中经编码视频帧的位置。索引文件可以被其他应用(例如,封装器)用于识别并从云存储中取回多个经编码分块以进行进一步处理,而不是取回经编码媒体文件。
有利的是,与现有技术相比,使用所公开的技术可以减少装配和封装经编码媒体文件时所需的开销。例如,装配器只需获取和合并位置信息以及与多个经编码分块相关的其他元数据,并上传索引文件。装配器不需要下载和处理多个经编码视频部分,也不需要上传经编码视频文件。因此,与现有技术相比,下载装配器使用的输入数据所需的网络带宽、装配器生成输出数据所需的处理时间、存储输出数据时使用的存储空间,以及上传输出数据并将输出数据传输给封装器所需的网络带宽和时间都有所减少。
系统概览
图1图示了被配置用于实现各实施例的一个或多个方面的网络基础设施。如图所示,网络基础设施100包括一个或多个内容服务器110、控制服务器120和一个或多个终端设备115,它们连接到彼此和/或经由通信网络105连接到一个或多个云服务130。网络基础设施100一般用于向内容服务器110和终端设备115分发内容。
每个终端设备115经由网络105与一个或多个内容服务器110(也称为“缓存”或“节点”)通信,以下载内容,例如文本数据、图形数据、音频数据、视频数据和其他类型的数据。可以下载的内容(在本文中也称为“文件”)随后被呈现给一个或多个终端设备115的用户。在各种实施例中,终端设备115可以包括计算机系统、机顶盒、移动计算机、智能手机、平板设备、控制台和手持视频游戏系统、数字视频录像机(DVR)、DVD播放机、连接的数字电视(TV)、专用媒体流送设备(例如,机顶盒)和/或任何其他具有网络连通性且能够向用户呈现诸如文本、图像、视频和/或音频内容之类的内容的技术上可行的计算平台。
网络105包括在内容服务器110、控制服务器120、终端设备115、云服务130和/或其他组件之间传输数据的任何技术上可行的有线、光纤、无线或混合网络。例如,网络105可以包括广域网(WAN)、局域网(LAN)、个人区域网(PAN)、WiFi网络、蜂窝网络、以太网网络、蓝牙网络、通用串行总线(USB)网络、卫星网络和/或互联网。
每个内容服务器110可以包括一个或多个应用,这些应用被配置为与控制服务器120通信,以确定由控制服务器120跟踪和管理的各种文件的位置和可用性。每个内容服务器110可以进一步与云服务130和一个或多个其他内容服务器110通信,以为每个内容服务器110“填充”各种文件的副本。此外,内容服务器110可以对从终端设备115接收到的文件请求进行响应。然后,这些文件可以从内容服务器110或经由更广泛的内容分发网络进行分发。在一些实施例中,内容服务器110可以要求用户在访问内容服务器110上存储的文件前进行身份验证(例如,使用用户名和密码)。虽然图1中仅显示了单个控制服务器120,但在各种实施例中,可以实现多个控制服务器120以跟踪和管理文件。
在各种实施例中,云服务130可以包括在线存储服务(例如, 简单存储服务、/>云存储等),其中,文件(包括数千或数百万个文件)的目录被存储和访问,以填充内容服务器110。云服务130还可以提供计算或其他处理服务。虽然图1中仅显示了云服务130的单个实例,但在不同的实施例中,可以实现多个云服务130和/或云服务实例。
图2是内容服务器110的框图,根据各种实施例,内容服务器110可以与图1的网络基础架构一起实现。如图所示,内容服务器110包括但不限于中央处理单元(CPU)204、系统盘206、输入/输出(I/O)设备接口208、网络接口210、互连212和系统存储器214。
CPU 204被配置为取回和执行编程指令,例如存储在系统存储器214中的服务器应用217。类似地,CPU 204被配置为存储应用数据(例如,软件库),并从系统存储器214中取回应用数据。互连212被配置为促进例如CPU 204、系统盘206、I/O设备接口208、网络接口210和系统存储器214之间的数据传输,例如编程指令和应用数据。I/O设备接口208被配置为接收来自I/O设备216的输入数据,并经由互连212将输入数据传输到CPU 204。例如,I/O设备216可以包括一个或多个按钮、键盘、鼠标和/或其他输入设备。I/O设备接口208还被配置为经由互连212从CPU 204接收输出数据,并将输出数据传输至I/O设备216。
系统盘206可以包括一个或多个硬盘驱动器、固态存储设备或类似存储设备。系统盘206被配置为存储非易失性数据,例如文件218(例如,音频文件、视频文件、字幕文件、应用文件、软件库等)。然后,一个或多个终端设备115可以经由网络105取回文件218。在一些实施例中,网络接口210被配置为按照以太网标准运行。
系统存储器214包括服务器应用217,服务器应用217被配置为服务从终端设备115和其他内容服务器110接收的对一个或多个文件218的请求。当服务器应用217接收到对给定文件218的请求时,服务器应用217从系统盘206中取回所请求的文件218,并经由网络105将文件218传输到终端设备115或内容服务器110。文件218包括诸如视频文件、音频文件和/或静态图像之类的数字内容项目。此外,文件218还可以包括与此类内容项目相关联的元数据、用户/订户数据等。包括可视内容项目元数据和/或用户/订户数据的文件218可以用于促进网络基础设施100的整体功能。在可选的实施例中,部分或全部文件218也可以被替代地存储在控制服务器120中,或网络基础设施100中任何其他技术上可行的位置。
图3是控制服务器120的框图,根据各种实施例,控制服务器120可以与图1的网络基础架构100一起实现。如图所示,控制服务器120包括但不限于中央处理单元(CPU)304、系统盘306、输入/输出(I/O)设备接口308、网络接口310、互连312和系统存储器314。
CPU 304被配置为取回和执行编程指令,例如存储在系统存储器314中的控制应用317。类似地,CPU 304被配置为存储应用数据(例如,软件库),并从系统存储器314和存储在系统盘306中的数据库318中取回应用数据。互连312被配置为促进CPU 304、系统盘306、I/O设备接口308、网络接口310和系统存储器314之间的数据传输。I/O设备接口308被配置为经由互连312在I/O设备316和CPU 304之间传输输入数据和输出数据。系统盘306可以包括一个或多个硬盘驱动、固态存储设备等。系统盘306被配置为存储与内容服务器110、云服务130和文件218相关联的信息的数据库318。
系统存储器314包括控制应用317,该控制应用被配置为访问数据库318中存储的信息并处理该信息,以确定在网络基础设施100中包括的内容服务器110之间复制特定文件218的方式。控制应用317还可以被配置为接收和分析与一个或多个内容服务器110和/或终端设备115相关联的性能特征。如上所述,在一些实施例中,与此类视觉内容项目和/或用户/订户数据相关的元数据可以存储在数据库318中,而不是存储在内容服务器110中的文件218中。
图4是终端设备115的框图,根据不同的实施例,终端设备115可以与图1的网络基础架构一起实现。如图所示,终端设备115可以包括但不限于CPU 410、图形子系统412、I/O设备接口414、大容量存储单元416、网络接口418、互连422和存储器子系统430。
在一些实施例中,CPU 410被配置为取回和执行存储在存储器子系统430中的编程指令。类似地,CPU 410被配置为存储和取回驻留在存储器子系统430中的应用数据(例如,软件库)。互连422被配置为促进CPU 410、图形子系统412、I/O设备接口414、大容量存储单元416、网络接口418和存储器子系统430之间的数据传输,例如编程指令和应用数据。
在一些实施例中,图形子系统412被配置为生成视频数据帧并将视频数据帧传输到显示设备450。在一些实施例中,图形子系统412可以与CPU 410一起集成到集成电路中。显示设备450可以包括任何技术上可行的组件,用于生成图像以供显示。例如,显示设备450可以使用液晶显示(LCD)技术、阴极射线技术和发光二极管(LED)显示技术制造。I/O设备接口414被配置为接收来自用户I/O设备452的输入数据,并经由互连422将输入数据传输到CPU 410。例如,用户I/O设备452可以包括一个或多个按钮、键盘和/或鼠标或其他指向设备。I/O设备接口414还包括音频输出单元,该单元被配置为生成音频输出电信号。用户I/O设备452包括扬声器,该扬声器被配置为响应于音频输出电信号而产生声音输出。在可选的实施例中,显示设备450可以包括扬声器。本领域已知的可以显示视频帧并产生声音输出的合适设备的示例包括电视机、智能手机、智能手表、电子平板设备等。
大容量存储单元416(例如,硬盘驱动或闪存存储驱动)被配置为存储非易失性数据。网络接口418被配置为经由网络105发送和接收数据包。在一些实施例中,网络接口418被配置为使用众所周知的以太网标准进行通信。网络接口418经由互连422耦合到CPU 410。
在一些实施例中,存储器子系统430包括编程指令和应用数据,包括操作系统432、用户界面434、播放应用436和平台播放器438。操作系统432执行系统管理功能,例如管理硬件设备,包括网络接口418、大容量存储单元416、I/O设备接口414和图形子系统412。操作系统432还为用户界面434、播放应用436和/或平台播放器438提供进程和存储器管理模型。用户界面434(例如,窗口和对象隐喻)为用户与终端设备115的交互提供了一种机制。本领域技术人员将认识到本领域众所周知的各种操作系统和用户界面,这些操作系统和用户界面适合集成到终端设备115中。
在一些实施例中,播放应用436被配置为经由网络接口418从内容服务器110请求和接收内容。此外,播放应用436被配置为解释内容并经由显示设备450和/或用户I/O设备452呈现内容。在此过程中,播放应用436可以基于接收到的内容生成视频数据帧,然后将这些视频数据帧传输到平台播放器438。作为响应,平台播放器438使显示设备450输出视频数据帧,以在终端设备115上播放内容。在一个实施例中,平台播放器438被包括在操作系统432中。
基于云的视频处理
图5是根据各种实施例的图1的云服务130中包括的一个或多个视频处理管线应用的框图。如图所示,云服务130包括但不限于分块器502、编码器504、装配器506、封装器508和文件管理器510。分块器502、编码器504、装配器506、封装器508和文件管理器510中每一者的任意数量的实例可以在云计算系统或其他分布式计算环境的任意数量的计算实例(未显示)上执行。
此外,云服务130还包括和/或有权访问存储装置520。存储装置520可以包括云服务130中包括的应用和/或服务可以访问的任意数量和/或类型的存储设备,例如分块器502、装配器506、封装器508和文件管理器510。在一些实施例中,存储装置520由一个或多个基于云的存储服务提供。存储装置520可以存储云服务130的其他应用和/或服务使用和/或生成的数据。如图所示,存储装置520存储源媒体文件530、分块512、经编码分块514和索引516。
如图5所示,文件管理器510被配置为管理存储在存储装置520中的数据的访问和处理。例如,文件管理器510代表诸如分块器502、编码器504、装配器506和封装器508等应用管理向存储装置520上载数据和从存储装置520下载数据。文件管理器510从存储装置520中取回所请求的数据并将所请求的数据传输给进行请求的应用,以及从应用接收数据并将数据上传到存储装置520。
在一些实施例中,文件管理器510是一个处理者应用,它与云服务130的其他应用在同一计算实例上执行。如果应用请求存储在存储装置520中的数据,则文件管理器510从存储装置520中取回数据。在各种实施例中,文件管理器510可以将取回的数据加载为计算实例本地文件系统中的一个或多个文件。在一些实施例中,文件管理器510将对象的多个部分加载为单独的文件。例如,文件管理器510可以将每个分块512或经编码分块514挂载为单独的文件,以使得应用(例如,分块器502、编码器504、装配器506或封装器508)将每个分块512或经编码分块514识别为文件。
在一些实施例中,文件管理器510将对象的一个或多个部分挂载为代表整个对象的单个文件。例如,如下文进一步详细讨论的,文件管理器510可以将一个或多个经编码分块514挂载为单个文件,以使得应用将一个或多个经编码分块514视为单个经编码媒体文件。一个或多个经编码分块514不需要包括与源媒体文件530的经编码版本相对应的所有经编码分块。
在一些实施例中,分块器502被配置为接收媒体文件并将媒体文件划分为多个离散部分或分块。如图5所示,文件管理器510从存储装置520中取回源媒体文件530并将源媒体文件530传输给分块器502。分块器502接收源媒体文件530并将源媒体文件530分成分块512。在各种实施例中,分块器502可以使用任何技术上可行的技术将文件或媒体文件划分为离散的部分以生成分块512。例如,分块器502可以确定源媒体文件530中包括的帧数,并将源媒体文件530划分成分块512,使得每个分块包括的帧数与其他分块相同或相似。另一个示例是,分块器502可以识别源媒体文件530中包括的场景数量,并将源媒体文件530划分成分块512,使得每个分块对应不同的场景。在一些实施例中,生成分块512后,分块器502将分块512上传到存储装置520。如图5所示,为将分块512上传到存储装置520,分块器502将分块512传输到文件管理器510,然后文件管理器510将分块存储到存储装置520。在其他实施例中,分块器502将分块512传输到在一个或多个不同计算实例上执行的编码器504的一个或多个实例。
在一些实施例中,编码器504被配置为对媒体文件(例如,源媒体文件530或分块512)执行一个或多个编码操作,以生成经编码媒体文件。如图5所示,文件管理器510从存储装置520中取回分块512并将分块512传输至编码器504。虽然图5中示出了是编码器504的单个实例,但文件管理器510可以将包括在分块512中的任意数量的分块传输到在任意数量的计算实例上执行的任意数量的编码器504的实例。例如,编码器504的每个实例可以接收分块512中所包括的分块的不同子集。
编码器504接收分块512并对每个分块512执行一个或多个编码操作以生成相应的经编码分块514。编码器504可以使用任何技术上可行的(一个或多个)编码操作对分块512进行编码。在一些实施例中,编码器504使用多种不同的编码配置对一组分块512进行编码,以生成多组经编码分块514。例如,编码器504可以使用第一编码配置对分块512进行编码以生成第一组经编码分块514,并使用第二编码配置对分块512进行编码以第二组生成经编码分块514。每组经编码分块514都是源媒体文件530的不同编码。在一些实施例中,在生成经编码分块514后,编码器504将经编码分块514上传到存储装置520。如图5所示,为了将经编码分块514上传到存储装置520,编码器504将经编码分块514传输到文件管理器510,文件管理器510将经编码分块存储到存储装置520。在其他实施例中,编码器504将经编码分块514传输到在一个或多个计算实例上执行的装配器506的一个或多个实例。
如上所述,装配器通常将经编码分块514组合到单个经编码媒体文件中,在本文中被称为经编码分块514的物理装配。但是,在将经编码分块514物理装配成单个经编码媒体文件时,装配器必须从存储装置520接收或取回经编码分块514、处理经编码分块514以生成经编码媒体文件,并将经编码媒体文件上传到存储装置520。为了准备将经编码媒体文件流送到客户端设备或视频编辑应用,封装器必须从存储装置520下载经编码媒体文件。因此,下载经编码分块514、上传经编码媒体文件以及随后下载经编码媒体文件占用大量网络资源。
虚拟和索引文件装配
为了解决上述问题,云服务130包括装配器506,该装配器被配置为执行索引装配而非物理装配、或者除物理装配外还执行索引装配。如本文所述,索引装配是指组合与经编码分块514相关联的元数据以生成索引516,该索引与本应通过物理装配经编码分块514而生成的经编码媒体文件相对应。索引文件可以由其他应用(例如,封装器508或文件管理器510)使用,以识别和取回给定媒体标题或源媒体文件的经编码分块514。在一些实施例中,封装器508被配置为对一个或多个经编码分块514执行虚拟装配,以生成封装媒体518。本文所称的虚拟装配指的是一次性装配和封装一组经编码分块514,而不是在封装前组合或串联该组经编码分块514。例如,封装器508可以被配置为取回一个或多个经编码分块514,处理该组经编码分块514中包括的一个或多个经编码分块以生成部分输出,然后重复取回和处理,直到该组经编码分块514中的所有经编码分块被处理完毕。在一些实施例中,诸如文件管理器510之类的应用被配置为处理该组经编码分块514的下载。该应用生成该组经编码分块514的表示,该表示被另一个应用(例如,封装器508)感知为单个经编码媒体文件,而无需首先组合或串联该组经编码分块514。
在一些实施例中,索引516是一个索引文件,它为每个经编码分块514指示该经编码分块514在存储装置520中的位置。此外,每个经编码分块514对应于源媒体文件530中包括的多个帧。对于多个帧中的每个帧,索引指示经编码分块514内相应经编码帧的位置,例如与该帧相关联的偏移和与该帧相对应的数据的大小。在一些实施例中,如果经编码分块514包括头部,则该索引指示头部在经编码分块514中的位置,例如与头部相关联的偏移和与头部相对应的数据的大小。在一些实施例中,经编码分块514的多个帧被组织成多个图片小组。每个图片小组包括必须一起解码的多个帧的子集(即,作为一个小组)。索引516指示多个图片小组的顺序,并且对于每个图片小组,指示该图片小组中包括的帧的数量、该图片小组中包括哪些帧以及与一个或多个帧相关联的顺序。
在一些实施例中,为生成索引516,装配器506针对给定源媒体文件530识别与该给定源媒体文件530相对应的一组经编码分块514。装配器506确定该组经编码分块514中包括的每个经编码分块的位置。装配器506生成索引516,该索引指示每个经编码分块的位置。在一些实施例中,索引516与源媒体文件530的特定编码相对应。装配器506可以从多组经编码分块514中识别出与源媒体文件530的特定编码相对应的一组经编码分块514,其中每组经编码分块514与源媒体文件530的不同编码相对应。索引516可以指示特定编码和/或与特定编码相关联地进行存储。例如,索引516可以具有指示特定编码的文件名。另一个示例是,索引516可以存储在存储装置520的数据库中,该数据库将索引516与特定编码相关联。在一些实施例中,索引516与源媒体文件530的多种编码相对应。例如,索引516可以指示与源媒体文件530相对应的一组经编码分块514的位置。此外,索引516还可以指示每组经编码分块514的编码信息。
在各种实施例中,装配器506请求、接收和/或生成每个经编码分块514的位置信息。例如,位置信息包括经编码分块514中包括的帧的位置、经编码分块514中包括的头部和/或经编码分块514中包括的一个或多个图片小组。装配器506生成索引516,该索引包括与每个经编码分块514相关的位置信息。此外,装配器506还可以生成指示经编码分块514的顺序的信息和/或根据经编码分块514的顺序组织经编码分块514的位置信息。
在一些实施例中,每个经编码分块514的位置信息包括与经编码分块514相对应的索引。例如,该索引指示经编码分块514中包括的一个或多个帧的位置、每个帧的大小、经编码分块514的头部的位置、经编码分块514的头部的大小、经编码分块514中包括的一个或多个图片小组、和/或每个图片小组中包括的一个或多个帧。在一些实施例中,另一个应用或服务为经编码分块514生成索引,装配器506从存储装置520中取回索引,从应用或服务接收索引,和/或从文件管理器510请求索引。在一些实施例中,装配器506接收经编码分块514并基于经编码分块514生成索引。
在一些实施例中,编码器504在生成经编码分块514后或与生成经编码分块514一同生成与经编码分块514相对应的索引。在一些实施例中,为了生成经编码分块514的索引,编码器504确定经编码分块514中所包括的一组帧,以及对于每个帧,该帧在经编码分块514中的位置(例如,偏移量)。编码器504确定编码数据块514是否包括头部。如果经编码分块514包括头部,则编码器504确定头部的位置和/或大小。此外,编码器504还确定经编码分块514是否包括一组或多个图片小组。如果经编码分块514包括一组或多个图片小组,则编码器504确定每个图片小组中包括的帧。
在一些实施例中,编码器504被配置为基于经编码分块514的媒体文件格式(例如AVC、HEVC、VP9、AV1、PRORES、MPG2、MPG4等)确定与经编码分块514对应的结构。经编码分块514中包括的具体元素和/或经编码分块514内包括的元素的组织方式可以根据给定的文件格式而有所不同。例如,第一种文件格式可以包括头部,而另一种文件格式则不包括头部。再比如,第三种文件格式可以包括图片小组,而第四种文件格式不包括图片小组。编码器504被配置为基于经编码分块514的文件格式确定经编码分块514中包括什么类型的信息以及如何提取该信息。例如,编码器504可以确定经编码分块514采用的文件格式包括位于文件开头部分(例如,偏移0)的头部,并且对于该文件格式,头部包括指示一组或多组经编码帧的位置的元数据。作为响应,编码器504确定经编码分块514包括偏移0处的头部,然后基于头部中指示的位置确定经编码分块514中包括的帧的位置。另一示例是,编码器504可以确定编码数据块514是不包括任何结构信息的文件格式。对此,编码器504解析或以其他方式分析经编码分块514中包含的数据,以识别经编码分块514中包括的每个帧以及与该帧相对应的数据内的位置。编码器504可以使用任何技术上可行的技术来从经编码分块514中识别和提取信息。用于从经编码分块514中识别和提取信息的特定技术也可以根据经编码分块514的文件格式而有所不同。
基于从经编码分块514提取的信息,编码器504生成索引,该索引指示包括在该组帧中的帧、帧的顺序、帧的位置和帧的大小。如果经编码分块514包括头部,索引还包括头部的位置和/或头部的大小。如果经编码分块514包括一个或多个图片小组,则索引还包括一组或多个图片小组、一个或多个图片小组的顺序以及每个图片小组中包括的帧。此外,索引还可以包括与经编码分块514、头部、该组帧和/或该一个或多个图片小组相关联的其他元数据。例如,索引可以包括指示与经编码分块514相关联的标识符或序列号的元数据。又如,索引可以指示与每个帧相关联的帧号。
图6示出了根据各种实施例的与经编码媒体文件相对应的示例性索引。如图6所示,一组索引610(1)-610(N)对应于一组经编码分块602(1)-602(N)。对于1到N的整数x,每个索引610(x)包括但不限于头部612(x)、图片小组614(x)和帧616(x)(1)-616(x)(M)。在其他实施例中,每个索引610(x)可以包括比图6所示更多或更少的元素。例如,对于一些文件格式的经编码分块602(1)-602(N),相应的索引610(1)-610(N)不包括头部612(1)-612(N)。作为另一个示例,每个索引610(x)可以包括不同数量的图片小组,也可以不包括任何图片小组,和/或每个图片小组可以包括不同数量的帧。
在一些实施例中,头部612(x)指示与相应经编码分块602(x)的头部相关联的位置信息,例如与头部相关联的偏移值和头部的大小。此外,头部612(x)可以包括与头部和/或经编码分块602相关联的其他元数据,例如经编码分块602在存储装置520中的位置(例如,统一资源指示符)。
在一些实施例中,图片小组614(x)指示与相应的经编码分块602(x)中包括的图片小组相关联的位置信息,例如与图片小组相关联的偏移值和图片小组的大小。在一些实施例中,图片小组614(x)指示与图片小组相关联的结构信息,例如图片小组中包括的帧的数量、与图片小组中包括的一个或多个帧相对应的(一个或多个)标识符、图片小组中包括的帧的顺序等。
在一些实施例中,帧616(x)(1)-616(x)(M)中包括的每个帧指示与经编码分块602(x)中包括的相应帧相关联的位置信息,例如与相应帧相关联的偏移值和相应帧的大小。此外,帧616(x)(1)-616(x)(M)中包括的每个帧可以包括与相应帧相关联的其他元数据,例如相应帧的序列号或其他标识符。
在一些实施例中,生成索引后,编码器504将索引上传到存储装置520。当生成索引516时,装配器506从存储装置520接收或取回索引。在其他实施例中,编码器504将索引传输到在一个或多个计算实例上执行的装配器506的一个或多个实例。在其他实施例中,装配器506接收或取回经编码分块514,并为每个经编码分块514生成与经编码分块相对应的索引。装配器506生成索引516,该索引包括与每个经编码分块514对应的索引中所包括的信息。
在一些实施例中,装配器506接收或取回经编码分块514并从每个经编码分块中提取位置信息。装配器506生成包括提取的位置信息的索引516。从经编码分块中提取位置信息和/或生成与经编码分块相对应的索引的方式与上文关于编码器504讨论的方式类似。
参考图6,装配器506确定源媒体文件的给定经编码版本对应于经编码分块602(1)-602(N)。装配器506接收和/或生成与经编码分块602(1)-602(N)相对应的索引610(1)-610(N)。装配器506将包括在索引610(1)-601(N)中的数据组合来生成合并索引620。如图6所示,合并索引620包括头部612(1)-(N)、图片小组614(1)-(N),以及相应的帧616(1)(1)-616(N)(M)。虽然图6基于索引610(1)-(N)的顺序说明了合并索引620中包括的位置信息,但合并索引620中包括的位置信息可以任意多种方式组织和/或分组。
在一些实施例中,封装器508被配置为接收一个或多个经编码分块并封装一个或多个经编码分块以生成封装媒体文件。封装器508从文件管理器510请求与源媒体文件530对应的索引516,从装配器506接收索引516,和/或从存储装置520取回索引516。封装器508基于索引516确定与源媒体文件530相对应的一个或多个经编码分块514的位置。封装器508基于确定的一个或多个经编码分块514的位置,从存储装置520取回一个或多个经编码分块514,或从文件管理器510请求一个或多个经编码分块514。例如,封装器508可以向文件管理器510发送请求,以取回确定位置处的文件。封装器508接收一个或多个经编码分块514并执行一个或多个封装操作,将一个或多个经编码分块514封装到封装媒体518中。例如,一个或多个封装操作可以包括多路复用音频和视频、添加数字版权管理(DRM)保护、添加容器层信息、添加系统层信息等。
在一些实施例中,封装器508被配置为接收经编码媒体文件并封装经编码媒体文件以生成封装媒体文件。封装器508向文件管理器510发送与源媒体文件530相对应的经编码媒体文件的请求。文件管理器510例如通过确定存储装置520中存储了物理文件还是索引文件,来确定经编码媒体文件已被物理装配还是索引装配。如果存储装置520中存储了与经编码媒体文件相对应的物理文件,则文件管理器510取回物理文件并将物理文件传输给封装器508。
如果存储装置520中存储了与经编码媒体文件相对应的索引文件,则文件管理器510取回索引文件并确定与经编码媒体文件相对应的一个或多个经编码分块514的位置。文件管理器510基于确定的位置从存储装置520中取回一个或多个经编码分块514,并生成包括一个或多个经编码分块514的经编码媒体文件的聚合表示540。在一些实施例中,聚合表示540是一组文件,其中每个文件对应于一个或多个经编码分块514中包括的不同经编码分块。在一些实施例中,聚合表示540是包括一个或多个经编码分块514的单个文件。封装器508接收一个或多个文件的组的聚合表示540,并与封装整个经编码媒体文件类似地将聚合表示540封装。
在一些实施例中,文件管理器510的实例与封装器508在同一计算实例上执行。基于一个或多个经编码分块514生成和传输聚合表示540包括将一个或多个块514挂载为计算实例的本地文件系统中的一个或多个文件。封装器508从计算实例的本地文件系统访问一个或多个文件。
图7A示出了基于各种实施例的基于图6的合并索引620生成的示例性聚合表示710。如图7A所示,聚合表示710响应于对经编码媒体文件的请求702而生成。基于合并索引620中指示的位置信息,文件管理器510确定哪些经编码分块与经编码媒体文件相对应以及这些经编码分块的位置。文件管理器510从存储装置520中取回经编码分块602(1)-602(N),并生成包括经编码分块602(1)-602(N)的聚合表示710。聚合表示710被提供给封装器508,就好像它是被请求的经编码媒体文件。封装器508可以随后处理和封装聚合表示710,以生成封装媒体518。
在一些实施例中,封装器508请求经编码分块514中包括的一个或多个特定经编码分块514。文件管理器510确定一个或多个特定经编码分块514的位置并取回一个或多个特定经编码分块514。文件管理器510生成包括该一个或多个特定经编码分块514的聚合表示540。
在一些实施例中,封装器508请求经编码媒体文件的特定部分,例如经编码媒体文件中包括的帧的范围。文件管理器510基于索引516确定与所请求的经编码媒体文件部分相对应的一个或多个经编码分块514。例如,如果封装器508请求帧的范围,则文件管理器510确定哪些经编码分块514包含包括在该帧的范围内的帧。文件管理器510基于索引516确定与所请求的经编码媒体文件部分相对应的每个经编码分块514的位置,并从存储装置520中取回经编码分块514。文件管理器510生成包括该一个或多个经编码分块514的聚合表示540。
在一些实施例中,文件管理器510识别与所请求的经编码媒体文件部分相对应的每个经编码分块514的一个或多个部分,并选择一个或多个部分以包括在聚合表示540中。例如,如果所请求的经编码媒体文件的部分仅包括经编码分块514中包括的帧的子集,则文件管理器510可以从经编码分块514中提取该帧的子集。此外或替代地,或在一些实施例中,文件管理器510不包括经编码分块514中与请求部分不对应的一个或多个部分,或从聚合表示540中移除该一个或多个部分。例如,文件管理器510可以识别经编码分块514中包括的图片小组,该图片小组包括与请求的帧的范围相对应的帧。但是,该图片小组还可能包括一个或多个未包括在所请求的帧的范围内的帧。文件管理器510可以在生成聚合表示540时对不包括在所请求的帧范围内的一个或多个帧进行修剪。
图7B示出了基于各种实施例的基于图6的合并索引620生成的另一示例性聚合表示730。如图7B所示,聚合表示730响应于对经编码媒体文件的一个或多个帧的请求720而生成。基于合并索引620中指示的位置信息,文件管理器510确定哪些经编码分块对应于所请求的经编码媒体文件的帧以及这些经编码分块的位置。文件管理器510从存储装置520中取回一个或多个经编码分块。此外,基于合并索引620中指示的位置信息,文件管理器510确定图片小组614(P)-614(Q)包括所请求的经编码媒体文件的帧,并从一个或多个经编码分块中提取图片小组614(P)-614(Q)。文件管理器510生成包括图片小组614(P)-614(Q)的聚合表示730。聚合表示730被提供给封装器508,就好像它是一个经编码媒体文件。封装器508可以随后处理和封装聚合表示730,以生成封装媒体518。
文件管理器510生成聚合表示540并将聚合表示540传输给封装器508的一个好处是,封装器508无需区分物理装配的媒体文件和索引装配的媒体文件。由于封装器508将聚合表示540视为经编码媒体文件,因此封装器508可以以类似于经物理编码媒体文件的方式封装聚合表示540。封装器508无需重新配置以利用索引516或在对经索引装配的媒体文件进行封装时以不同方式操作。此外,封装器508无需管理多个不同文件或文件部分(例如,索引和不同的经编码分块)的下载。
图8是根据各种实施例的生成与经编码媒体文件相对应的索引的方法步骤的流程图。尽管这些方法步骤参照图1-图5的系统进行了描述,但本领域技术人员将理解,经配置以任何顺序实现方法步骤的任何系统均落入本发明的范围。
如图8所示,方法800在步骤802开始,其中装配器506识别对应于媒体标题的多个经编码分块514。在一些实施例中,装配器506基于在存储装置520中识别与媒体标题的经编码版本相对应的多个文件部分来识别多个经编码分块514。例如,经编码分块514可以存储为“title1.264”、“title2.264”、“title3.264”等。
如果经编码分块不包括头部,则方法进入步骤806。如果经编码分块包括头部,则在步骤804,装配器506针对包括在多个经编码分块514中的每个经编码分块,确定与包括在经编码分块中的头部相关联的位置信息。位置信息例如包括与头部相对应的偏移值和头部在经编码分块内的大小。
在步骤806,针对包括在多个经编码分块514中的每个经编码分块,装配器506确定与包括在经编码分块中的一个或多个帧相关联的位置信息。位置信息包括例如与每个帧对应的偏移值和经编码分块内的帧的大小。
在一些实施例中,确定与经编码分块514中包括的一个或多个帧相关联的位置信息包括取回或接收与经编码分块514相对应的索引。装配器506基于索引中包括的信息识别经编码分块514中包括的一个或多个帧以及每个帧的位置信息。
在一些实施例中,确定与经编码分块514中包括的一个或多个帧相关联的位置信息包括取回或接收经编码分块514和分析经编码分块514以确定经编码分块514内每个帧的位置。例如,装配器506可以基于经编码分块514的头部中包括的信息确定帧的位置。再比如,装配器506可以通过读取经编码分块514中包括的数据来确定每个帧的位置。
在一些实施例中,确定与经编码分块514中包括的一个或多个帧相关联的位置信息包括识别经编码分块514中包括的一个或多个图片小组。每个图片小组包括经编码分块514中包括的帧的子集。装配器506为每个图片小组确定图片小组中包括的帧的子集。此外,在一些实施例中,装配器506可以为每个图片小组确定与该图片小组相关联的位置信息。例如,位置信息可以包括与图片小组相对应的偏移值和图片小组在经编码分块内的大小。
在步骤808,装配器506基于与每个经编码分块中包括的一个或多个帧相关联的位置信息,以及可以选地,与每个经编码分块中包括的头部相关联的位置信息,生成索引516。索引516指示每个经编码分块的位置和每个经编码分块中包括的元素的位置。在一些实施例中,装配器506通过合并与一个或多个经编码分块514相对应的一个或多个索引文件中包含的信息来生成索引516。索引516表示如果将一个或多个经编码分块514物理地装配到单个文件中则会形成的经编码媒体文件。
在步骤810,装配器506将索引516传输到存储设备,例如存储装置520。在一些实施例中,存储装置520将索引516与经编码媒体文件关联。当应用请求经编码媒体文件时,索引516转而被从存储装置520中识别并取回。
图9是根据各种实施例使用索引生成经编码媒体文件的一部分的方法步骤流程图。尽管参照图1-图5的系统描述了方法步骤,但本领域技术人员将理解,经配置以任何顺序实现方法步骤的任何系统均落入本发明的范围。
如图9所示,方法900在步骤902开始,其中文件管理器510接收来自应用对于下载与媒体标题的经编码版本相对应的经编码媒体文件的请求。在一些实施例中,请求指定了特定编码。在一些实施例中,请求指定经编码媒体文件的一个或多个部分,例如一个或多个特定经编码分块、一个或多个特定帧或帧的一个或多个范围。
在步骤904,文件管理器510从存储装置520中取回与经编码媒体文件相对应的合并索引516。在一些实施例中,多个合并索引516与媒体标题相对应,其中每个索引516与媒体标题的不同编码相对应。文件管理器510识别并取回与请求相对应的特定索引516。在一些实施例中,来自应用的请求指定和/或包括索引516。
在步骤906,文件管理器510基于合并索引516取回一个或多个经编码分块。合并索引516指示与所请求的经编码媒体文件相对应的一个或多个经编码分块以及每个经编码分块的位置。文件管理器510基于合并索引516所指示的位置取回一个或多个经编码分块。在一些实施例中,合并索引516指示与媒体标题相对应的经编码分块的多个集,其中经编码分块的每个集对应于媒体标题的不同编码。文件管理器510基于合并索引516识别与所请求的经编码媒体文件对应的一组经编码分块,并取回该组经编码分块。
在一些实施例中,来自应用的请求指定了经编码媒体文件的一个或多个部分。文件管理器510确定与经编码媒体文件的指定部分相对应的一个或多个经编码分块。例如,如果请求指定一个或多个帧,则文件管理器510基于合并索引516确定包括一个或多个帧的一个或多个经编码分块,并取回一个或多个经编码分块。
在步骤908,文件管理器510生成包括一个或多个经编码分块的聚合表示540。在一些实施例中,如果来自应用的请求指定了经编码媒体文件的一个或多个部分,则文件管理器510生成包括与经编码媒体文件的指定部分相对应的一个或多个经编码分块的部分的聚合表示540。例如,文件管理器510可以只包括每个经编码分块中与请求相对应的图片的(一个或多个)帧和/或(一个或多个)小组。在一些实施例中,文件管理器510基于请求从聚合表示540的前端或末端修剪一个或多个帧。
在步骤910,文件管理器510将聚合表示540传输到应用。在一些实施例中,文件管理器510通过将聚合表示540作为一个或多个文件挂载在计算实例的本地文件系统上,将聚合表示540传输给应用,在该计算实例上执行应用或其实例。应用通过访问计算实例的本地文件系统上的文件来接收聚合表示540。
总之,基于云的视频处理管线能够高效处理媒体文件。基于云的视频处理管线包括分块器、编码器、装配器和封装器。分块器将源媒体文件分成多个块,编码器对多个块进行编码以生成多个经编码分块。装配器确定与每个经编码分块相关联的位置信息,并将位置信息装配到经编码媒体文件的索引表示中。在一些实施例中,封装器接收索引表示,并基于索引表示中包括的位置信息下载多个经编码分块。封装器将多个经编码分块封装成单个封装媒体文件。在一些实施例中,文件管理应用接收索引表示,并基于索引表示中包括的位置信息下载多个经编码分块。文件管理应用将多个经编码分块作为对应于多个经编码分块的一个或多个文件呈现给封装器。
相对于现有技术,所公开技术的至少一个技术优势在于,所公开技术减少了装配和封装多个经编码视频部分时所需的开销。在这方面,装配器将与多个经编码视频部分相关联的数据合并到索引文件中,而不是将多个经编码视频部分合并到单个经编码视频文件中。因此,利用所公开的技术,装配器无需下载多个经编码视频部分,也无需上传经编码视频文件。因此,与现有技术相比,下载装配器使用的输入数据、上传装配器产生的输出数据以及将输出数据传输给封装器所需的网络带宽和时间都有所减少。此外,在存储由装配器产生的输出数据时所使用的存储空间也有所减少。与现有技术方案相比,这些技术优势带来了一项或多项技术进步。
1.在一些实施例中,一种计算机实现的用于处理媒体文件的方法,该方法包括:接收与源媒体文件相对应的索引文件,其中,所述索引文件指示与所述源媒体文件的多个经编码部分相关联的位置信息;基于所述索引文件,从至少一个存储设备取回所述多个经编码部分中所包括的一个或多个经编码部分;以及基于所述一个或多个经编码部分,生成所述源媒体文件的经编码版本的至少一部分。
2.根据条款1所述的方法,其中,所述位置信息为所述多个经编码部分中所包括的每个经编码部分指定该经编码部分在所述至少一个存储设备内的位置。
3.根据条款1或2所述的方法,其中,所述位置信息为所述多个经编码部分中所包括的每个经编码部分指定该经编码部分内与该经编码部分的头部相对应的位置。
4.根据条款1到3中任一项所述的方法,其中,所述位置信息为所述多个经编码部分中所包括的每个经编码部分指定该经编码部分内与该经编码部分中所包括的每个经编码帧相对应的不同位置。
5.根据条款1到4中任一项所述的方法,其中,所述位置信息为所述多个经编码部分中所包括的每个经编码部分指定该经编码部分中所包括的一个或多个帧小组,以及为所述一个或多个帧小组中所包括的每个帧小组指定被包括在该帧小组中的一个或多个经编码帧。
6.根据条款1到5中任一项所述的方法,还包括从应用接收对于所述源媒体文件的经编码版本的请求,其中,响应于所述请求,所述一个或多个经编码部分被取回,并且所述源媒体文件的经编码版本的至少一部分被生成。
7.根据条款1到6中任一项所述的方法,其中,取回所述一个或多个经编码部分包括基于所述请求从所述多个经编码部分中选择所述一个或多个经编码部分。
8.根据条款1到7中任一项所述的方法,还包括:将所述源媒体文件的经编码版本的至少一部分传输到所述应用以进行播放。
9.根据条款1到8中任一项所述的方法,还包括:将所述源媒体文件的经编码版本的至少一部分存储为所述应用可访问的文件系统内的经编码媒体文件。
10.根据条款1到9中任一项所述的方法,还包括:处理所述源媒体文件的经编码版本的至少一部分,来生成经封装的媒体文件,以供传输到一个或多个客户端设备。
11.在一些实施例中,一种或多种非暂态计算机可读介质,存储有指令,所述指令当被一个或多个处理器执行时,使所述一个或多个处理器执行以下步骤:接收与源媒体文件相对应的索引文件,其中,所述索引文件包括与所述源媒体文件的多个经编码部分相关联的位置信息;基于所述索引文件,从至少一个存储设备取回所述多个经编码部分中所包括的一个或多个经编码部分;以及基于所述一个或多个经编码部分,生成所述源媒体文件的经编码版本的至少一部分。
12.根据条款11所述的一种或多种非暂态计算机可读介质,其中,所述位置信息为所述多个经编码部分中所包括的每个经编码部分指定该经编码部分在所述至少一个存储设备内的位置。
13.根据条款11或12所述的一种或多种非暂态计算机可读介质,其中,所述位置信息为所述多个经编码部分中所包括的每个经编码部分指定该经编码部分内与该经编码部分的头部相对应的位置。
14.根据条款11到13中任一项所述的一种或多种非暂态计算机可读介质,其中,所述位置信息为所述多个经编码部分中所包括的每个经编码部分指定该经编码部分内与该经编码部分中所包括的每个经编码帧相对应的不同位置。
15.根据条款11到14中任一项所述的一种或多种非暂态计算机可读介质,其中,所述位置信息为所述多个经编码部分中所包括的每个经编码部分指定该经编码部分中所包括的一个或多个帧小组,以及为所述一个或多个帧小组中所包括的每个帧小组指定被包括在该帧小组中的一个或多个经编码帧。
16.根据条款11到15中任一项所述的一种或多种非暂态计算机可读介质,还包括:从应用接收对于所述源媒体文件的经编码版本的请求,其中,所述索引文件响应于所述请求而被取回。
17.根据条款11到16中任一项所述的一种或多种非暂态计算机可读介质,还包括:从应用接收对于所述源媒体文件的经编码版本的请求,其中,取回所述一个或多个经编码部分包括:基于所述请求从所述多个经编码部分中选择所述一个或多个经编码部分。
18.根据条款11到17中任一项所述的一种或多种非暂态计算机可读介质,其中,所述请求指定所述源媒体文件中所包括的一个或多个帧,并且从所述多个经编码部分中选择所述一个或多个经编码部分包括:基于所述索引文件确定所述一个或多个经编码部分与所述一个或多个帧相对应。
19.根据条款11到18中任一项所述的一种或多种非暂态计算机可读介质,还包括:从应用接收对于所述源媒体文件的经编码版本的请求,其中,所述请求指定所述源媒体文件的经编码版本的至少一部分,并且响应于所述请求,所述一个或多个经编码部分被取回,并且所述源媒体文件的经编码版本的至少一部分被生成。
20.在一些实施例中,一种系统,包括:一个或多个存储器,存储有指令;以及一个或多个处理器,所述处理器耦合到所述一个或多个存储器,并在执行所述指令时执行以下步骤:接收与源媒体文件相对应的索引文件,其中,所述索引文件包括与所述源媒体文件的多个经编码部分相关联的位置信息;基于所述索引文件,从至少一个存储设备取回所述多个经编码部分中所包括的一个或多个经编码部分;以及基于所述一个或多个经编码部分,生成所述源媒体文件的经编码版本的至少一部分。
在本申请的任何权利要求和/或本申请中描述的任何要素中,以任何方式叙述的任何权利要求要素的任何和所有组合均属于本发明和保护的预期范围。
已经为了说明的目而呈现了对各种实施例的描述,但这些描述并不打算是详尽无遗的或限于所公开的实施例。在不偏离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员来说是明显的。
本发明实施例的各个方面可以体现为系统、方法或计算机程序产品。因此,本公开的各方面可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或结合软件和硬件方面的实施例的形式,所有这些在本文中通常可以称为“模块”、“系统”或“计算机”。此外,本公开中描述的任何硬件和/或软件技术、过程、功能、组件、引擎、模块或系统都可以作为电路或一组电路来实现。此外,本公开的各个方面可以采用体现在一个或多个计算机可以读介质中的计算机程序产品的形式,一个或多个计算机可以读介质上体现有计算机可以读程序代码。
可以使用一种或多种计算机可以读介质的任意组合。计算机可以读介质可以是计算机可读信号介质或计算机可读存储介质。例如,计算机可读存储介质可以是(但不限于):电子、磁性、光学、电磁、红外或半导体系统、装置或设备、或上述介质的任何适当组合。计算机可以读存储介质的更具体示例(非详尽清单)包括以下内容:具有一根或多根导线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可以擦除可以编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或上述设备的任何适当组合。在本文档的上下文中,计算机可以读存储介质可以是任何有形介质,该介质能够包含或存储程序,以供指令执行系统、装置或设备使用或与之相连接。
上文参照根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图描述了本公开的各个方面。可以理解的是,流程图图示和/或框图中的每个框以及流程图图示和/或框图中的框的组合可以通过计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可以编程数据处理设备的处理器,以产生一台机器。这些指令经由计算机或其他可以编程数据处理设备的处理器执行时,可以实现流程图和/或框图的一个或多个框中指定的功能/动作。这些处理器可以是但不限于通用处理器、专门处理器、专用处理器或现场可编程门阵列。
图中的流程图和框图说明了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。在这方面,流程图或框图中的每个框可以表示代码的模块、片段或部分,其中包括用于实现(一个或多个)指定逻辑功能的一个或多个可以执行指令。还应注意的是,在某些替代实施方案中,框中标注的功能可以不按图中标注的顺序出现。例如,连续显示的两个框实际上可能基本上是同时执行的,或者框有时可能以相反的顺序执行,这取决于所涉及的功能。还需要指出的是,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或行为的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。
虽然前文针对的是本公开的实施例,但在不脱离其基本范围的情况下,还可以设计出本公开的其他和进一步的实施例,其范围由所附权利要求书确定。

Claims (20)

1.一种计算机实现的用于处理媒体文件的方法,该方法包括:
接收与源媒体文件相对应的索引文件,其中,所述索引文件指示与所述源媒体文件的多个经编码部分相关联的位置信息;
基于所述索引文件,从至少一个存储设备取回所述多个经编码部分中所包括的一个或多个经编码部分;以及
基于所述一个或多个经编码部分,生成所述源媒体文件的经编码版本的至少一部分。
2.根据权利要求1所述的方法,其中,所述位置信息为所述多个经编码部分中所包括的每个经编码部分指定该经编码部分在所述至少一个存储设备内的位置。
3.根据权利要求1所述的方法,其中,所述位置信息为所述多个经编码部分中所包括的每个经编码部分指定该经编码部分内与该经编码部分的头部相对应的位置。
4.根据权利要求1所述的方法,其中,所述位置信息为所述多个经编码部分中所包括的每个经编码部分指定该经编码部分内与该经编码部分中所包括的每个经编码帧相对应的不同位置。
5.根据权利要求1所述的方法,其中,所述位置信息为所述多个经编码部分中所包括的每个经编码部分指定该经编码部分中所包括的一个或多个帧小组,以及为所述一个或多个帧小组中所包括的每个帧小组指定被包括在该帧小组中的一个或多个经编码帧。
6.根据权利要求1所述的方法,还包括从应用接收对于所述源媒体文件的经编码版本的请求,其中,响应于所述请求,所述一个或多个经编码部分被取回,并且所述源媒体文件的经编码版本的至少一部分被生成。
7.根据权利要求6所述的方法,其中,取回所述一个或多个经编码部分包括基于所述请求从所述多个经编码部分中选择所述一个或多个经编码部分。
8.根据权利要求6所述的方法,还包括:将所述源媒体文件的经编码版本的至少一部分传输到所述应用以进行播放。
9.根据权利要求6所述的方法,还包括:将所述源媒体文件的经编码版本的至少一部分存储为所述应用可访问的文件系统内的经编码媒体文件。
10.根据权利要求1所述的方法,还包括:处理所述源媒体文件的经编码版本的至少一部分,来生成经封装的媒体文件,以供传输到一个或多个客户端设备。
11.一种或多种非暂态计算机可读介质,存储有指令,所述指令当被一个或多个处理器执行时,使所述一个或多个处理器执行以下步骤:
接收与源媒体文件相对应的索引文件,其中,所述索引文件包括与所述源媒体文件的多个经编码部分相关联的位置信息;
基于所述索引文件,从至少一个存储设备取回所述多个经编码部分中所包括的一个或多个经编码部分;以及
基于所述一个或多个经编码部分,生成所述源媒体文件的经编码版本的至少一部分。
12.根据权利要求11所述的一种或多种非暂态计算机可读介质,其中,所述位置信息为所述多个经编码部分中所包括的每个经编码部分指定该经编码部分在所述至少一个存储设备内的位置。
13.根据权利要求11所述的一种或多种非暂态计算机可读介质,其中,所述位置信息为所述多个经编码部分中所包括的每个经编码部分指定该经编码部分内与该经编码部分的头部相对应的位置。
14.根据权利要求11所述的一种或多种非暂态计算机可读介质,其中,所述位置信息为所述多个经编码部分中所包括的每个经编码部分指定该经编码部分内与该经编码部分中所包括的每个经编码帧相对应的不同位置。
15.根据权利要求11所述的一种或多种非暂态计算机可读介质,其中,所述位置信息为所述多个经编码部分中所包括的每个经编码部分指定该经编码部分中所包括的一个或多个帧小组,以及为所述一个或多个帧小组中所包括的每个帧小组指定被包括在该帧小组中的一个或多个经编码帧。
16.根据权利要求11所述的一种或多种非暂态计算机可读介质,还包括:从应用接收对于所述源媒体文件的经编码版本的请求,其中,所述索引文件响应于所述请求而被取回。
17.根据权利要求11所述的一种或多种非暂态计算机可读介质,还包括:从应用接收对于所述源媒体文件的经编码版本的请求,其中,取回所述一个或多个经编码部分包括:基于所述请求从所述多个经编码部分中选择所述一个或多个经编码部分。
18.根据权利要求17所述的一种或多种非暂态计算机可读介质,其中,所述请求指定所述源媒体文件中所包括的一个或多个帧,并且从所述多个经编码部分中选择所述一个或多个经编码部分包括:基于所述索引文件确定所述一个或多个经编码部分与所述一个或多个帧相对应。
19.根据权利要求11所述的一种或多种非暂态计算机可读介质,还包括:从应用接收对于所述源媒体文件的经编码版本的请求,其中,所述请求指定所述源媒体文件的经编码版本的至少一部分,并且响应于所述请求,所述一个或多个经编码部分被取回,并且所述源媒体文件的经编码版本的至少一部分被生成。
20.一种系统,包括:
一个或多个存储器,存储有指令;以及
一个或多个处理器,所述处理器耦合到所述一个或多个存储器,并在执行所述指令时执行以下步骤:
接收与源媒体文件相对应的索引文件,其中,所述索引文件包括与所述源媒体文件的多个经编码部分相关联的位置信息;
基于所述索引文件,从至少一个存储设备取回所述多个经编码部分中所包括的一个或多个经编码部分;以及
基于所述一个或多个经编码部分,生成所述源媒体文件的经编码版本的至少一部分。
CN202280063604.3A 2021-09-22 2022-09-07 用于基于云的视频处理的虚拟和索引装配 Pending CN117981326A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US63/247,235 2021-09-22
US17/528,102 2021-11-16
US17/528,102 US20230089154A1 (en) 2021-09-22 2021-11-16 Virtual and index assembly for cloud-based video processing
PCT/US2022/076119 WO2023049629A1 (en) 2021-09-22 2022-09-07 Virtual and index assembly for cloud-based video processing

Publications (1)

Publication Number Publication Date
CN117981326A true CN117981326A (zh) 2024-05-03

Family

ID=90856758

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280063604.3A Pending CN117981326A (zh) 2021-09-22 2022-09-07 用于基于云的视频处理的虚拟和索引装配

Country Status (1)

Country Link
CN (1) CN117981326A (zh)

Similar Documents

Publication Publication Date Title
CN108989885B (zh) 视频文件转码系统、分割方法、转码方法及装置
US11005903B2 (en) Processing of streamed multimedia data
KR102027410B1 (ko) 계층화된 신호 품질 계층에서의 재구성 데이터의 송신
CN107743708B (zh) 经由dash来参与abr流传送会话的方法、装置和节点
US8401370B2 (en) Application tracks in audio/video containers
US11716369B2 (en) System and method of web streaming media content
US11310550B2 (en) System and method for storing multimedia files using an archive file format
US11818406B2 (en) Data storage server with on-demand media subtitles
US20230362246A1 (en) Systems, methods, and apparatuses for storage management
US20120023148A1 (en) Applying Transcodings In A Determined Order To Produce Output Files From A Source File
US11474948B2 (en) Adaptive retrieval of objects from remote storage
CN117981326A (zh) 用于基于云的视频处理的虚拟和索引装配
US20230089154A1 (en) Virtual and index assembly for cloud-based video processing
WO2023049629A1 (en) Virtual and index assembly for cloud-based video processing
US10271075B2 (en) Cloud encoding system
US20220408126A1 (en) System and method for optimizing the distribution of available media production resources
CN115250266B (zh) 视频处理方法及装置、流媒体设备及存储点播系统
WO2022263665A1 (en) System and method for optimizing the distribution of available media production resources
JP2024508865A (ja) 点群符号化・復号方法、装置、及び電子機器
CN115278343A (zh) 一种基于对象存储的视频管理系统
KR20210102855A (ko) 세그먼트화 된 미디어 콘텐츠의 관리를 위한 시스템, 방법, 및 장치
NL2007502C2 (en) Data distribution system, method and computer device.

Legal Events

Date Code Title Description
PB01 Publication