复杂度自适应单程转码与双程转码的制作方法

文档序号:19351617发布日期:2019-12-06 21:27阅读:377来源:国知局
复杂度自适应单程转码与双程转码的制作方法

本公开涉及媒体转码的领域,具体涉及确定媒体项的多个组块的复杂度并在多个不同的转码器之间进行选择时使用所述复杂度。



背景技术:

内容共享平台使得用户能够共享视频、音频和其它用户生成的内容。内容共享平台通常将用户生成的内容(例如,原始源视频)从用户设备本原(native)的编码格式转码为由内容共享平台使用的一种或多种格式。转码可以涉及将源视频从其原始格式解码成未编码的表示,并且然后使用编码器将未编码的表示编码成新格式。转码可以减少用于将视频派发给客户端的存储资源和带宽资源。



技术实现要素:

以下是本公开的简化概述,以便提供对本公开的一些方面的基本理解。本发明内容不是本公开的广泛概述。它既不意在确定本公开的关键或重要要素,也不意在描绘本公开的特定实施方式的任何范围或权利要求的任何范围。其唯一目的是以简化的形式呈现本公开的一些概念,作为稍后呈现的更详细描述的前序。

在本公开的一个方面中,一种方法包括:访问包括第一组块和第二组块的媒体项;由处理设备确定第一组块的第一媒体复杂度度量和第二组块的第二媒体复杂度度量;由处理设备从多个编码器中选择第一编码器和第二编码器,其中第一编码器是基于第一组块的第一媒体复杂度度量来选择的,并且第二编码器是基于第二组块的第二媒体复杂度度量来选择的;以及使用第一编码器对第一组块进行编码,并且使用第二编码器对第二组块进行编码。

在一个实施方式中,所述方法还可以包括:从捕获并记录了媒体项的用户设备接收媒体项,并将所述媒体项分段成包括第一组块和第二组块的多个组块。所述方法还可以涉及将媒体项的使用单程(singlepass)编码器编码的第一组块与媒体项的使用双程(two-pass)编码器编码的第二组块组合以形成编码的媒体项。选择第一编码器可以涉及将第一组块的第一媒体复杂度度量与预定阈值进行比较,以及响应于第一媒体复杂度度量低于预定阈值而选择单程编码。

在另一实施方式中,第一媒体复杂度度量和第二媒体复杂度度量可以指示相应组块的空间和时间分布。当媒体项是视频时,所述方法可以涉及确定媒体项的第一组块的视频代码化复杂度测量和第二组块的视频代码化复杂度测量。确定第一组块的视频代码化复杂度(vcc)度量可以涉及确定第一组块的像素中的比特率(r)、帧速率(fps)、色度因子(cf)、帧宽度(w)和帧高度(h),并且还涉及基于以下数学公式而计算视频代码化复杂度的值:vcc=r/(w*h*fps*cf)。

在又一实施方式中,多个编码器可以包括可变比特率编码器,并且第一编码器包括单程编码器,而第二编码器包括多程编码器。可以使用单程编码器来编码媒体项的第一组块,并且可以使用多程编码器来编码媒体项的第二组块。单程编码器可以是包括使用漏桶模型实现的视频缓冲检验器的单程转码器,而多程编码器可以是包括受限品质和有界比特率的双程转码器。

附图说明

在附图的各图中通过举例而非限制的方式示出了本公开。

图1是示出根据本公开的实施方式的示例性系统架构的框图。

图2是示出根据本公开的实施方式的示例计算系统的组件和模块的框图。

图3是示出根据本公开的实施方式的转码服务器的示例方法的流程图。

图4是示出根据本公开的实施方式的计算机系统的一个实施方式的框图。

具体实施方式

内容共享平台经常会收到数百万的传入媒体项,所述传入媒体项被处理和转码以使得所述媒体项可以用来共享。使用常规媒体代码化系统对媒体项进行转码会导致长的时延。转码时延通常取决于视频的分辨率、比特率、帧速率、持续时间或图像品质而增加。例如,由单个视频转码器将一个三分钟的视频转码成高清晰度(hd)格式的视频可能需要比视频内容的持续时间长十倍的时间。长的转码时延还能够延迟下游处理(例如,视频分析或流送),从而导致用户体验劣化。常规视频转码器通常试图通过忽略视频内容和代码化复杂度对转码的影响来减少时延。对视频进行转码而不考虑视频内容和复杂度对转码的影响可能会劣化视频品质和用户体验。

本公开的各方面和实施方式通过针对媒体项的不同组块基于个体组块的复杂度来在不同编码器之间进行选择来解决上述和其它缺陷。在一个示例中,所述技术可以涉及将媒体项分段成多个组块。所述组块中的一些可以由第一编码器进行编码,而其它组块可以由第二编码器进行编码。可以基于相应组块的复杂度(例如,运动量、颜色变化、音频波动)而选择针对哪个组块使用哪个编码器。可以使用媒体复杂度度量来表示组块的复杂度,所述媒体复杂度度量可以是指示先前编码的组块的复杂度的数值或非数值。当媒体项是运动图(例如,视频)时,媒体复杂度度量可以被称为视频代码化复杂度度量。在一个示例中,可以通过分析特定组块的空间-时间分布(例如,内容运动)来确定视频代码化复杂度度量。在另一示例中,可以使用下面讨论的数学方程式,基于组块的比特率除以帧中的像素数目乘以帧速率以及其它信息的组合,而估计媒体复杂度度量。比特率可以是达到预定义品质水平或可接受品质水平所需的比特率。在任一示例中,当选择编码器时,可以分析媒体复杂度度量(例如,视频代码化复杂度)并将其与一个或多个阈值进行比较。

本文讨论的系统和方法可以针对更为复杂的组块选择第一编码器,并且为不太复杂的组块选择第二编码器。在一个示例中,第一编码器可以是多程编码器,而第二编码器可以是单程编码器。多程编码器可以执行分析组块的第一程,而随后的程可以使用在所述分析期间收集的信息对组块进行编码。单程编码器可以在处理组块的同时对其进行分析和编码。单程编码器可能比多程编码器使用更少的计算资源,但是编码结果可能比第一编码器的结果效率低(例如,更低的压缩率或更低的品质)。当组块更为复杂时,用户可以容易地感知增强的编码效率,但是当组块不太复杂时,结果可能更难以感知。本文讨论的技术可以为媒体项的更为复杂的组块选择第一编码器,并且为不太复杂的组块选择第二编码器,以使得可以以几乎相同的压缩率和品质以更具资源效率的方式来执行媒体项的聚合编码。

本文公开的技术是有利的,因为与仅使用单程或多程编码器中的一者相比,它使计算设备能够以更快的速率或更高的品质来编码媒体项。在一个示例中,这可以使内容共享平台能够使用更少的计算资源来处理传入的媒体项。在另一示例中,这可以使内容共享平台能够使用相同的计算资源量来以更高的品质处理传入的媒体项。

本文下面通过举例而非限制的方式详细描述上述方法和系统的各个方面。为了简洁起见,下面提供的示例通常会引用视频。然而,本公开的教示一般地应用于媒体项,并且可以应用于各种类型的内容或媒体项,包括例如音频、文本、图像、程序指令等。

图1示出了根据本公开的一个实施方式的示例系统架构100。应当注意,用于计算机系统100的其它架构是可能的,并且利用本公开的实施例的计算机系统的实施方式不一定限于所描绘的特定架构。系统架构100包括内容共享平台110、服务器120、用户设备130a-130z、网络140和数据存储150。

内容共享平台110可以使用户能够消费、上传、共享、搜索、点赞(“喜欢”),不喜欢和/或评论媒体项112a-112z。内容共享平台110可以包括网站(例如,网页)或应用后端软件,它们可以用于向用户提供对媒体项112a-112z的访问。媒体项112a-112z可以是由用户选择的数字内容、由用户提供的数字内容、由用户上传的数字内容、由内容提供者选择的数字内容、由广播者选择的数字内容等。媒体项112a-112z可能包括但不限于数字视频、数字电影、数字照片、数字音乐、网站内容、社交媒体更新、电子书(ebook)、电子杂志、数字报纸、数字有声读物、电子期刊、web博客、真正简易聚合(rss)馈送、电子漫画书、软件应用等。媒体项112a-112z可以经由互联网和/或经由移动设备应用消费。为了简洁起见,在线视频(下文中也称为视频)贯穿本文献用作媒体项的示例。

如本文所使用,“媒体”、“媒体项”、“在线媒体项”、“数字媒体”、“数字媒体项”、“内容”和“内容项”可以包括电子文件,所述电子文件可以使用被配置成向实体呈现数字媒体项的软件、固件或硬件来执行或加载。在一个实施方式中,内容共享平台可以使用数据存储150来存储媒体项112a-112z。在一个示例中,媒体项可以是由用户设备130a的用户识别的用户生成的视频,或者可以是由内容共享平台110选定的广告,以在用户设备130a-130z中的一个或多个上呈现另一媒体项之前、期间或之后呈现。

媒体组块152a-152c可以是特定媒体项(例如,媒体项112a)的不同部分。在图1中示出的示例中,媒体组块152a-152c可以是包括媒体项112a的分段内容的媒体组块序列。分段的内容可以具有与媒体项相同的格式,或者可以呈不同的格式。所述序列可以是非重叠媒体组块的连续序列。例如,持续时间为x的媒体项可以分为4个组块,每个组块的固定持续时间为x/4或平均持续时间为x/4(即,当可变地分段时)。在另一示例中,组块中的一个或多个可以与其它组块中的一个或多个重叠。例如,持续时间为x的媒体项可以被分成5个组块,并且所述组块中的四个组块可以包括如上所讨论的图像内容(例如,视频内容)序列,并且一个组块可以包括所有音频内容。具有图像内容的组块可以彼此不重叠,但是音频内容可以与四个图像内容组块中的每个重叠。在一个示例中,具有视频内容的组块(例如,视频组块)可以包括中间流的视频数据。可以通过组块标识数据(例如,v_id_123)来标识视频组块,并且可以用固定的量来递增视频组块序列中的后续视频组块的标识数据(例如,v_id_124)。

服务器120可以是内容共享平台110的一部分,或者可以是用于处理媒体项112a-112z的单独的设备。服务器120可以包括一个或多个计算设备(诸如,机架式服务器、路由器计算机、服务器计算机、个人计算机、大型计算机、笔记本计算机、平板计算机、台式计算机等)、数据存储(例如,硬盘、存储器、数据库)、网络、软件组件和/或硬件组件。在图1中示出的示例中,服务器120可以包括媒体分段组件122、复杂度确定组件124和转码组件126。

媒体分段组件122可以分析媒体项112a-112z,并且可以将媒体项中的每个媒体项分段成一个或多个部分。媒体分段组件122可以访问媒体项112a-112z中的每一个,并将媒体项转换成中间数据结构,诸如中间流。媒体分段组件122然后可以将媒体流分段成一个或多个组块(例如,媒体组块152a-152c)。

复杂度确定组件124可以通过整体分析媒体项或通过分析媒体项的一部分(诸如,媒体项的元数据或媒体项的一个或多个组块)来确定媒体组块152a-152c的复杂度,下面将对此进行更详细的讨论。所述分析可以识别用于媒体组块中的每个的代码化复杂度数据,并且所述代码化复杂度数据可以用于确定一个或多个度量,所述一个或多个度量可以表示媒体项的组块的图像或听觉复杂度。

转码组件126可以访问代码化复杂度数据,并且选择一个或多个编码器(例如,转码器)来修改组块。转码组件126可以选择多个不同的编码器来对同一媒体项的多个不同的组块进行编码。例如,可以使用第一转码器对组块中的一些进行编码,并且可以使用不同的转码器对同一媒体项的其它组块进行编码。一旦媒体项已经被转码,它可以被服务器120或内容共享平台110的其它计算设备提供给一个或多个用户设备130a-130z。

用户设备130a-130z可以包括计算设备,诸如个人计算机(pc)、笔记本计算机、移动电话、智能电话、平板计算机、上网本计算机、联网电视等。在一些示例中,用户设备130a-130z还可以被称为“客户端设备”。用户设备130a-130z中的每一个可以包括媒体捕获组件132a-132z和媒体呈现组件134a-134z。

媒体捕获组件132a-132z可以使用户设备能够捕获由用户设备感测到的音频数据和图像数据以创建媒体项。媒体呈现组件134a-134z可以使用户设备能够呈现(例如,播放)记录的媒体项或从内容共享平台110接收的一个或多个媒体项。媒体呈现组件134a-134z可以包括呈现图像、视频、音频、网页、文献等的媒体查看器。

在一个示例中,媒体查看器可以是可以访问、检索、呈现和/或导航由web服务器派发的内容(例如,诸如超文本标记语言(html)页面等网页、数字媒体项等)的web浏览器。媒体查看器可以向用户渲染、显示和/或呈现内容(例如,网页、媒体查看器)。媒体查看器还可以显示嵌入在网页(例如,可以提供有关在线商家出售的产品的信息的网页)中的嵌入式媒体播放器(例如,播放器或html5播放器)。在另一个示例中,媒体查看器可以是允许用户查看数字媒体项(例如,数字视频、数字图像、电子书等)的独立应用(例如,移动应用)。在图1中示出的示例中,用户设备130a-130z中的每个可以用作媒体共享设备、媒体接收者设备或二者的组合。

网络140可以是向用户设备130a-130z中的一个或多个提供对服务器120和其它公共可用计算设备的访问的公共网络。网络140可以包括一个或多个广域网(wan)、局域网(lan)、有线网络(例如,以太网)、无线网络(例如,802.11网络或wi-fi网络)、蜂窝网络(例如,长期演进(lte)网络)、路由器、中枢、交换机、服务器计算机和/或其组合。

数据存储150可以是存储器(例如,随机存取存储器)、驱动器(例如,硬盘驱动器、快闪驱动器)、数据库系统或能够存储数据的另一类型的组件或设备。数据存储150可以包括可以跨越多个计算设备(例如,多个服务器计算机)的多个存储组件(例如,多个驱动器或多个数据库)。数据存储150可以包括存储从内容共享平台110接收的媒体项的副本的媒体缓存。在一个示例中,媒体项112a-112z中的每一个可以是从内容共享平台110下载的文件,并且可以被本地存储在媒体缓存中。在另一示例中,每个媒体项112可以从内容共享平台110流送,并且可以作为暂时性副本存在于服务器120的存储器中,直到被转码为止。

虽然根据服务器和内容共享平台讨论了本公开的实施方式,但是实施方式也可以一般地应用于提供数字内容和用户之间的连接的任何类型的社交网络。在此处讨论的系统收集有关用户的个人信息或可以利用个人信息的情况下,可以为用户提供以下机会:控制内容共享平台是否收集用户信息(例如,有关用户社交网络的信息、社交行为或活动、职业、用户的偏好或用户的当前位置),或控制是否和/或如何从内容服务器接收与用户可能更为相关的内容。另外,某些数据在被存储或使用之前可能会以一种或多种方式对其处理,以使得移除个人可识别信息。例如,可以对用户的身份进行处理,以使得无法确定用户的个人可识别信息,或者可以在获得位置信息的情况下将用户的地理位置泛化(例如,泛化到城市、邮政编码或州级别),以使得无法确定用户的特定位置。因此,用户可以控制如何收集关于用户的信息以及其如何被内容共享平台使用。

在本公开的实施方式中,“用户”可以被表示为单个个体。然而,本公开的其它实施方式涵盖这样的“用户”,所述“用户”是由一组用户和/或自动化源控制的实体。例如,在社交网络中联合为团体的一组个体用户可以被视为“用户”。

图2是示出示例计算机系统200的框图。计算机系统200可以与图1的服务器120相同或相似。在图2中示出的示例中,计算机系统200包括媒体分段组件122、复杂度确定组件124、转码组件126和数据存储150。

媒体分段组件122可以分析媒体项112,并且可以对媒体项112执行一个或多个预处理步骤,以将媒体项分段成一个或多个媒体组块152。在一个示例中,媒体分段组件122可以包括中间流模块210和组块识别模块212。

中间流模块210可以从一个或多个数据存储150访问媒体项112。媒体项112可以采用特定于捕获、记录、转换或存储了媒体项的计算设备或硬件设备的格式。所述格式可以是用于识别和交织数据的特定多媒体容器格式,并且可以包括不同类型的数据,诸如视频流、音频流或其组合。所述格式可以与运动图像专家组标准(mpeg)(例如,mpeg4)、quicktime文件格式、flash视频(.flv、f4v)、音频视频交错(avi)、windowsmedia视频(wmv)、其它格式或其组合相同或相似。在一个示例中,媒体项112可以采用特定于捕获并记录所述媒体项的用户设备(例如,移动电话、数字影片相机)的本原格式。在另一示例中,媒体项112可以被转换成内容共享平台特有的一种或多种格式。在任一示例中,媒体项112的格式可以被认为是源格式或原始格式。中间流模块210可以将媒体项112从原始格式转换为一种或多种中间格式。这可能涉及将媒体项从原始格式解码为中间格式。中间格式可以呈流(例如,中间流)的形式,并且可以与本原格式不同或者可以与本原格式相似或相同。

组块识别模块212可以访问中间流,并且将中间流分段成一个或多个固定大小或可变大小的媒体组块152。以视频转码为例,组块识别模块212可以将中间流划分成固定大小的视频组块。例如,中间视频流的每15秒视频数据可以被识别为个体视频组块。在另一示例中,组块识别模块212可以基于诸如帧内边界的预先存在的边界而将中间流划分成可变大小的视频组块。在任一示例中,组块识别模块212可以将视频内容分段成视频组块,所述视频组块中的每个包含中间流的视频数据中的至少一个或多个图像。

对于具有音频内容的中间流,组块识别模块212可以将中间流分段成多个音频组块。可以以较高的频率(例如,48khz)对视频流的音频数据进行采样,并且不需要帧间压缩(例如,mp3音频数据)。此外,与由于复杂的视频处理(例如,运动估计和补偿)而在计算上昂贵的视频数据转码相比,音频转码可以便宜得多。在一个示例中,中间流的音频组块可以大于中间流的视频组块。在另一实施例中,可以将中间流的音频内容在不进行分段的情况下与视频或图像内容分开,并且可以将整个音频内容视为单个音频组块。

复杂度确定组件124可以通过整体分析媒体项或通过分析媒体项的一部分(诸如,媒体项的元数据或媒体项的一个或多个组块)来确定媒体组块152的复杂度。所述分析可以识别组块的代码化复杂度数据,并且所述代码化复杂度数据可以用于确定一个或多个媒体复杂度度量,所述一个或多个媒体复杂度度量可以表示媒体项的组块的听觉、图像或视频代码化复杂度。复杂度确定组件124可以使用组块分析模块220和复杂度测量模块222来确定组块的媒体复杂度度量252。

媒体复杂度度量252可以是表示一个或多个媒体组块152的代码化复杂度的数值或非数值,并且可以指示对媒体项112的特定组块进行编码的难度。媒体复杂度度量可以与包含在媒体项112的组块中的空间和/或时间信息(例如,运动数据)的量直接或间接相关(例如,成比例)。例如,较高的媒体复杂度度量可以对应于视频帧中像素值的大运动补偿的亮度残值或亮度方差,因为这通常对应于视频帧的大空间活动。视频帧的所提取的时间特征,诸如运动矢量的长度/熵和帧残差的能量,也可以反映视频帧中存在的运动量。

组块分析模块220可以通过收集与组块相关联的内容信息来分析组块。可以在不执行对组块的逐帧分析的情况下收集内容信息,例如其可以涉及分析与组块或媒体项相关联的元数据。组块分析模块220可以从多个源收集信息,并且所述信息可以与特定组块、对应的媒体项、其它组块或媒体项、计算设备、用户、其它信息或其组合有关。内容信息可以关于媒体项或组块的一个或多个图像帧的尺寸。帧的尺寸可以包括或者关于帧宽度(w)、帧高度(h)、纵横比、其它尺寸或其组合。帧的尺寸可以用像素数量(例如,1920x1080)、分辨率值(例如,1080p、720p、1080i、720i)、分辨率模式(例如,标准清晰度(sd)、高清晰度(hd)、超高清晰度(uhd)、其它值或其组合来表示。

内容信息可以包括关于组块的帧速率或比特率的信息。帧速率(例如,帧频率)可以指的是在单位时间上显示的帧的数目,并且可以表示成每秒帧数(fps)。比特率(r)或编码比特率可以指的是在源代码化(例如,数据压缩)之后,每单位回放时间用来表示音频或视频的比特的数目。当在可变比特率多媒体源代码化方案的场境(context)中使用时,比特率可以是平均比特率。组块的编码比特率可以是以字节计的组块的大小除以录制内容的回放时间(以秒为单位)乘以八。通常,较高的比特率指示组块包括较为复杂的内容。这可能是因为视频的空间与时间特征与其对应的编码比特率之间通常存在相关性。

内容信息可以与组块的色度有关并且可以传达组块的颜色相关信息。颜色信息可以基于用作数字或模拟摄影术中的彩色图像管线的一部分的颜色空间族(例如,ycbcr、yuv)。示例颜色空间可以是ycbcr(ycc)颜色空间,其可以通过来自相关联的红绿蓝(rgb)颜色空间的数学坐标变换来定义。y(或y’)可以是亮度分量,而cb和cr可以分别是蓝色差(blue-difference)和红色差(red-difference)色度分量。

通常通过执行色度子采样来通过减少编码的媒体项中可用的颜色信息来压缩媒体项。色度子采样可以以小于亮度信息(例如,明度(brightness))的分辨率的色度信息(例如,颜色信息)的分辨率来对图像进行编码。子采样方案通常表示为三部分比率j:a:b(例如,4:2:2),所述比率描述了j个像素宽并且可以是两个像素高的概念区域中亮度和色度样本的数目。“j”表示水平采样参考,并且通常是值4。“a”表示j个像素的第一行中的色度样本(cr、cb)的数目,而“b”表示j个像素的第一行与第二行之间的色度样本(cr、cb)的变化数目。

色度子采样的量可以由色度因子(cf)表示。在一个示例中,可以相对于基线(诸如,4:4:4基线)来计算色度因子。然后可以通过将因子中的每个相加并将结果除以12(即,4+4+4)来确定色度因子。例如,使用4:2:2y'cbcr色度子采样方案的压缩图像可以具有三分之二的色度因子,因为4+2+2是8,而8/12是三分之二。

复杂度测量模块222可以访问由组块分析模块220确定的内容信息,并且可以计算媒体组块152的媒体复杂度度量252。当媒体组块包括视频内容时,媒体复杂度度量可以是基于每像素比特(bpp)值估计的视频代码化复杂度(vcc)度量。每像素比特值可以表示用于跨组块的一个或多个帧以给定品质水平来编码像素的比特数。在一个示例中,复杂度测量模块222可以通过访问内容信息来确定组块的视频代码化复杂度(vcc)度量,所述内容信息包括组块的像素中的比特率(r)、帧速率(fps)、色度因子(cf)、帧宽度(w)以及帧高度(h)。复杂度测量模块222然后可以基于数学公式而计算视频代码化复杂度的值,所述数学公式包括:vcc=r/(w*h*fps*cf)。

复杂度测量模块222可以通过补充vcc值或使vcc值基于源媒体组块152的一个或多个额外的空间和/或时间特征来增强媒体复杂度度量252(例如,视频代码化复杂度度量)的精度。例如,媒体组块152的vcc值可以另外或替选地基于帧级空间方差、残差能量、跳过的宏块(mb)的数目和比特数目而进行计算,以对组块的预测性宏块的运动矢量进行编码。可以在vcc值计算中使用其它代码化参数,诸如对源媒体组块152进行编码的通用工作负荷。

复杂度确定组件124可以包含机器学习技术以增强媒体复杂度测量的确定。在一个示例中,可以使用从媒体数据存储中选择的媒体项来离线训练复杂度确定组件124,以学习媒体项的空间和时间特征与其对应的编码比特率之间的相关性。例如,可以使用线性回归算法在大型媒体集(例如,来自视频数据库的20000个视频)上训练复杂度确定组件124。线性回归算法可以用于对选定视频特征与归一化比特率之间的关系进行建模。

转码组件126可以访问代码化复杂度数据并选择一个或多个编码器(例如,转码器)来修改组块。转码组件126可以选择多个不同的编码器以对同一媒体项的多个不同组块进行转码。例如,可以使用第一转码器对组块中的一些进行编码,并且可以使用不同的转码器对同一媒体项的其它组块进行编码。一旦媒体项已经被转码,它可以被服务器120或内容共享平台110的其它计算设备提供给一个或多个用户设备130。在一个示例中,转码组件126可以包括选择模块230、初始化模块232和组合模块234。

选择模块230可以访问媒体组块152中的每个的媒体复杂度度量252,并且可以基于相应的媒体复杂度度量而选择用于媒体组块的转码器。当在不同编码器之间进行选择时,选择模块230可以使用一个或多个阈值。所述阈值可以基于存储在计算系统200上或可由计算系统200访问的预定值,并且可以对应于媒体组块复杂度阈值的特定值(例如,每像素比特(bpp)值)。预定阈值可以基于设计者、开发者、管理员、其它用户的输入或其组合。预定阈值可以基于机器学习而生成或调整,并且可以基于已在组块上完成编码之前、期间或之后的反馈而随时间流逝更新。

当选择特定编码器以对媒体组块进行编码时,选择模块230可以将组块的媒体复杂度度量与预定阈值进行比较。预定阈值(例如,vcc阈值或bpp阈值)可以反映代码化复杂度的类别之间的划分点。在一个示例中,可以存在两个类别,并且预定阈值复杂度值可以标示这两个群组之间的划分。具有低于阈值的媒体复杂度度量值的组块可以与第一组组块(例如,较低复杂度组块)相关联,并且具有等于或高于阈值的媒体复杂度度量值的组块可以与第二组组块(例如,较高复杂度组块)相关联。选择模块230可以选择单程编码器/转码器来对与较低复杂度相关联的组块进行编码,并且可以选择多程编码器/转码器来对与较高复杂度相关联的组块进行编码。在其它示例中,可能存在多于两个类别的复杂度。

初始化模块232可以基于媒体组块和选定的编码器而生成编码请求。编码请求可以包括以下中的一个或多个:组块标识符、媒体内容类型(例如,视频组块、音频组块)、编码器标识符(例如,单程、多程)、组块大小、组块偏移(例如,相关于媒体项的偏移)、时间戳、源格式、目标格式、其它信息或其组合。初始化模块232可以提交针对个体媒体组块152的请求,或者可以提交针对多个媒体组块152的请求。例如,可能存在识别较高复杂度组块(例如,第一组的全部)中的一个或多个的请求,以及识别较低复杂度组块(例如,第二组的全部)中的一个或多个的另一请求。初始化模块232可以将请求传输到计算机系统200上的组件以执行编码,或者可以将请求传输到一个或多个其它计算机系统(例如,集群的成员)以执行编码。在任一示例中,媒体组块的编码可以以并行、串行或其组合的方式发生。

组合模块234可以访问编码的媒体组块,并且可以组合编码的媒体组块以生成媒体项的编码版本。组合模块234可以访问编码的媒体组块,并且可以将编码的组块合并成合并的媒体项。合并过程可以涉及检测与媒体项的开头相对应的组块。响应于编码的组块是第一组块,组合模块234可以保留报头信息,并且对于其余的组块(例如,非第一组块),组合模块234可以移除报头信息。组合模块234可以按顺序组合编码的组块,并且编码的组块在组合的媒体项中的位置可以基于组块标识。例如,呈h.264视频格式的组块可以包含网络抽象层(nal)报头,并且组合模块234可以保持第一视频组块中包含的nal报头,并除去随后的视频组块中的nal报头。

图3示出了根据本公开的一个或多个方面的、用于使用多个不同的转码器对同一媒体项的不同组块进行转码的方法300的一个说明性示例的流程图。方法300以及其个体功能、例程、子例程或操作中的每一个可以由执行所述方法的计算机设备的一个或多个处理器来执行。在某些实施方式中,方法300可以由单个计算设备执行。替选地,方法300可以由两个或更多个计算设备执行,每个计算设备可以执行所述方法的一个或多个个体功能、例程、子例程或操作。在一个说明性示例中,实现方法300的计算设备可以被同步化。替选地,实现方法300的过程可以相对于彼此异步地执行。

为了简化说明,将本公开的方法描绘和描述为一系列动作。然而,根据本公开的动作可以以各种顺序发生和/或同时发生,并且本文未呈现和描述其它动作。此外,可能不需要所有示出的动作来实现根据所公开的主题的方法。另外,本领域技术人员将理解并认识到,所述方法可以替选地经由状态图或事件被表示为一系列相互关联的状态。另外,应当了解,在本说明书中公开的方法能够被存储在制品上,以便于将这种方法传输和传递到计算设备。如本文所使用的术语“制品”意在涵盖可从任何计算机可读设备或存储介质访问的计算机程序。在一个实施方式中,方法300可以由图1的服务器120或图2的计算系统200执行。

方法300可以由服务器设备或客户端设备的处理设备执行,并且可以在框302处开始。在框302处,处理设备可以访问包括第一组块和第二组块的媒体项。处理设备可以从捕获并记录了媒体项的用户设备接收媒体项,并且可以将媒体项分段成包括第一组块和第二组块的多个组块。在一个示例中,媒体项的第一组块和媒体项的第二组块可以从媒体项的一系列不重叠持续时间中取得。例如,媒体项可以是五分钟长,并且可以被分段成组块,以使得组块中的每个可以被串接以产生媒体项。在另一示例中,第一组块和第二组块可以部分或完全重叠。例如,第一组块可以包括视频的音频内容,并且第二组块可以是视频的图像内容,并且音频内容可以与视频内容重叠,以使得音频内容和视频内容中的一些或全部被同时呈现。在任一示例中,处理设备可以访问被缩减至更低分辨率的组块(例如,第一组块和第二组块)以代替原始组块,以使得可以使用更少的计算资源来确定媒体复杂度度量。

在框304处,处理设备可以确定第一组块的第一媒体复杂度度量和第二组块的第二媒体复杂度度量。第一媒体复杂度度量和第二媒体复杂度度量中的每个都可以指示相应组块的空间和时间分布。当媒体项是视频时,媒体复杂度度量可以包括媒体项的第一组块的视频代码化复杂度度量和第二组块的视频代码化复杂度度量。在一个示例中,确定第一组块的视频代码化复杂度(vcc)度量可以涉及:确定第一组块的比特率(r)、帧速率(fps)、色度因子(cf)、帧宽度(w)和帧高度(h)。该内容信息可以用于基于以下数学公式而计算视频代码化复杂度的值:vcc=r/(w*h*fps*cf)。

在框306处,处理设备可以从多个编码器中选择第一编码器和第二编码器。第一编码器可以是基于第一组块的第一媒体复杂度度量而选择,并且基于第二组块的第二媒体复杂度度量而选择第二编码器。在一个示例中,选择第一编码器可以涉及处理设备将第一组块的第一媒体复杂度度量与预定阈值进行比较,并且响应于第一媒体复杂度度量低于预定阈值而选择单程编码。预定阈值可以基于由设计者、开发者、管理员、其它用户或其组合提供的预定值。预定阈值可以基于机器学习而被调整,并且可以基于已在组块上完成编码之后的反馈而随时间流逝修改。

多个编码器可以包括多个可变比特率编码器,并且第一编码器可以是单程编码器,而第二编码器可以是多程编码器。单程编码器可以是包括视频缓冲验证器(vbv)的单程转码器,而多程编码器可以是包括受限品质和有界比特率的双程转码器。视频缓冲验证器可以是与mpeg标准(例如,mpeg2)一起使用的视频缓冲器模型,并且可以确保编码的视频流可以被正确地缓冲并且可以在另一设备(例如,解码设备、用户设备)上播放。视频缓冲验证器可以用于确定(例如,估计或预测)在接收设备(例如,解码器设备)处是否将存在缓冲器上溢或缓冲器下溢。视频缓冲验证器可以虑及接收媒体流的比特率(例如,最大比特率)和存储媒体流的缓冲器大小。在一个示例中,可以使用一个或多个漏桶模型来实现视频缓冲验证器。漏桶模型可以用于确定某些离散事件序列是否符合其平均和峰值速率或频率的限定的极限。漏桶模型可以应用于分组交换计算机网络中,以检查数据传输(例如,分组)是否符合对带宽和突发性的限定的极限。突发性是对网络业务流变化的一种度量。

在框308处,处理设备可以使用第一编码器对第一组块进行编码,并且使用第二编码器对第二组块进行编码。在一个示例中,可以使用单程编码器来对媒体项的第一组块进行编码,并且可以使用多程编码器来对媒体项的第二组块进行编码。处理设备还可以将媒体项的第一组块(使用单程编码器编码的)与媒体项的第二组块(使用双程编码器编码的)组合以形成编码的媒体项。响应于完成本文上面参考框308描述的操作,所述方法可以终止。

图4示出了根据本公开的一个或多个方面操作的计算机系统的框图。在某些实施方式中,计算机系统400可以(例如,经由诸如局域网(lan)、内联网、外联网或互联网等网络)连接到其它计算机系统。计算机系统400可以在客户端-服务器环境中以服务器或客户端计算机的能力来操作,或者在对等或分布式网络环境中作为对等计算机来操作。计算机系统400可以由个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、web器材、服务器、网络路由器、交换机或桥接器或能够执行一组指令(顺序指令或其它指令)的任何设备提供,所述指令指定了将由该设备采取的动作。此外,术语“计算机”应当包括单独地或共同地执行一组(或多组)指令以执行本文所描述的方法中的任何一个或多个的计算机的任何集合。

在另一方面,计算机系统400可以包括处理设备402、易失性存储器404(例如,随机存取存储器(ram))、非易失性存储器406(例如,只读存储器(rom)或电可擦除可编程rom(eeprom))和数据存储设备416,所述数据存储设备416可以经由总线408彼此通信。

处理设备402可以由诸如通用处理器等一个或多个处理器(诸如,复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器、实现其它类型的指令集的微处理器或实现多种类型指令集的组合的微处理器)或专用处理器(诸如,专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)或网络处理器)来提供。

计算机系统400还可以包括网络接口设备422。计算机系统400还可以包括视频显示单元410(例如,lcd)、字母数字输入设备412(例如,键盘)、光标控制设备414(例如,鼠标)和信号生成设备420。

数据存储设备416可以包括其上可以存储对本文所描述的方法或功能中的一个或多个进行编码的指令426的非暂时性计算机可读存储介质424,包括对图1和图2的转码组件126进行编码并且用于实现图3的方法300的指令。

在由计算机系统400执行指令426期间,指令426也可以全部或部分驻留在易失性存储器404内和/或处理设备402内,因此易失性存储器404和处理设备402也可以构成机器可读存储介质。

虽然在说明性示例中将计算机可读存储介质424示出为单个介质,但是术语“计算机可读存储介质”应当包括存储一组或多组可执行指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的缓存和服务器)。术语“计算机可读存储介质”还应当包括能够存储或编码一组指令以供计算机执行的任何有形介质,所述一组指令致使计算机执行本文所描述的方法中的任何一个或多个。术语“计算机可读存储介质”应当包括但不限于固态存储器、光学介质和磁性介质。

本文所描述的方法、组件和特征可以由分立的硬件组件来实现,或者可以集成在诸如asic、fpga、dsp等其它硬件组件或类似设备的功能中。另外,方法、组件和特征可以由硬件设备内的固件模块或功能电路来实现。此外,方法、组件和特征可以以硬件设备和计算机程序组件的任何组合或以计算机程序来实现。

除非另有特别说明,否则诸如“检测”、“确定”、“释放”、“破坏”、“初始化”、“创建”、“放弃”等术语是指由计算机系统执行或实现的动作和过程,所述动作和过程操纵并且将表示为计算机系统寄存器或存储器内的物理(电子)量的数据转换为类似地表示为计算机系统存储器或寄存器或其它此类信息存储、传输或显示设备内的物理量的其它数据。而且,如本文所使用的术语“第一”、“第二”、“第三”、“第四”等是指用于区分不同要素的标签,并且可以不具有根据其数字名称的序数含义。

本文所描述的示例还涉及用于执行本文所描述的方法的装置。该装置可以被特别构造用于执行本文所描述的方法,或者它可以包括由存储在计算机系统中的计算机程序选择性地编程的通用计算机系统。这种计算机程序可以被存储在计算机可读的有形存储介质中。

本文描述的方法和说明性示例不与任何特定计算机或其它装置固有地相关。根据本文所描述的教示,可以使用各种通用系统,或者可以证明构造更专用的装置来执行方法300和/或其各个功能、例程、子例程或操作中的每个是便利的。在上面的描述中阐述了多种这些系统的结构的示例。上面的描述意在是说明性的,而不是限制性的。虽然已经参考特定的说明性示例和实施方式描述了本公开,但是应当认识到,本公开不限于所描述的示例和实施方式。本公开的范围应当参考所附权利要求书以及权利要求书所赋予的等效形式的全部范围来确定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1