基于媒体流来形成拼块化视频的制作方法

文档序号:15310100发布日期:2018-08-31 21:39阅读:208来源:国知局

本发明涉及基于媒体流来形成拼块化(tiled)视频,并且具体地但非排他地涉及用于基于拼块流(tilestream)来形成拼块化视频的方法和系统、用于形成拼块化视频的客户端计算机、用于使得客户端计算机能够形成拼块化视频的数据结构以及用于使用如上面所提及的方法的计算机程序产品。



背景技术:

诸如视频拼接(videomosaic)之类的拼块化视频是在一个或多个显示设备上组合呈现视觉上不相关的或相关的视频内容的多个视频流的示例。此类视频拼接的示例包括电视频道拼接,其包括在单个拼接视图中的多个电视频道以用于快速频道选择以及包括在单个拼接中的多个安全视频馈送以用于紧凑概览的安全相机拼接。当不同的人员需要不同的视频拼接时,视频拼接的个性化常常是所期望的,例如:个性化的电视频道拼接,其中每个用户可以具有他自己的优选的电视频道集合,个性化的交互式电子节目指南(epg),其中每个用户能够组成与由epg指示的电视节目相关联的视频拼接,或者个性化的安全相机拼接,其中每个安全官员可以具有他自己的一组安全馈送。在视频拼接示出当前最受关注的电视频道时的情况下,在用户电视频道偏好可能改变时或当电视频道收视率波动时个性化可随时间而改变,并且当安全官员改变位置时,其他安全视频馈送可针对该安全官员而变成相关的。另外地和/或替代地,视频拼接可以是交互式的,即被配置成响应于用户输入。例如,当用户从电视频道拼接中选择特定拼块时,电视可以切换到特定频道。

wo2008/088772描述了用于生成视频拼接的传统过程。该过程包括选择处理所选视频的不同视频和服务器应用,使得表示视频拼接的视频流可以被传输到客户端设备。视频处理可以包括对视频进行解码,在解码域中空间地组合和拼连所选视频的视频帧,并将视频帧重新编码成单个视频流。这个过程在解码/编码和缓存方面需要很多资源。此外,双重编码过程首先在视频源处并其次在服务器处导致原始源视频的质量降级。

sanchez等人的文章“lowcomplexitycloud-video-mixingusinghevc”,第十一届每年ieeeccnc——多媒体联网、服务和应用2014、第214-218页描述了一种用于创建用于视频会议和监视应用的视频拼接的系统。该文章描述了基于符合标准的hevc视频压缩标准的视频混合器解决方案。通过重写与这些视频流中的nal单元相关联的元数据,在网络中将与不同视频内容相关联的不同hevc视频流组合。因此,服务器重写包括视频流的编码视频内容的传入nal单元,并将那些组合/对接成表示拼块化hevc视频流的nal单元的传出流,其中每个hevc拼块表示视频拼接的图像区域的子区域。视频混合器的输出可以通过对编码器模块放置特殊约束而由符合标准的hevc解码器模块来进行解码。因此,sanchez描述了一种用于在编码域中组合视频内容的解决方案,使得消除或至少大大减少对包括解码域中的解码、拼连、以及重新编码的资源密集型过程的需求。

由sanchez提出的解决方案的问题是:所创建的视频拼接需要在服务器上的专门过程,因此所需的服务器处理能力仅仅随着用户数目线性地(即差劲地)缩放。在以大规模提供此类服务时,这是主要的可缩放性问题。此外,客户端-服务器信令协议引入了延迟,因为发送对特定拼接的请求并且然后-响应于该请求-组成该视频拼接并将视频拼接传输给客户端需要花费时间。另外,服务器形成针对该服务器所递送的所有流的单点故障以及单点控制两者,这在隐私和安全方面构成风险。最后,由sanchez等人提出的系统不允许第三方内容提供者。提供给客户端的所有内容都需要被负责组合视频的中央服务器知晓。

将sanchez的视频混合器功能传送到客户端侧可以部分地解决上述问题。然而,这将需要客户端解析hevc编码比特流、检测相关参数和头部、并重写nal单元的头部。这样的能力要求超越了商用现成的符合标准的hevc解码器模块的数据储存和处理能力。

此外,当前hevc技术不提供用于选择与不同拼块位置和不同内容源相关联的不同hevc拼块流所需的功能性。例如,在2014年3月的iso稿件iso/iecjtc1/sc29/wg11mpeg2014中,描述了空间相关的hevc拼块如何可以用信号通知给dash客户端设备(例如,被配置用于使用dash来接收流的客户端设备或计算机)以及如何可以下载这样的hevc拼块而无需下载所有其他拼块的场景。此文件描述了其中一个视频源被编码在hevc拼块中的场景,所述hevc拼块作为存储在服务器上的单个文件(由一个编码过程产生的单个isobmff数据容器)中的hevc拼块轨道而被存储。描述数据容器中的hevc拼块的清单文件(在dash中被称为媒体呈现描述或mpd)可用于选择和播出所存储的hevc拼块轨道中的一个。类似地,wo2014/057131描述了用于基于mpd从源自一个单一视频(即,通过对单一视频源进行编码而形成的hevc拼块)的hevc拼块集合中选择hevc拼块的子集(感兴趣区域)的过程。

mitsuhirohirabayashi等人:“关于dashsrd的mpd中的hevc拼块轨道的考虑”,108.mpegmeeting;31-03-2014-4-4-2014;valencia;运动图像专家组或iso/iecjtc1/sc29/wg11,m33085,2014年3月29日(2014-03-29)描述了用于在dashsrd上映射hevc流的hevc拼块轨道的方式。描述了两个用例。一个用例假设所有hevc拼块轨道和相关联的hevc基础轨道都被包括在单个mp4文件中。在此情况下,建议将所有hevc拼块轨道和hevc基础轨道映射到srd中的子表示。其它用例假设hevc拼块轨道和hevc基础轨道中的每个被包括在单独的mp4文件中。在这种情况下,建议将所有hevc拼块轨道mp4文件和hevc基础轨道mp4文件映射到适配集合(adaptationset)内的表示。

应该注意的是,根据2.3节和2.3.1节,描述拼块视频的所有hevc拼块轨道都涉及相同的hevc流,这意味着它们是单个hevc编码过程的结果。这进一步意味着所有这些hevc拼块轨道都与进入hevc编码器的相同输入(视频)流相关。

2014年10月22日(2014-10-22)的gb2513139a(佳能株式会社[jp])公开了一种使用dash标准来流式传输视频数据的方法,将视频的每一帧划分成n个空间拼块,n是整数,以便创建n个独立的视频子轨道。该方法包括:由服务器将(mpd)媒体呈现描述文件传输到客户端设备,所述描述文件包括关于n个视频子轨道的空间组织的数据和分别指定每个视频子轨道的至少n个url;由客户端设备根据由客户端设备或客户端设备的用户所选择的一个感兴趣区域来选择一个或多个url;由服务器从客户端设备接收用于请求所得到数目的视频子轨道的一个或多个请求消息,每个请求消息包括由客户端设备选择的url之一,并且响应于请求消息,由服务器将与所请求的视频子轨道相对应的视频数据传输到客户端设备。

2015年1月29日(2015-01-01)的wo2015/011109a1(佳能株式会社[jp]);佳能欧洲有限公司(gb)公开了在服务器中封装分区定时媒体数据,分区定时媒体数据包括定时样本,每个定时样本包括多个子样本。在从定时样本之一的多个子样本之中选择至少一个子样本之后,为每个所选子样本创建包括所选子样本和其他定时样本中的每个的一个对应子样本的一个分区轨道。接下来,创建至少一个从属框,每个从属框与分区轨道相关并且包括对一个或多个其他已创建分区轨道的至少一个引用,所述至少一个引用表示与一个或多个其他分区轨道相关的解码顺序从属。将分区轨道中的每个独立地封装在至少一个媒体文件中。

然而,上述过程和mpd不允许客户端设备基于可以存储在网络中的不同位置中的与不同拼块位置相关联并源自不同视频文件的大量拼块轨道来灵活地且高效地“组成”视频拼接(例如,由不同的编码过程产生的不同的isobmff数据容器)。

因此,在本领域中存在对改进的方法、设备、系统和数据结构的需要,其实现了基于与不同的拼块位置相关联且源自不同的内容源的拼块流来高效地选择和组成视频拼接。特别地,本领域中存在对实现可经由可缩放传送方案(例如多播和/或cdn)而被递送到大量客户端设备的视频拼接的组合的高效且可缩放解决方案的方法和系统的需要。



技术实现要素:

如本领域技术人员将认识到的,可以将本发明的各方面具体实施为系统、方法或计算机程序产品。因此,本发明的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或组合软件和硬件方面的实施例的形式,其通常全部可以在本文中被称为“电路”、“模块”或“系统”。可以将本公开中所描述的功能实现为由计算机的微处理器执行的算法。此外,本发明的各方面可以采取包含在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质具有包含(例如存储)在其上的计算机可读程序代码。

可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读储存介质。计算机可读储存介质可以是例如但不限于电子的、磁的、光学的、电磁的、红外的或半导体的系统、装置或设备、或前述内容的任何合适的组合。计算机可读储存介质的更具体示例(非详尽列表)将包括以下:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、光纤、便携式光盘只读存储器(cd-rom)、光储存设备、磁储存设备或前述内容的任何适当的组合。在本文档的上下文中,计算机可读储存介质可以是任何可以包含或存储由指令执行系统、装置或设备使用或与其结合使用的程序的有形介质。

计算机可读信号介质可以包括其中包含有计算机可读程序代码的传播数据信号,例如在基带中或者作为载波的一部分。此类传播信号可以采取多种形式中的任何形式,包括但不限于电磁的、光学的或其任何适当的组合。计算机可读信号介质可以是不是计算机可读储存介质并且可以传送、传播或传输供指令执行系统、装置或设备使用或与其结合使用的程序的任何计算机可读介质。

包含在计算机可读介质上的程序代码可以使用任何适当的介质来传输,包括但不限于无线、有线、光纤、电缆、rf等、或前述内容的任何适当的组合。用于执行本发明的各方面的操作的计算机程序代码可以以一种或多种编程语言的任何组合来编写,所述编程语言包括诸如java(tm)、smalltalk、c++等的面向对象的编程语言和诸如“c”编程语言或类似的编程语言的传统程序编程语言。程序代码可以完全在用户的计算机上、部分地在用户的计算机上、作为独立的软件包、部分在用户的计算机上且部分在远程计算机上、或者完全在远程计算机或服务器上执行。在后者的场景中,可以通过包括局域网(lan)或广域网(wan)的任何类型的网络而将远程计算机连接到用户的计算机,或者可以进行到外部计算机(例如,使用互联网服务提供商通过互联网)的连接。

以下参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本发明的各方面。将理解的是,流程图和/或框图中的每个框以及流程图和/或框图中的框的组合可以通过计算机程序指令来实现。可以将这些计算机程序指令提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,特别是微处理器或中央处理单元(cpu),以产生机器,使得经由计算机的处理器、其他可编程数据处理装置或其他设备执行的指令创建用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的装置。

还可以将这些计算机程序指令存储在可以指导计算机、其他可编程数据处理装置或其他设备以特定方式运行的计算机可读介质中,使得存储在计算机可读介质中的指令产生包括实现在流程图和/或框图的一个或多个框中指定的功能/动作的指令的制品。

还可以将计算机程序指令加载到计算机、其他可编程数据处理装置或其他设备上以引起在计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的过程。

各图中的流程图和框图图示了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能性和操作。就这一点而言,流程图或框图中的每个框可以表示包括用于实现(多个)指定的逻辑功能的一个或多个可执行指令的模块、段或代码部分。还应该注意的是,在一些替代实现中,框中提到的功能可以不按照各图中指出的顺序发生。例如,取决于所涉及的功能性,连续示出的两个框实际上可以基本上同时执行、或者框有时可以以相反的顺序执行。还将注意到,框图和/或流程图的每个框以及框图和/或流程图中的框的组合可以由执行指定功能或动作的基于专用硬件的系统来实现,或者由专用硬件和计算机指令的组合来实现。

本发明的目的是减少或消除现有技术中已知的至少一个缺点。特别地,本发明的目的之一是生成拼块流(tilestream),即包括媒体数据的媒体流,所述媒体数据可被解码器解码成视频帧,所述视频帧包括在所述视频帧中的预定位置处的拼块。选择不同的拼块流并将其与在不同位置处的拼块进行组合允许形成可在一个或多个显示器上渲染的视频拼接(videomosaic)。

在实施例中,本发明可以涉及一种从多个拼块流形成解码视频流的方法,其中该方法可以包括以下步骤:

选择与第一拼块位置相关联的至少第一拼块流标识符,并且选择与第二拼块位置相关联的至少第二拼块流标识符,所述第一拼块位置不同于所述第二拼块位置;基于所选择的第一拼块流标识符来请求一个或多个网络节点将与第一拼块位置相关联的第一拼块流传输给所述客户端计算机,并且基于所选择的第二拼块流标识符来请求将与第二拼块位置相关联的第二拼块流传输给所述客户端计算机;将至少所述第一和第二拼块流的媒体数据和拼块位置信息组合成由所述解码器可解码的比特流,并且通过将所述比特流解码为拼块化视频帧来形成解码视频流,每个拼块化视频帧包括表示所述第一拼块流的媒体数据的视觉内容的在所述第一拼块位置处的第一拼块以及表示所述第二拼块流的媒体数据的视觉内容的在所述第二拼块位置处的第二拼块。

在实施例中,可以从第一组拼块流标识符中选择第一拼块流标识符,并且可以从第二组拼块流标识符中选择第二拼块流标识符。

在实施例中,第一组拼块流标识符可以识别包括第一视频内容的至少一部分的已编码媒体数据的拼块流,并且第二组拼块流标识符可以识别包括第二视频内容的至少一部分的已编码媒体数据的拼块流。优选地,第一和第二视频内容是不同的视频内容,并且优选地,组中的每个拼块流标识符分别与第一或第二视频内容的不同拼块位置相关联。

本发明允许基于源自不同内容源(例如由不同编码器生成的不同视频)的拼块流来形成和渲染拼块视频组成(例如视频拼接)。可以将拼块流定义为包括媒体数据和拼块位置信息的媒体流,由此所述拼块位置信息被布置用于向解码器发信号通知拼块位置,解码器被布置来将所述拼块流的媒体数据解码为拼块化视频帧,其中拼块化视频帧包括由所述拼块位置信息指示的拼块位置处的至少一个拼块,并且其中拼块表示所述拼块化视频帧的图像区域中的视觉内容的子区域。解码器优选地通信地连接到所述客户端计算机,其包括它是此类客户端计算机的一部分的可能性。

拼块流可以具有媒体格式,其中与拼块流相关联的拼块位置信息发信号通知解码器以生成拼块化视频帧,其包括在包括已解码媒体数据的视频流的拼块化视频帧的图像区域内的特定位置(拼块位置)处的拼块。在组成视频拼接的过程中,通过为包括已解码媒体数据(例如视频拼接)的拼块化视频帧的每个拼块位置从多个拼块流中选择拼块流,拼块流是特别有利的。在拼块流的视频帧中形成拼块的媒体数据可以被包含在诸如nal单元的可寻址数据结构中,该可寻址数据结构可以由在媒体设备中实现的媒体引擎简单地处理。可以通过对拼块流的媒体数据的简单操纵(特别是对拼块流的nal单元的操纵)来实现对拼块的操纵,例如将不同拼块流的拼块组合为视频拼接,而不需要如在一些现有技术中所要求的那样在nal单元中重写信息。这样,可以容易操纵和组合不同拼块流的视频帧中的拼块的媒体数据,而不需要改变媒体数据。此外,可以在客户端侧实现对拼块的操纵,其例如是在形成个性化或定制的视频拼接中所需的,并且可以基于单个解码器来实现视频拼接的处理和渲染,即使当不同拼块源自不同的视频内容。

在实施例中,可以独立地编码每个拼块流的媒体数据(例如,在不同拼块流的拼块之间没有任何编码从属)。编码可以基于诸如hevc、vp9、avc之类的支持拼块化视频帧的编解码器或从这些编解码器中的一个导出的或基于这些编解码器之一的编解码器。为了基于一个或多个拼块化媒体流生成独立可解码拼块流,编码器应该被配置为使得拼块化媒体流的后续视频帧中的拼块的媒体数据被独立编码。可以通过禁用编码器(优选地hevc编码器)的帧间预测功能来实现独立编码的拼块。替代地,可以通过启用帧间预测功能性(例如出于压缩效率的原因)来实现独立编码的拼块,然而在那个情况下,编码器应该被布置为使得:

-跨拼块边界的环路中过滤被禁用;

-无时间拼块间从属;

-两个不同的帧中的两个拼块之间没有从属(以便实现在多个连续帧中的一个位置处的拼块的提取)。

因此,在那种情况下,用于帧间预测的运动矢量需要在媒体流的多个连续视频帧上的拼块边界内被约束。

在实施例中,所述拼块位置信息可以进一步向所述解码器发信号通知:所述第一和第二拼块是基于拼块网格在空间上布置的非重叠拼块。因此,拼块位置信息被布置成使得根据视频流的图像区域内的网格状图案来定位拼块。这样,可以使用不同拼块流的媒体数据来形成包括拼块的非重叠组成的视频帧。

在实施例中,该方法可以进一步包括:提供至少一个清单文件,该清单文件包括一组或多组拼块流标识符或用于确定一组或多组拼块流标识符的信息,优选地为一组或多组url。一组拼块流标识符可以与预定的视频内容相关联,并且所述组拼块流标识符的每个拼块流标识符可以与不同的拼块位置相关联。例如,视频a和b两者都可以作为一组拼块流而是可用的,其中拼块流可以针对不同的拼块位置是可用的,使得客户端设备可以从与不同内容相关联的一组不同拼块流中选择针对某一拼块位置的拼块流。可以基于此类清单文件来选择第一和第二拼块流标识符,该清单文件可以被称为多选(mc)清单文件。mc清单文件可以允许灵活且高效地形成拼块化视频组成。

在实施例中,所述清单文件,优选地基于mpegdash的清单文件(例如基于mpegdash标准的清单文件),可以包括一个或多个适配集合,适配集合定义一组表示,表示包括拼块流标识符。因此,适配集合可以包括以与不同的拼块位置相关联的拼块流集合的形式的视频内容的表示。适配集合优选地是基于mpegdash的适配集合。适配集合通常其特征可以在于:其包含根据相同视频编解码器编码的内容的一个或多个表示,并且由此在表示之间进行切换以便切换内容的播出、或者在某些适配集合中同时播出多个表示的内容是可能的。

在实施例中,适配集合中的拼块流标识符可以与空间关系描述(srd)描述符相关联,其中所述空间关系描述符发信号通知所述客户端计算机关于与所述拼块流标识符相关联的拼块流的视频帧的拼块的拼块位置的信息。

在实施例中,适配集合中的所有拼块流标识符与一个空间关系描述(srd)描述符相关联,所述空间关系描述符发信号通知所述客户端计算机关于所述适配集合中识别的拼块流的视频帧的拼块的拼块位置。因此,在此实施例中,仅需要一个srd描述符来向客户端发信号通知多个拼块位置。

例如,可以基于具有语法的srd描述符来描述四个srd:

其中指示拼块的x和y位置的srd参数表示为位置的矢量。因此,基于此新的srd描述符语法,可以实现更紧凑的mpd。在包括大量拼块流表示的清单文件的情况下,此实施例的优点变得更加明显。

在实施例中,所述第一和第二拼块流标识符可以分别是第一和第二统一资源定位符(url)(的一部分),其中关于所述第一和第二拼块流的视频帧中的拼块的拼块位置的信息被嵌入在所述拼块流标识符中。在实施例中,清单文件中的拼块标识符模板可以用于使得所述客户端计算机能够生成拼块流标识符,其中关于所述拼块流的视频帧中的拼块的拼块位置的信息被嵌入。

一个适配集合中的多个srd描述符可能需要模板(例如,如dash规范中所定义的修改的分段模板(segmenttemplate),以用于使得客户端设备能够确定正确的拼块流标识符,例如url(的一部分),其是客户端设备用于请求来自网络节点的正确拼块流所需要的。此类分段模板可以看起来如下:

基础urlbaseurl以及分段模板的object_xobject_y标识符可以被用来通过用拼块流的选定表示的srd描述符中的位置信息代替object_x和object_y标识符来生成与特定拼块位置相关联的拼块流的拼块流标识符,例如url(的一部分)。

在实施例中,所述方法可以进一步包括:请求一个或多个网络节点将基础流传输给所述客户端计算机,所述基础流包括序列信息,所述序列信息与由所述拼块流标识符定义的拼块流的媒体数据需要被组合成由所述解码器可解码的比特流所处的顺序相关联。

在实施例中,所述方法可以进一步包括:请求一个或多个网络节点将与所述至少第一和第二拼块流相关联的基础流传输给所述客户端计算机,所述基础流包括序列信息,所述序列信息与所述第一和第二拼块流的媒体数据需要被组合为所述比特流所处的顺序相关联;以及将所述序列信息用于将所述第一和第二媒体数据以及所述第一和第二位置信息组合为所述比特流。

在实施例中,所述方法可以进一步包括:提供用户接口,该用户接口被配置用于选择用于组成视频拼接的拼块流;所述用户接口包括用于选择与第一拼块位置相关联的至少第一拼块流和与第二拼块位置相关联的至少第二拼块流的可选项目;

通过与所述可选项目的所述一个或多个进行交互来选择所述第一和第二拼块流。因此,mc清单文件中的信息可以被用来在显示器上生成和渲染图形用户接口,其允许容易地确定诸如视频拼接之类的拼块化视频组成。

在实施例中,所述方法可以进一步包括:请求网络节点传输清单文件,所述清单文件包括与所述第一拼块流相关联的第一url的至少一部分和与所述第二拼块流相关联的第二url的至少一部分;将所述清单文件用于请求一个或多个网络节点将所述第一和第二拼块流的媒体数据和拼块位置信息传输给所述客户端计算机。在此实施例中,将关于应该形成拼块化视频组成的所选拼块流的信息发送到网络,并且作为响应,将定义拼块化视频组成的“个性化”清单文件发送到客户端设备。

在实施例中,可以将由所述第一组拼块流标识符所定义的拼块流的媒体数据作为(拼块)轨道存储在包括与所述第一视频内容相关联的媒体数据的第一拼块流数据结构中,并且可以将由所述第二组拼块流标识符所定义的拼块流的媒体数据作为(拼块)轨道存储在包括与所述第二视频内容相关联的媒体数据的第二数据结构中。

在实施例中,所述第一和/或第二拼块流数据结构还可以包括包含序列信息的基础轨道,优选地所述序列信息包括提取符,其中每个提取符指的是所述拼块流数据结构之一的拼块轨道之一中的媒体数据。在实施例中,所述第一和/或第二数据结构可以具有基于iso/iec14496-12iso基础媒体文件格式(isobmff)或其针对avc的变型和iso基础媒体文件格式中的nal单元结构化视频的hevciso/iec14496-15运送的数据容器格式。

在实施例中,基于诸如rtp协议的用于分组化媒体数据的传送协议或(http)自适应流式传输协议、媒体流式传输协议或媒体传送协议的数据容器来格式化所述至少第一和第二拼块流。

在实施例中,基于支持用于将媒体数据编码成拼块化视频帧的编码器模块的编解码器对所述第一和第二拼块流的所述媒体数据进行编码,优选地,所述编解码器选自如下之一:hevc、vp9、avc或者从这些编解码器之一导出或基于其的编解码器。

在实施例中,可以基于在比特流级别处定义的数据结构,优选地基于由诸如h.264/avc和hevc视频编码标准之类的编码标准所定义的网络抽象层(nal)来构造所述第一和第二拼块流的媒体数据和拼块位置信息,其可以由所述解码器处理。

在实施例中,可以将与拼块流的视频帧中的一个拼块相关联的媒体数据包含于在比特流级别处定义的可寻址数据结构中,优选地,所述可寻址数据结构是nal单元。

在一个实施例中,与拼块化视频帧中的一个拼块相关联的已编码媒体数据可以被构造成网络抽象层(nal)单元,如从h.264/avc和hevc视频编码标准或相关联的编码标准中已知的那样。在hevc编码器的情况下,这可以通过要求一个hevc拼块包括一个hevc分片来实现,其中hevc分片定义包含在一个独立分片分段中的整数个编码树单元以及在如hevc规范所定义的同一访问单元内的下一个独立分片分段(如果有的话)之前的所有随后的从属分片分段(如果有的话)。可以在编码器信息中将此要求发送给编码器模块。要求在nal单元中包含视频帧的一个拼块的媒体数据允许容易地组合不同拼块流的媒体数据。

在实施例中,所述清单文件可以包括与一个或多个拼块流标识符相关联的一个或多个从属参数,从属参数发信号通知所述客户端计算机:与所述从属参数相关联的拼块流的媒体数据的解码依赖于至少一个基础流的元数据。在实施例中,基础流可以包括序列信息(例如提取符),用于向客户端计算机发信号通知由所述清单文件中的所述拼块流标识符定义的拼块流的媒体数据需要被组合为被所述解码器可解码的比特流所处的顺序。在实施例中,从属参数可以向客户端计算机发信号通知:共同具有相同的从属参数且具有不同拼块位置的拼块流的媒体数据和拼块位置信息,由此拼块流优选地属于至少两个不同的适配集合,优选地基于mpegdash标准的适配集合基于基础流的元数据而可组合为由解码器可解码的一个比特流(例如与解码器使用的编解码器相符合的比特流)。

在实施例中,所述一个或多个从属参数可以指向一个或多个表示,所述一个或多个表示定义所述至少一个基础流。在实施例中,定义基础流的表示可以由表示id来识别,其中一个或多个从属参数可以指向基础流的表示id。

在实施例中,所述一个或多个从属参数可以指向一个或多个适配集合,所述一个或多个适配集合包括定义所述至少一个基础流的至少一个表示。在实施例中,包括定义基础流的表示的适配集合可以由适配集合id来识别。因此,可以定义basetrackdependencyid属性以用于明确地向客户端设备发信号通知:所请求的表示依赖于在清单中的某个别的地方(例如,在由适配集合id识别的另一适配集合中)定义的基础轨道中的元数据。basetrackdependencyid属性可以触发在清单文件中的整个表示集合中搜索具有对应标识符的一个或多个基础轨道。在实施例中,basetrackdependencyid属性可以用于发信号通知是否需要基础轨道以用于对表示进行解码,其中基础轨道没有位于与所请求的表示相同的适配集合中。

当在表示级别上定义了从属参数时,对通过所有表示进行搜索需要索引清单文件中的所有表示。特别是在媒体应用中,其中清单文件中的表示的数量可能变得相当大,例如数百个表示,通过清单文件中的所有表示进行搜索对于客户端设备而言可能变得处理密集。因此,在实施例中,可以在清单文件中提供一个或多个参数,其使得客户端设备能够通过mpd中的表示来执行更高效的搜索。特别地,在实施例中,清单文件可以包括一个或多个从属位置参数,其中从属位置参数向客户端计算机发信号通知其中定义了至少一个基础流的清单文件中的至少一个位置,所述基础流包括用于对所述清单文件中定义的一个或多个拼块流的媒体数据进行解码的元数据。在实施例中,所述清单文件中的所述基础流的位置与由适配集合id识别的预定义适配集合相关联。

因此,清单文件中的表示元素可以与(例如,基于adaptationset_id)指向至少一个适配集合的从属表示位置(dependentrepresentationlocation)属性相关联,其中可以找到包括从属表示的一个或多个相关联的表示。这里,从属可以涉及元数据从属和/或解码从属。在实施例中,从属表示位置的值可以是由空格分开的一个或多个adaptationset@id。

在本发明的实施例中,适配集合的特征在于它包括一个或多个表示,所述表示当由dash客户端设备选择时允许这些一个或多个表示涉及的内容流的无缝播出,由此,如果存在多于一个表示,则无缝播出是指同步地播出,和/或从播出由一个表示引用的内容无缝(例如,无中断)地切换到播出由同一适配集合的另一表示所引用的内容。

在实施例中,所述清单文件可以进一步包括与一个或多个表示或一个或多个适配集合相关联的一个或多个群组从属参数,群组从属参数向所述客户端设备发信号通知表示的群组,包括定义所述至少一个基础流的表示。因此,在此实施例中,可以将dependencygroupid参数用于对清单文件内的表示进行分组,以便使得客户端设备能够更高效地搜索一个或多个从属表示的播出所需的表示(即,为了播出该流而需要来自关联的基础流的元数据的拼块流表示)。

在实施例中,可以在表示的级别处定义dependencygroupid参数(即,将用该参数标记属于该群组的每个表示)。在另一实施例中,可以在适配集合级别处定义dependencygroupid参数。在用dependencygroupid参数标记的一个或多个适配集合中的表示可以定义表示的群组,在其中客户端设备可以查找定义诸如基础流之类的元数据流的一个或多个表示。

在另一方面中,本发明可以涉及一种客户端计算机,优选为自适应流式客户端计算机,包括:具有随其包含的程序的至少一部分的计算机可读储存介质;以及具有随其包含的计算机可读程序代码的计算机可读储存介质,以及耦合到所述计算机可读储存介质的处理器,优选为微处理器,其中响应于执行所述计算机可读程序代码,所述处理器被配置为执行包括如下的可执行操作:选择与第一拼块位置相关联的至少第一拼块流标识符,并且选择与第二拼块位置相关联的至少第二拼块流标识符,所述第一拼块位置不同于所述第二拼块位置;基于所选择的第一拼块流标识符,请求一个或多个网络节点将与第一拼块位置相关联的第一拼块流传输给所述客户端计算机,并且基于所选择的第二拼块流标识符请求将与第二拼块位置相关联的第二拼块流传输给所述客户端计算机;将至少所述第一和第二拼块流的媒体数据和拼块位置信息组合为由所述解码器可解码的比特流,其中所述解码器被布置成生成拼块化视频帧,其中拼块化视频帧包括表示所述第一拼块流的媒体数据的视觉内容的在所述第一拼块位置处的第一拼块以及表示所述第二拼块流的媒体数据的视觉内容的在所述第二拼块位置处的第二拼块。

在一个方面中,本发明可以涉及一种客户端计算机,优选为自适应流式客户端计算机,包括:具有随其包含的程序的至少一部分的计算机可读储存介质;以及具有随其包含的计算机可读程序代码的计算机可读储存介质,以及耦合到所述计算机可读储存介质的处理器,优选为微处理器,其中响应于执行所述计算机可读程序代码,所述处理器被配置为执行包括如下的可执行操作:接收清单文件,所述清单文件包括用于确定拼块流标识符的组的信息,优选为url的组,每组拼块流标识符与预定视频内容以及与多个拼块位置相关联;拼块流标识符识别包括媒体数据和拼块位置信息的拼块流,所述拼块位置信息用于发信号通知解码器以生成包括在拼块位置处的至少一个拼块的拼块化视频帧,所述拼块定义了所述视频帧的图像区域中的视觉内容的子区域;所述清单文件包括一个或多个从属参数,用于向所述客户端计算机发信号通知:共同具有相同的从属参数且具有不同拼块位置的拼块流的媒体数据和拼块位置信息基于基础流的元数据而可组合为由所述解码器模块可解码的一个比特流;和,

-使用所述清单文件中的信息以用于确定与来自第一组拼块流标识符的第一拼块位置相关联的第一拼块流标识符和与来自第二组拼块流标识符的第二拼块位置相关联的第二拼块流标识符;所述第一拼块位置不同于所述第二拼块位置;所述第一组拼块流标识符与包括第一视频内容的至少一部分的已编码媒体数据的拼块流相关联,所述第二组拼块流标识符与包括第二视频内容的至少一部分的已编码媒体数据的拼块流相关联,优选地,所述第一和第二视频内容是不同的内容,并且优选地,组中的每个拼块流标识符与相应的第一或第二视频内容的不同拼块位置相关联。

-使用所述清单文件中的信息以用于确定定义与所述第一和第二拼块流相关联的基础流的基础流标识符;和,

-使用所述第一和第二拼块流标识符和所述基础流标识符以用于请求一个或多个网络节点将所述第一和第二拼块流的媒体数据和拼块位置信息以及所述基础流的元数据传输给所述客户端计算机。

在一个方面中,本发明可以涉及客户端计算机,优选为自适应流式客户端计算机,包括:具有随其包含的程序的至少一部分的计算机可读储存介质;以及具有随其包含的计算机可读程序代码的计算机可读储存介质,以及耦合到所述计算机可读储存介质的处理器,优选为微处理器,其中响应于执行所述计算机可读程序代码,所述处理器被配置为执行包括如下的可执行操作:

-从第一组拼块流标识符中确定与第一拼块位置相关联的第一拼块流标识符,并从第二组拼块流标识符中确定与第二拼块位置相关联的第二拼块流标识符,所述第一拼块位置不同于所述第二拼块位置;所述第一组拼块流标识符与包括第一视频内容的至少一部分的已编码媒体数据的拼块流相关联,

所述第二组拼块流标识符与包括第二视频内容的至少一部分的已编码媒体数据的拼块流相关联,优选地,第一和第二视频内容是不同的内容,并且优选但不一定的是,组中的每个拼块流标识符分别与第一或第二视频内容的至少一部分的不同拼块位置相关联。

其中所述客户端计算机优选地通信地可连接到解码器,

其中所述解码器被配置用于将一个或多个拼块流的已编码媒体数据解码为包括多个视频帧的已解码视频流,其中每个帧包括一个或多个拼块,

其中由所述第一和第二组拼块流标识符定义的每个拼块流与拼块位置信息相关联,所述拼块位置信息被布置用于发信号通知所述解码器以将至少一个拼块定位在至少一个拼块位置处,拼块定义了所述解码视频流的视频帧的图像区域中的视觉内容的子区域;

-优选地请求网络节点传输清单文件,所述清单文件包括第一url或用于确定与所述第一拼块流相关联的第一url的信息以及第二url或用于确定与所述第二拼块流相关联的url的信息,并且可选地第三url或用于确定与基础流相关联的url的信息,所述基础流包括用于将所述第一和第二拼块流的媒体数据组合为由所述解码器可解码的比特流的元数据;和,

-使用所述清单文件以用于请求一个或多个网络节点将所述第一和第二拼块流的媒体数据和拼块位置信息以及可选的所述基础流的元数据传输给所述客户端计算机。

在实施例中,本发明可以涉及用于存储供客户端计算机使用的数据结构(优选为清单文件)的非暂时性计算机可读储存介质,所述数据结构包括:

清单文件,所述清单文件包括用于优选地由所述客户端计算机确定拼块流标识符的组的信息,优选为url的组,每组拼块流标识符与不同的预定视频内容以及与预定内容的多个拼块位置相关联;拼块流标识符识别包括预定内容的媒体数据和拼块位置信息的拼块流,所述拼块位置信息用于发信号通知解码器以生成包括在拼块位置处的至少一个拼块的拼块化视频帧,所述拼块定义了所述视频帧的图像区域中的视觉内容的子区域;

所述清单文件进一步包括与一个或多个拼块流相关联的一个或多个从属参数,所述一个或多个从属参数指向所述清单文件中的至少一个基础流,所述从属参数向所述客户端计算机发信号通知:共同具有相同的从属参数并且具有不同拼块位置的拼块流的媒体数据和拼块位置信息基于所述至少一个基础流的元数据而可组合为由所述解码器可解码的一个比特流。换言之,符合解码器所使用的编解码器的比特流。

在实施例中,与预定视频内容相关联的一组拼块流标识符可以被定义为包括一组表示的适配集合,其中表示定义了拼块流。

在实施例中,所述清单文件可以包括与一个或多个拼块流标识符相关联的一个或多个从属参数,从属参数发信号通知所述客户端计算机:与所述从属参数相关联的拼块流的媒体数据的解码依赖于至少一个基础流的元数据,优选地所述基础流包括序列信息,所述序列信息用于发信号通知客户端计算机由所述清单文件中的所述拼块流标识符定义的拼块流的媒体数据需要被组合为由所述解码器可解码的比特流所处的顺序。换言之,组合为与解码器所使用的编解码器相符合的比特流。

在实施例中,所述一个或多个从属参数可以指向一个或多个表示,优选地,所述一个或多个表示由表示id来识别,所述一个或多个表示定义所述至少一个基础流;或者,其中所述一个或多个从属参数指向一个或多个适配集合,优选地,所述一个或多个适配集合由适配集合id识别,所述一个或多个适配集合包括定义所述至少一个基础流的至少一个表示。

在实施例中,所述清单文件可以进一步包括一个或多个从属位置参数,从属位置参数发信号通知所述客户端计算机在其中定义了至少一个基础流的所述清单文件中的至少一个位置,所述基础流包括用于对所述清单文件中定义的一个或多个拼块流的媒体数据进行解码的元数据,优选地,所述清单文件中的所述位置是由适配集合id识别的预定义适配集合。

在实施例中,所述清单文件可以进一步包括与一个或多个表示或一个或多个适配集合相关联的一个或多个群组从属参数,群组从属参数发信号通知所述客户端设备表示的群组,所述表示的群组包括定义所述至少一个基础流的表示。

在本发明的进一步改进中,清单文件包含进一步指示特定性质的一个或多个参数,所述特定性质优选地是所提供的内容的拼接性质。在本发明的实施例中,该拼接性质被定义,因为多个拼接视频流当基于清单文件的表示被选择并且共同具有此性质时在被解码之后被一起拼连到视频帧以用于呈现,这些视频帧中的每一个在被渲染时构成具有一个或多个视觉内部帧边界的子区域的拼接。在本发明的优选实施例中,将所选拼块视频流作为一个比特流输入到解码器,优选的是hevc解码器。

在另一实施例中,清单文件(优选地基于mpegdash的清单文件)包括一个或多个'spatial_set_id'参数和一个或多个'空间集合类型(spatialsettype)'参数,由此至少一个spatial_set_id参数与spatial_set_type参数相关联。

在实施例中,上面提及的拼接性质参数作为spatial_set_type参数而被包括。

根据本发明的另一实施例,'spatial_set_type'的语义表达了'spatial_set_id'值对整个清单文件有效,并且适用于具有不同'source_id'值的srd描述符。这实现了针对不同的视觉内容使用具有不同'source_id'值的srd描述符的可能性,并且修改'spatial_set_id'的已知语义,因为它的使用被限制在'source_id'的上下文内。在此情况下,无论“source_id”值如何,只要具有srd描述符的表示用其值“拼接”的“spatial_set_type”来共享相同的“spatial_set_id”,则具有srd描述符的表示就具有空间关系。

在本发明的实施例中,拼接性质参数(优选地,spatial_set_type参数)被配置为发信号通知(优选地指示或建议)dash客户端设备针对由srd描述符所定义的每个可用位置选择指向拼块视频流的表示,由此优选地是从共享相同的“spatial_set_id”的表示群组中选择表示。

在本发明的实施例中,客户端计算机(例如dash客户端设备)被布置为根据本发明的实施例来解释清单文件,并且基于包含在清单文件中的元数据而通过从该清单文件中选择表示来检索拼接视频流。

在另一实施例中,可以在视频容器中传送编码器信息。例如,可以在诸如isobmff文件格式(iso/iec14496-12)的视频容器中传送编码器信息。isobmff文件格式指定一组框,其构成用以存储和访问与其关联的媒体数据和元数据的分层结构。例如,针对与内容相关的元数据的根框是“moov”框,而媒体数据被存储在“mdat”框中。更具体地说,“stbl”框或“样本表框”对轨道的媒体样本进行索引,其允许将附加数据与每个样本相关联。在视频轨道的情况下,样本是视频帧。因此,在框“stbl”内添加被称为“拼块编码器信息”或“stei”的新框可用于存储具有视频轨道的帧的编码器信息。

本发明还可以涉及包括软件代码部分的程序产品,该软件代码部分被配置用于当在计算机的存储器中运行时根据上述方法步骤中的任何一个执行方法步骤。

将参考附图进一步说明本发明,附图将示意性地示出根据本发明的实施例。将理解的是,本发明没有以任何方式被限制到这些特定实施例。

附图说明

图1a-1c示意性地描绘了根据本发明实施例的视频拼接组成器。

图2a-2c示意性地描绘了根据本发明的各种实施例的拼块化模块。

图3描绘了根据本发明的另一个实施例的拼块化模块。

图4描绘了根据本发明的实施例的经协调的拼块化模块的系统。

图5描绘了根据本发明的又一实施例的拼块化模块的使用。

图6描绘了根据本发明的实施例的拼块流格式化器。

图7a-7d描绘了根据本发明的各种实施例的用于形成和存储拼块流的过程和媒体格式。

图8描绘了根据本发明的另一实施例的拼块流格式化器。

图9描绘了根据本发明的实施例的rtp拼块流的形成。

图10a-10c描绘了根据本发明的实施例的被配置用于基于清单文件来渲染视频拼接的媒体设备。

图11a和11b描绘了根据本发明的另一实施例的被配置用于基于清单文件来渲染视频拼接的媒体设备。

图12a和12b描绘了根据本发明的实施例的拼块流的has分段的形成。

图13a-13d描绘了视觉相关内容的拼接视频的示例。

图14是图示出可以如本公开中所描述的那样使用的示例性数据处理系统的框图。

具体实施方式

图1a-1c示意性地描绘了根据本发明的实施例的视频拼接组成器系统。特别地,图1a描绘了视频拼接组成器系统100,其实现了选择不同的独立媒体流并将其组合为可以在包括单个解码器模块的媒体设备的显示器上呈现的视频拼接。如下面将更详细地描述的,视频拼接组成器可以使用所谓的拼块化视频流和相关联的拼块流,以便构造不同媒体流的媒体数据,从而可以以高效和灵活的方式形成(“组成”)不同的视频拼接。

在本公开中,术语“拼块化媒体流”或“拼块化流”是指包括表示图像区域的视频帧的媒体流,其中每个视频帧包括一个或多个子区域,其可以被称为“拼块”。拼块化视频帧的每个拼块可以与表示拼块的视觉内容的媒体数据和拼块位置相关。视频帧中的拼块的进一步特征在于:与拼块相关联的媒体数据由解码器模块独立可解码。这方面将在下面更详细地描述。

此外,在本公开中,术语“拼块流”是指包括解码器信息的媒体流,所述解码器信息用于指示解码器模块来将拼块流的媒体数据解码成包括在视频帧内的特定拼块位置处的单个拼块的视频帧。发信号通知拼块位置的解码器信息被称为拼块位置信息。

如将在下文中更详细描述的那样,通过选择与拼块化媒体流的拼块化视频帧中的某个拼块位置处的拼块相关联的媒体数据并以可以被客户端设备访问的媒体格式存储如此收集的媒体数据,可以基于拼块化流来生成拼块流。

图1b图示出了可以由图1a的视频拼接组成器使用的拼块化媒体流和相关联的拼块流的概念。特别地,图1b描绘了多个拼块化视频帧1201-n,即被划分成多个拼块1221-4(在此特定示例中为四个拼块)的视频帧。与拼块化视频帧的拼块1221相关联的媒体数据不具有对同一视频帧的其他拼块1222-4的媒体数据的任何空间解码从属以及对早先或未来视频帧的其他拼块1222-4的媒体数据的任何时间解码从属。

这样,与后续拼块化视频帧中的预定拼块相关联的媒体数据可以由媒体设备中的解码器模块独立解码。换言之,客户端设备可以接收一个拼块1221的媒体数据并且从接收到的最早的随机接入点开始将媒体数据解码为视频帧,而不需要其他拼块的媒体数据。这里,随机接入点可以与视频帧相关联,所述视频帧不具有对早先和/或稍后视频帧(例如,i帧或其等同物)的任何时间解码从属。这样,可以将与一个个体拼块相关联的媒体数据作为单个独立拼块流传输给客户端设备。下面更详细地描述关于如何可以基于一个或多个拼块化媒体流来生成拼块流以及如何可以将拼块流存储在网络节点或媒体设备的储存介质上的示例。

可以使用不同的传送协议来将已编码比特流传输给客户端设备。例如,在实施例中,可以使用http自适应流式传输(has)协议来将拼块流递送到客户端设备。在那种情况下,拼块流中的视频帧序列可以被临时划分在通常包括2-10秒媒体数据的时间分段1241,2(如图1b中所描绘的)中。这样的时间分段可以作为媒体文件而被存储在储存介质上。在实施例中,时间分段可以以不具有对时间分段或其他时间分段中的其他帧(例如i帧)的时间编码从属的媒体数据开始,使得解码器可以直接开始解码has分段中的媒体数据。

因此,在本公开中,术语“独立编码的”媒体数据意指在与视频帧中的拼块相关联的媒体数据和在该拼块外(例如,在邻近拼块中)的媒体数据之间不存在空间编码从属,并且在不同视频帧中的不同位置处的拼块的媒体数据之间没有时间编码从属。术语独立编码的媒体数据应与媒体数据可以具有的其他类型的(非)从属区分开来。例如,如下面将更详细描述的,媒体流中的媒体数据可以依赖于包含解码器为了对媒体流进行解码所需要的元数据的关联媒体流。

如本公开中所描述的拼块的概念可以被不同的视频编解码器支持。例如,高效视频编码(hevc)标准允许使用独立可解码的拼块(hevc拼块)。hevc拼块可以由编码器创建,该编码器将媒体流的每个视频帧划分为定义以编码树块(ctb)为单位表达的预定宽度和高度的拼块的多个行和列(“拼块的网格”)。hevc比特流可以包括解码器信息,该解码器信息用于通知解码器:应该如何将视频帧划分在拼块中。解码器信息可以以不同的方式通知解码器关于视频帧的拼块划分。在一个变型中,解码器信息可以包括关于n乘m个拼块的均匀网格的信息,其中可以基于帧的宽度和ctb大小来推断网格中的拼块的大小。由于舍入的不准确性,并非所有拼块都可以具有确切相同的大小。在另一变型中,解码器信息可以包括关于拼块的宽度和高度(例如就编码树块单元)的明确信息。这样,可以将视频帧划分成不同大小的拼块。只有针对最后一行和最后一列的拼块,大小可以从剩余的ctb数目中导出。在此之后,分组化器可以将原生hevc比特流分组化到由传送协议所使用的合适的媒体容器中。

支持独立可解码拼块的其他视频编解码器包括google的视频编解码器vp9或者某种程度上的mpeg-4第10部分avc/h.264,高级视频编码(avc)标准。在vp9编码中,沿着垂直拼块边界而打破从属,这意味着可以同时解码在同一拼块行中的两个拼块。类似地,在avc编码中,可以使用分片来将每个帧划分在多个行中,其中这些行中的每一个都在媒体数据是独立可解码的意义上定义了拼块。因此,在本公开中,术语“拼块”不限于hevc拼块,而是一般性地定义了在视频帧的图像区域内的任意形状和/或尺度的子区域,其中拼块的边界内的媒体数据是独立可解码的。在其他视频编解码器中,诸如分段或分片之类的其他术语可以用于此类独立可解码的区域。

图1a的视频拼接组成器可以包括连接到一个或多个媒体源1081,2(例如一个或多个相机)的拼接拼块发生器104和/或第三方内容提供商(未示出)的一个或多个(内容)服务器。可以根据数据容器格式(例如iso/iec14496-12iso基础媒体文件格式(isobmff)或其针对avc的变型和iso基础媒体文件格式中的nal单元结构化视频的hevciso/iec14496-15运送)而基于以容器格式存储的合适的视频/音频编解码器来编码(压缩)由照相机捕获或由服务器提供的媒体数据,例如视频数据、音频数据和/或文本数据(例如,用于字幕)。可以将如此编码和格式化的媒体数据进行分组化以用于经由一个或多个网络节点(例如路由器)在媒体流1101,2中传输到网络102中的拼接拼块发生器。

拼接拼块发生器可以生成用于形成视频拼接的一个或多个拼块流1121-4、1131-4(其在以下可以被称为“拼接拼块流”)。可以在网络节点116的储存介质上将该拼接拼块流存储为预定媒体格式的数据文件。可以基于源自一个或多个媒体源的一个或多个媒体流1101,2来形成这些拼接拼块流。拼接拼块流的集合的每个拼接拼块流包括用于指示解码器生成包括在预定拼块位置处的拼块的视频帧的解码器信息,其中与拼块相关联的媒体数据表示原始媒体流的媒体数据的视觉副本。

例如,如图1a中所示,四个拼接拼块流1121-4中的每一个与包括表示用于形成拼接拼块流的媒体流1102的视觉副本的拼块的视频帧相关联。四个拼接拼块流1121-4中的每一个与在不同拼块位置处的拼块相关联。在拼接拼块流的生成期间,拼块流发生器可以生成定义拼块流之间的关系的元数据。可以将这些元数据存储在清单文件1141,2中。清单文件可以包括拼块流标识符(例如文件名(的一部分))、用于定位其中可以检索到由所述拼块流标识符所识别的拼块流的一个或多个网络节点的地点信息(例如域名(的一部分))、以及与拼块流标识符中的每个或至少一部分相关联的所谓的拼块位置描述符。因此,拼块位置描述符发信号通知客户端计算机(例如dash客户端计算机/设备)关于拼块流标识符所识别的拼块流的视频帧的拼块的尺度(大小)和拼块的空间位置,而拼块流的拼块位置信息发信号通知解码器关于拼块流的视频帧中的拼块的尺度(大小)和空间位置。清单文件还可以包括关于包含在拼块流中的媒体数据的信息(例如质量水平、压缩格式等)。

清单文件(mf)管理器106可以被配置为管理定义存储在网络(例如一个或多个网络节点)中并且可以由客户端设备请求的拼块流的一个或多个清单文件。在实施例中,清单文件管理器可以被配置为将不同的清单文件1141,2的信息组合为可以被客户端设备用来请求期望的视频拼接的另一清单文件。

例如,在实施例中,客户端设备可以向网络节点发送关于期望的视频拼接的信息,并且作为响应,网络节点可以请求清单文件管理器106生成包括形成视频拼接的拼块流的拼块流标识符的另外的清单文件(“定制”清单文件)。mf管理器可以通过组合不同清单文件(的各部分)或通过选择单个清单文件的各部分来生成此清单文件,其中每个拼块流标识符可以与视频拼接的不同拼块位置的拼块流相关。定制的清单文件因此定义了“即时地(onthefly)”生成的特定清单文件(定义所请求的视频拼接)。可以将此清单文件发送到客户端设备,该客户端设备使用清单文件中的信息以便请求形成视频拼接的拼块流的媒体数据。

在另一实施例中,清单文件管理器可以基于所存储的拼块流的清单文件来生成另外的清单文件,其中该另外的清单文件包括与相同的拼块位置相关联的多个拼块流标识符。可以将该另外的清单文件提供给客户端设备,该客户端设备可以使用该另外的清单文件来从多个拼块流中选择特定拼块位置处的期望的拼块流。可以将此类另外的清单文件称为“多选”(mc)清单文件。mc清单文件使得客户端设备能够基于针对视频拼接的拼块位置中的每个是可用的多个拼块流来组成视频拼接。在下文中更详细地描述定制清单文件和多选清单文件。

一旦将拼接拼块流和相关联的清单文件存储在一个或多个网络节点116的储存介质上,则媒体数据就可以被客户端设备1171,2访问。客户端设备可以被配置用于基于关于诸如清单文件或其等同物的拼接拼块流的信息来请求拼块流。可以在被配置为处理和渲染所请求的媒体数据的媒体设备1181,2上实现客户端设备。为此,媒体设备还可以包括用于将拼块流的媒体数据组合为比特流的媒体引擎1191,2,该比特流被输入到被配置为将比特流中的信息解码为视频拼接1201,2的视频帧的解码器。媒体设备通常可以涉及内容处理设备,例如,诸如电子平板电脑、智能电话、笔记本电脑、媒体播放器、电视等的(移动)内容播出设备。在一些实施例中,媒体设备可以是被配置用于处理和临时存储以供内容播出设备将来消费的内容的内容储存设备或机顶盒。

可以经由带内或带外通信信道将关于拼块流的信息提供给客户端设备。在实施例中,客户端设备可以被提供有清单文件,该清单文件包括多个拼块流标识符,该多个拼块流标识符识别用户可以从中进行选择的拼块流。客户端设备可以使用清单文件来在媒体设备的屏幕上渲染(图形)用户接口(gui),其允许用户选择(“组成”)视频拼接。这里,组成视频拼接可以包括选择拼块流并且将这些所选拼块流放置在某个拼块位置处,使得形成视频拼接。特别地,媒体设备的用户可以例如经由触摸屏或基于手势的用户接口来与ui交互,以便选择拼块流并将拼块位置指派给所选拼块流中的每个。可以在选择多个拼块流标识符中翻译用户交互。

如以下将更详细地描述的,可以通过级联表示不同拼块流的视频帧的比特序列来形成比特流,在比特流中插入拼块位置信息并且基于预定编解码器(例如hevc编解码器)来将比特流格式化,使得单个解码器模块可以对它进行解码。例如,客户端设备可以请求个体hevc拼块流的集合并且将所请求的流的媒体数据转发到可以将不同拼块流的视频帧组合为符合hevc的比特流的媒体引擎,该符合hevc的比特流可以由单个hevc解码器模块进行解码。因此,可以将所选拼块流组合为单个比特流,并且使用单个解码器模块来解码,该单个解码器模块能够对比特流进行解码并且在其上实现客户端设备的媒体设备的显示器上将媒体数据渲染为视频拼接。

可以使用合适的(可缩放的)媒体分发技术来将客户端设备选择的拼块流递送到客户端设备。例如,在实施例中,可以使用合适的流式传输协议(例如rtp流式传输协议)或自适应流式传输协议(例如http自适应流式传输(has)协议)来将拼块流的媒体数据广播、多播(包括例如以太网多播和ip多播的基于网络的多播以及应用级别或覆盖多播两者)或单播到客户端设备。在后者的实施例中,可以将拼块流暂时分段在has分段中。媒体设备可以包括自适应流式传输客户端设备,其可以包括接口,该接口用于与网络中的一个或多个网络节点(例如一个或多个has服务器)进行通信并且基于自适应流式传输协议从网络节点请求和接收拼块流的分段。

图1c更详细地描绘了拼接拼块发生器。如图1c中所示,可以将由媒体源1082,3生成的媒体流1102,3传输到拼接拼块发生器,其可以包括用于将媒体流转换成拼块化拼接流的一个或多个拼块化模块126,其中拼块化拼接流的视频帧中的每个拼块(或拼块的至少一部分)的视觉内容是该媒体流的视频帧中的视觉内容的(缩放)副本。拼块化拼接流因此表示视频拼接,其中每个拼块的内容表示媒体流的视觉副本。一个或多个拼块流格式化器128可以被配置为基于拼块化拼接流来生成单独的拼块流和相关联的清单文件1141,2,其可以被存储在网络节点116的储存介质上。在实施例中,可以在媒体源处实现拼块化模块。在另一实施例中,可以在网络中的网络节点处实现拼块化模块。拼块流可以与解码器信息相关联,以用于通知解码器模块(其支持本公开中所限定的拼块的概念)关于特定的拼块布置(例如拼块尺度、拼块在视频帧中的位置等)。

可以将参考图1a-1c描述的视频拼接组成器系统实现为内容分发系统的一部分。例如,可以将视频拼接组成器系统(的一部分)实现为内容递送网络(cdn)的一部分。此外,虽然在附图中客户端设备在(移动)媒体设备中被实现,但客户端设备(的功能性的一部分)也可以在网络中(特别是在网络的边缘处)实现。

图2a-2c描绘了根据本发明的各种实施例的拼块化模块。特别地,图2a描绘了包括用于接收特定媒体格式的媒体流202的输入的拼块化模块200。当需要时,拼块化模块中的解码器模块204可以将已编码媒体流转换成允许在像素域中进行处理的已解码未压缩媒体流。例如,在实施例中,可以将媒体流解码成具有原生视频格式的媒体流。可以将媒体流的原生媒体数据馈送到拼接构建器206,所述拼接构建器206被配置为在像素域中形成拼接流。在此过程期间,已解码媒体流的视频帧可以被缩放并且可以在网格配置(拼接)中对缩放帧的副本进行排序。可以将这样排列的视频帧网格一起拼连成表示包括子区域的图像区域的视频帧,其中每个子区域表示原始媒体流的视觉副本。因此,拼接流可以包括视频流的n×m个视觉上相同的复制品的拼接。

然后将表示视频拼接的比特流转发到编码器模块208,所述编码器模块208被配置为将比特流编码成包括表示拼块化视频帧的已编码媒体数据的拼块化拼接流2101,其中可以独立地编码拼块化视频帧中的每个拼块的媒体数据。例如,编码器模块可以是基于支持拼块的编解码器的编码器,例如,hevc编码器模块、vp9编码器模块或其衍生物。

这里,可以选择拼接流的视频帧中的子区域的尺度和拼块化的拼接流的拼块化视频帧中的拼块的尺度,使得每个子区域匹配拼块。拼接构建器可以使用分区信息212,以便确定拼接流的视频帧中的子区域的数目和/或尺度。

拼接流可以与编码器信息214相关联,以用于通知编码器该流表示具有预定网格大小的拼接流,并且该拼接流需要被编码成拼块化拼接流,其中该拼块网格匹配拼接流的子区域的网格。因此,编码器信息可以包括用于编码器产生拼块化视频帧的指令,该拼块化视频帧具有与拼接流的视频帧中的子区域的网格匹配的拼块网格。此外,编码器信息可以包括用于将视频流中的拼块的媒体数据编码成可寻址数据结构(例如,nal单元)的信息并且对后续视频帧中的拼块的媒体数据进行编码可以被独立解码。

可以使用关于拼接流的视频帧中的子区域的网格大小的信息(例如,分区信息212)以用于确定网格大小信息,该网格大小信息用于设置与其生成的拼块化视频帧相关联的拼块网格的尺度(例如,视频帧中的拼块的数目和拼块的尺寸)。

为了允许基于一个或多个拼块化媒体流形成独立的拼块流并基于拼块流由客户端设备形成拼接视频,应该将拼块视频帧的一个拼块的媒体数据包含在明确界定的可寻址数据结构中,该数据结构可以由编码器生成并且可以在其被馈送到解码器的输入之前由解码器和在客户端侧处处理接收到的媒体数据的任何其他模块单个地处理。

例如,在一个实施例中,可以如根据h.264/avc及hevc视频编码标准已知的那样将与拼块化视频帧中的一个拼块相关联的已编码媒体数据构建为网络抽象层(nal)单元。在hevc编码器的情况下,这可以通过要求一个hevc拼块包括一个hevc分片来实现。这里,hevc分片定义包含在一个独立分片分段以及在与hevc规范所定义的相同的存取单元内的下一个独立分片分段(如果有的话)之前的所有后续从属分片分段(如果有的话)中的整数个编码树单元。可以在编码器信息中将此要求发送给编码器模块。

在编码器模块被配置用于生成包括一个hevc分片的一个hevc拼块的情况下,编码器模块可以产生在网络抽象层(nal)的级别上被格式化的已编码拼块化视频帧。这在图2b中被示意性地描绘。如在此图中所示,拼块化视频帧210可以包括多个拼块,例如,在图2b的示例中为九个拼块,其中每个拼块表示媒体流的视觉副本,例如,同一媒体流或两个或更多不同的媒体流。已编码拼块化视频帧224可以包括非vclnal单元216,其包括如hevc标准中所定义的元数据(例如,vps、pps和sps)。非vclnal单元可以通知解码器模块有关媒体数据的质量级别、用于对媒体数据进行编码和解码的编解码器等。在非vcl之后可以是vclnal单元218-222的序列,其每一个包括与一个拼块相关联的分片(例如,i分片、p分片或b分片)。换言之,每个vclnal单元可以包括拼块化视频帧的一个已编码拼块。分片分段的头部可以包括拼块位置信息,即用于通知解码器模块关于视频帧中的拼块(其等同于分片,因为媒体格式被限制为每分片的一个拼块)的位置的信息。此信息可以由slice_segment_address参数给出,其在图片的编码树块光栅扫描中指定了在分片分段中的第一编码树块的地址,如hevc规范所定义的那样。slice_segment_address参数可以被用来选择性地过滤出自比特流的与拼块相关联的媒体数据。这样,非vclnal单元和vclnal单元的序列可以形成已编码拼块化视频帧224。

为了基于一个或多个拼块化媒体流来生成独立可解码拼块流,编码器应该被配置为使得拼块化媒体流的后续视频帧中的拼块的媒体数据被独立地编码。可以通过禁用编码器的帧间预测功能性来实现独立编码的拼块。替代地,可以通过启用帧间预测功能性(例如出于压缩效率的原因)来实现独立编码的拼块,然而在那种情况下,编码器应该被布置为使得:

-跨拼块边界的环路中过滤被禁用。

-无时间拼块间从属;

-两个不同的帧中的两个拼块之间没有从属(以便实现提取在多个连续帧中的一个位置处的拼块)。

因此,在那个情况下,用于帧间预测的运动矢量需要在媒体流的多个连续视频帧上的拼块边界内被约束。

如下文将示出的,基于可在编码器/解码器级别上单个地进行处理的明确定界的可寻址数据结构(诸如nal单元)来操纵拼块的媒体数据对于如本公开中所描述的那样基于多个拼块流来形成视频拼接是特别有利的。

可以将参考图2a描述的编码器信息在拼接流的比特流中或者在带外通信信道中传送到编码器模块。如图2c中所示,比特流可以包括帧230的序列(每一个视觉地包括n个拼块的拼接),其中每个帧包括补充增强信息(sei)消息232和视频帧234。编码器信息可以作为sei消息而被插入在使用基于h.264/mpeg-4的编解码器来编码的mpeg流的比特流中。可以将sei消息定义为包括补充增强信息(sei)的nal单元(参见iso/iec14496-10avc中的7.4.1nal单元语义)。可以将sei消息236定义为类型5消息:未注册用户数据。被称为未注册用户数据的sei消息类型允许在比特流中携带任意数据。sei消息可以包括用于指定编码器信息的预定数目的参数,即包括需要编码器208需要产生的拼块的布置。这些参数可以包括标志,该标志为真时发信号通知拼块行和拼块列的均匀间距,其然后伴随着一对可以从中导出行数和列数的整数。当均匀间距标志为假时,存在两个整数矢量,从中可以分别导出每个拼块的宽度和高度。sei消息可以携带额外的信息以便协助解码过程。尽管如此,它们并非是为了构建解码信号而强制存在的,因此不要求相符的解码器来将此额外的信息考虑在内。在iso/iec14496-10:2012中定义了各种sei消息及其语义(附录d.2)。sei消息可以类似地与使用基于h.265/hevc的编解码器来编码的mpeg流一起使用。在iso/iec23008-2:2013中定义了各种sei消息及其语义(附录d.3)。

在本发明的另一实施例中,可以在编码比特流中传送编码器信息。帧头部中的布尔型标志可以指示是否存在此类信息。在标志被设置的情况下,在标志之后的比特可以表示编码器信息。

在另一实施例中,可以在视频容器中传送编码器信息。例如,可以在诸如isobmff文件格式(iso/iec14496-12)的视频容器中传送编码器信息。isobmff文件格式指定一组框,其构成用以存储和访问与其关联的媒体数据和元数据的分层结构。例如,针对与内容相关的元数据的根框是“moov”框,而媒体数据被存储在“mdat”框中。更具体地说,“stbl”框或“样本表框”对轨道的媒体样本进行索引,其允许将附加数据与每个样本相关联。在视频轨道的情况下,样本是视频帧。因此,在框“stbl”内添加被称为“拼块编码器信息”或“stei”的新框可用于存储具有视频轨道的帧的编码器信息。

在实施例中,图2a的拼块化模块可以包括缩放模块205,其可以用于缩放,例如,放大或缩小媒体流的视频帧的副本。这里,缩放的视频帧可以覆盖整数个子区域,使得拼接流的视频帧中的子区域的边界与由拼块编码器模块生成的拼块化拼接流中的拼块化视频帧的拼块网格相匹配。拼接构建器可以使用缩放的视频帧以便在像素域中构建已编码拼接流,其中拼接2102,3(的一些)可以具有不同的大小,如图2a中所示。此类拼接流可以用于形成例如个性化的“画中画”视频拼接或用于启用放大的突出显示。在图2a的示例中,拼块的数目保持相同。在其他实施例中,视频帧可以包括不同尺度的拼块。

因此,参考图2a-2c描述的拼块化模块允许使用支持拼块的编码器(例如被配置为生成拼块化拼接流,即符合hevc的比特流的(标准的)hevc编码器)而基于媒体流来形成拼块化拼接流,其中将视频帧中的拼块的媒体数据构造为vclnal单元,并且其中将形成拼块化视频帧的媒体数据构造为后面是一系列vclnal单元的非vclnal单元。拼块化拼接流的拼块化视频帧包括这样的拼块:其中视频帧中的拼块的媒体数据相对于同一视频帧中的其他拼块的媒体数据是独立可解码的。视频帧中的给定拼块的媒体数据可能相对于在给定拼块的相同位置处的其他视频帧中的拼块的媒体数据不是独立可解码的。因此,当位于不同视频帧中的相同预定位置处时,可能是从属的这些拼块中的每一个的媒体数据可被用来形成独立的拼接拼块流。这些实施例利用了编码器的优点,其被配置为生成可以在nal单元的级别上进行处理的拼块化媒体流而不需要重写与nal单元相关联的元数据,即非vclnal单元的内容和vclnal单元的头部。

图3描绘了根据本发明另一个实施例的拼块化模块。在此特定实施例中,nal解析器模块304可以被配置为将已编码的传入媒体流(媒体流)302的nal单元分类为两个类别:vclnal单元和非vclnal单元。vclnal单元可以由nal复制器模块306复制。副本的数目可以等于形成特定网格布局的拼接所需的nal单元的量。

可以由nal重写器模块310-314使用如sanchez等人所描述的过程来重写vclnal单元的头部。此过程可以包括:以这样的方式重写传入nal单元的分片分段头部,使得传出nal单元属于相同的比特流,但属于与图片的不同区域相对应的不同拼块。例如,帧中的第一vclnal单元可以包括用于将nal单元标记为属于特定视频帧的比特流中的第一nal单元的标志(first_slice_segment_in_pic_flag)。还可以由nal重写器模块308遵循sanchez等人所描述的过程来重写非vclnal单元,即:重写视频参数集(vps)以适于视频的新特性。在重写阶段之后,由nal重组器模块316将nal单元重组为表示拼块化拼接流318的比特流。因此,在此实施例中,拼块化模块允许形成拼块化拼接流,即包括拼块化视频帧的媒体流,其中拼块化视频帧中的每个拼块表示特定媒体流的视频帧的视觉副本。这实现了更快地生成拼块化拼接流。拼块被编码一次、然后被复制n次,而不是对拼块复制n次、然后执行编码n次。此实施例提供了不需要在服务器处进行完全解码或重新编码的益处。

图4描绘了根据本发明实施例的经协调的拼块化模块的系统。特别地,图4描述了当基于多个拼块化模块4061,2将多个媒体流(这是通常的情况)转换成多个拼块化拼接流时要求的协调。在那个情况下,媒体源4021,2(例如相机或内容服务器)需要进行时间同步,以便确保它们的帧速率处于同步。这种类型的同步也被称为发生器锁定或生成器锁定。当来自多个相机的媒体流的摄取分布在多个摄取节点上时(例如,在cdn内处理媒体流的情况下),每个被摄取的流可以通过在其中插入时间戳来进一步被同步。分布式时间戳可以通过使摄取节点时钟与时间同步协议410同步来实现。此协议可以是诸如ptp(精确时间协议)之类的标准化协议或专有时间同步协议。当媒体源彼此生成器锁定并且使用同一参考时钟对流时间标记时,所有媒体流4041,2和相关联的拼块化拼接流4081,2彼此同步。

在相机的生成器锁定是不可能的情况下,则若干替代解决方案可用。在实施例中,可以将代码转换器放置在拼块化模块4061,2的输入处,以使得每个拼块化模块的输入被生成器锁定。例如,通过偶然地丢掉帧或插入复制帧、或者通过帧之间的内插,代码转换器可以被配置为将帧速率改变小的分数。通过这种方式,拼块化模块可以通过生成器锁定其代码转换器而被相互生成器锁定。这样的代码转换器也可以位于拼块化模块的输出处而不是输入处。替代地,如果拼块化模块具有可以被生成器锁定的编码器模块,则不同拼块化模块的编码器模块可彼此被生成器锁定。

另外,经协调的拼块化模块4061,2需要配置有相同的配置参数412,例如,拼块数量、帧结构和帧速率。因此,在不同拼块化模块的输出处所产生的非vclnal单元应该是相同的。拼块化模块的配置可以通过手动配置而被执行一次,或者通过配置管理解决方案来进行协调。

图5描绘了根据本发明的又一实施例的拼块化模块的使用。在此特定情况下,可以对至少两个(即多个)媒体源5021,2进行时间同步,以便当帧被馈送到拼块化模块506中时确保它们的帧速率处于同步。拼块化模块可以接收第一和第二媒体流并且基于多个媒体流来形成拼块化拼接流5081,2。如图5的拼块化拼接流示例所示,拼块化拼接流的拼块化视频帧的拼块分别是第一或第二媒体流的视频帧的任一视觉副本。因此,在此实施例中,拼块化视频帧的拼块包括被输入到拼块化模块的媒体流的视觉副本。

图6描绘了根据本发明的实施例的拼块流格式化器。如图6中所示,拼块流格式化器可以包括一个或多个过滤器模块6041,2,其中过滤器模块被配置为接收和解析拼块化拼接流6021,2并提取与出自拼块化拼接流的拼块化视频帧中的特定拼块相关联的媒体数据6061,2。可以将这些分离的媒体数据转发给可以基于预定媒体格式来构造媒体数据的分段器模块6081,2。如图6中所示,可以基于拼块化拼接流来生成一组拼接拼块流(在本示例中为4个拼块流),其中拼块化拼接拼块流包括媒体数据和针对解码器模块的解码器信息,其中解码器信息可以包括拼块位置信息,从其中可以确定视频帧中的拼块的位置和拼块的尺度(大小)。在基于nal单元对拼块流进行格式化的情况下,可以将解码器信息存储在非vclnal单元中以及vclnal单元(的头部)中。

在图6的实施例中,可以使用http自适应流式传输协议以便将媒体数据传输到客户端设备。可以使用的http自适应流式传输协议的示例包括applehttp实时流式传输、microsoft平滑流式传输、adobehttp动态流式传输、3gpp-dash;通过http的渐进式下载和动态自适应流式传输以及通过http的mpeg动态自适应流式传输[mpegdashiso/iec23009]。这些流式传输协议被配置为通过http转移(通常)被进行时间分段的媒体数据,诸如视频和/或音频数据。这样的时间分段的媒体数据通常被称为组块(chunk)。组块可以被称为片段(其被存储为较大文件的一部分)或分段(其被存储为单独的文件)。组块可以具有任何播出持续时间,然而通常持续时间在1秒与10秒之间。has客户端设备可以通过从网络(例如内容传送网络(cdn))顺序地请求has分段来渲染视频标题,并且处理被请求和接收的组块,从而确保视频标题的无缝渲染。

因此,分段器模块可以将与拼块化拼接流的拼块化视频帧中的一个拼块相关联的媒体数据构造为has分段6101,2。可以基于预定的媒体格式将has分段存储在例如服务器的网络节点612的储存介质上。在由分段器模块形成并存储has分段期间,可以由清单文件发生器620生成一个或多个清单文件(mf)6161,2。对于每个拼块流,清单文件可以包括分段标识符的列表,例如一个或多个url或其一部分。这样,清单文件可以包含关于可以用于组成视频拼接的拼块流集合的信息。对于拼块流中的每个或至少一部分,清单文件可以包括拼块位置描述符。在实施例中,在符合mpeg-dash的清单文件的情况下,媒体呈现描述(mpd),拼块位置描述符具有如dash规范中定义的空间关系描述(srd)描述符的语法。下面将更详细地描述这样的srd-mpd的示例。客户端设备可以使用清单文件来从对客户端设备可用的该组拼接拼块流中选择一个或多个拼接拼块流(及其相关联的has分段)以用于组成视频拼接。例如,在实施例中,用户可以与gui交互以用于组成个性化的视频拼接。

如图6中所示,可以在储存介质上基于特定媒体格式存储拼接拼块流。例如,在实施例中,可以将一组拼接拼块流6141,2作为媒体数据文件存储在储存介质上。可以将每个拼块流存储为数据结构的轨道,其中可以由客户端设备基于拼块流标识符来独立地访问轨道。可以将关于存储在数据结构中的拼接拼块流之间的(空间)关系的信息存储在数据结构的元数据部分中。另外,还可以将此信息存储在客户端设备可以使用的清单文件6161,2中。在另一实施例中,可以基于媒体格式6143来存储不同组的拼接拼块流(其中每组拼块流可以基于一个或多个媒体流来形成),从而客户端设备可以基于相关联的清单文件6163来请求拼接拼块流的期望选择。

清单文件还可以包括位置信息(通常是url的一部分,例如域名),该位置信息用于确定被配置为将has分段传输到客户端设备的例如媒体服务器或网络缓存之类的网络元件的位置。可以从驻留在位于到这些位置之一的路径中的网络中的(透明)缓存中、或者从网络中的请求路由功能所指示的位置中检索分段(的一部分)。

清单文件发生器模块616可以将清单文件618存储在例如清单文件服务器或另一网络元件之类的储存介质上。替代地,清单文件可以与has流一起被存储在储存介质上。在需要如上所述地处理多个拼块化拼接流(这是典型情况)的情况下,则可能需要分段过程的附加协调。分段器模块可以使用相同的配置设置并行操作,并且清单文件发生器将需要生成清单文件,其以正确的方式引用来自不同分段器模块的分段。媒体组成处理器622可以控制如图6中所描绘的系统中的不同模块之间的过程的协调。

图7a-7d描绘了根据本发明的各种实施例的用于形成拼块流的过程和用于存储拼接拼块流的媒体格式。图7a描绘了用于基于拼块化拼接流来形成拼块流的过程。在第一步骤中,nal单元7021、7041、7061可以从拼块化拼接流中被提取(从中滤出)并被分离成各个nal单元(例如包括由解码器模块用来设置其配置的解码器信息的非vclnal单元7022(vps、pps、sps);以及vclnal单元7042、7062,每个包括表示拼块流的视频帧的媒体数据)。vclnal单元中的分片分段的头部可以包括定义视频帧中的拼块(分片)的位置的拼块位置信息(或分片位置信息,因为一个分片包含一个拼块)。

如此选择的nal单元或nal单元的集合可以被格式化为如http自适应流式传输(has)协议所定义的分段。例如,如图7a中所示,第一has分段7023可以包括非vclnal单元,第二has分段7023可以包括与第一位置相关联的拼块t1的vclnal单元,并且第三has分段7023可以包括与第二拼块位置相关联的拼块t2的vclnal单元。通过过滤与预定拼块位置处的一个特定拼块相关联的nal单元并且将这些nal单元分段在一个或多个has分段中,可以形成与预定拼块位置的拼块相关联的has格式化拼块流。通常,has分段可以基于例如mpeg2ts、isobmff或webm之类的合适的媒体容器而被格式化,并且作为http响应消息的有效载荷而被发送到客户端设备。媒体容器可以包括重构有效载荷所需的所有信息。在实施例中,has分段的有效载荷可以是单个nal单元或多个nal单元。替代地,http响应消息可以包括没有任何媒体容器的一个或多个nal单元。

因此,与sanchez等人所描述的解决方案相反(所述解决方案在非vclnal(视频参数集、vps、其为非vclnal)和vcl-nal头部(分片分段头部)两者需要被重写的意义上干扰了已编码的流),如图7a中所描绘的解决方案使nal单元的内容不变。

图7b描绘了根据本发明实施例的用于存储一组拼接拼块流的媒体格式(数据结构)。特别地,图7b描绘了用于存储拼接拼块流的hevc媒体格式,其可以基于包括视频帧的拼块化视频拼接媒体流来生成,该视频帧包括多个(在这种情况下是四个)拼块7141-4。与各个拼块相关联的媒体数据可以根据参考图7a所描述的过程而被过滤和分段。此后,可以将拼块流的分段存储在允许对各个拼块流的媒体数据访问的数据结构中。在实施例中,媒体格式可以是如iso/iec14496-15中所定义的hevc文件格式710或其等同物。图7b中所描绘的媒体格式可以用于将拼块流的媒体数据存储为一组“轨道”,使得媒体设备中的客户端设备可以请求仅传输拼块流的子集,例如,单个拼块流或多个拼块流。媒体格式允许客户端设备单个地访问拼块流,例如基于其拼块流标识符(例如文件名等)而不必请求视频拼接的所有拼块流。可以使用清单文件来将拼块流标识符提供给客户端设备。如图7b中所示,媒体格式可以包括一个或多个拼块轨道7181-4,其中每个拼块轨道用作针对拼块流的例如vcl和非vclnal单元之类的媒体数据7201-4的容器。

在实施例中,轨道还可以包括拼块位置信息7161-4。可以将轨道的拼块位置信息存储在对应的文件格式的拼块相关框中。解码器模块可以使用拼块位置信息,以便初始化拼接的布局。在实施例中,轨道中的拼块位置信息可以包括原点和大小信息,以便允许解码器模块在参考空间中视觉地定位拼块,所述参考空间通常是由视频的亮度分量的像素坐标所定义的空间,其中空间中的位置可以由与完整图像相关联的坐标系来确定。在解码过程期间,解码器模块将优选地使用来自编码比特流的拼块信息,以便解码比特流。

在实施例中,轨道还可以包括轨道索引7221-4。轨道索引提供可用于识别与特定轨道相关联的媒体数据的轨道标识号。

图7b中所描绘的媒体格式还可以包括所谓的基础轨道716。基础轨道可以包括序列信息,当客户端设备请求特定拼块流时,该序列信息允许媒体设备中的媒体引擎确定由客户端设备接收的vclnal单元的序列(顺序)。特别地,基础轨道可以包括提取符7201-4,其中提取符包括在一个或多个对应的拼块轨道中的媒体数据(例如nal单元)的指针。

提取符可以是如iso/iec14496-15:2014中定义的提取符。这样的提取符可以与允许媒体引擎确定提取符、轨道和轨道中的媒体数据之间的关系的一个或多个提取符参数相关联。在iso/iec14496-15:2014中引用了track_ref_indexsample_offsetdata_offsetdata_length参数,其中track_ref_index参数可以用作用于找到需要从中提取媒体数据的轨道的轨道参考,sample_offset参数可以提供用作信息源的轨道中的媒体数据的相对索引,data_offset参数提供参考媒体数据内的第一字节的偏移以进行拷贝(如果提取以那个样本中的数据的第一字节开始,则偏移取值0。偏移发信号通知nal单元长度字段的开始),并且data_length参数提供要拷贝的字节数目(如果此字段取值0,则拷贝整个单个引用的nal单元(即要拷贝的长度取自数据偏移所引用的长度字段))。

基础轨道中的提取符可以由媒体引擎解析并被使用以便识别nal单元,特别是包括其所参考的拼块轨道的vclnal单元中的媒体数据(音频视频和/或文本数据)的nal单元。因此,提取符的序列允许媒体设备中的媒体引擎识别并排序由该提取符序列所定义的nal单元并且生成提供给解码器模块的输入的相符合的比特流。

可以通过请求如清单文件中所识别的来自一个或多个拼块轨道(表示与特定拼块位置相关联的拼块流)和基础轨道的媒体数据并且通过基于序列信息(特别是提取符)对拼块流的nal单元进行排序以便形成用于解码器模块的比特流,从而形成视频拼接。用于解码器的比特流将意指所述解码器可解码(可被解码)的比特流。换言之,符合该解码器所使用的编解码器的比特流。并非视频拼接的拼块化视频帧中的所有拼块位置都需要包含视觉内容。如果特定视频拼接在拼块化视频帧中的特定拼块位置处不需要视觉内容,则媒体引擎可以简单地忽略对应于那个拼块位置的提取符。

例如在图7b的示例中,当客户端设备选择用于形成视频拼接的拼块流a和b时,它可以请求基础流和拼块流1和2。媒体引擎可以使用基础流中的提取符,其参考拼块轨道1和拼块轨道2的媒体数据以便形成用于解码器模块的比特流。用于解码器的比特流将意指所述解码器可解码(可被解码)的比特流。换言之,符合解码器使用的编解码器(例如hevc)的比特流。拼块流c和d的媒体数据的缺失可以被解码器模块解释为“丢失数据”。因为轨道中的媒体数据(每个轨道包括一个拼块流的媒体数据)是可独立解码的,所以来自一个或多个轨道的媒体数据的缺失不防止解码器模块解码可以被检索到的轨道的媒体数据。

图7c示意性地描绘了根据本发明的实施例的清单文件的示例。特别地,图7c描绘了定义多个适配集合7402-5元素的mpd,所述多个适配集合7402-5元素定义多个拼块流(在此示例中为四个hevc拼块流)。这里,适配集合可以与特定的媒体内容(例如视频a、b、c或d)相关联。此外,每个适配集合还可以包括一个或多个表示,即链接到适配集合的媒体内容的一个或多个编码和/或质量变型。因此,适配集合中的表示可以基于拼块流标识符(例如url的一部分)来定义拼块流,该url可以被客户端设备用来请求来自网络节点的拼块流的分段。在图7c的示例中,适配集合中的每一个包括一个表示(表示与特定拼块位置相关联的一个拼块流,使得拼块流可以形成以下视频拼接:

可以使用hevc媒体格式将拼块流存储在网络节点上,如参考图7b所描述的那样。

可以将mpd中的拼块位置描述符格式化为一个或多个空间关系描述(srd)描述符7421-5。可以使用srd描述符作为essentialproperty元素(客户端设备在处理描述符时需要理解的信息)或者supplementalproperty元素(可被客户端设备丢弃的信息,所述客户端设备在处理它时不知道描述符),以便通知客户端设备在清单文件中定义的不同视频元素之间存在某种空间关系。在实施例中,可以使用具有schemelduri“urn:mpeg:dash:srd:2014”的空间关系描述符来作为用于对拼块位置描述符进行格式化的数据结构。

拼块位置描述符可以基于srd描述符中的值参数来定义,其可以包括参数序列,该参数序列包括链接彼此具有空间关系的视频元素的source_id参数。例如,在图7c中,每个srd描述符中的source_id被设置为值“1”,指示这些适配集合形成具有预定空间关系的一组拼块流。在source_id参数之后可以是拼块位置参数x、y、w、h,其可以定义视频帧的图像区域中的视频元素(拼块)的位置。从这些坐标还可以确定拼块的尺度(大小)。这里,坐标值x,y可以定义视频帧的图像区域中的子区域(拼块)的原点,并且尺度值w和h可以定义拼块的宽度和高度。拼块位置参数可以以给定的任意单位(例如像素单位)来表达。客户端设备可以使用mpd中的信息,特别是srd描述符中的信息,以便生成允许用户基于mpd中所定义的拼块流来组成视频拼接的gui。

第一适配集合7401的srd描述符7421中的拼块位置参数x,y,w,h,w,h被设置为零,由此发信号通知客户端设备:此适配集合没有定义视觉内容,但是到包括参考轨道中的媒体数据的提取符序列的基础轨道(以与参考图7b描述的类似的方式),如在其他适配集合7402-5中定义的那样。

解码拼块流可能需要元数据,解码器需要该元数据来解码拼块流的视觉样本。这样的元数据可以包括关于拼块网格(拼块的数量和/或拼块的尺度)、视频分辨率(或者更一般地所有非vclnal单元,即pps、sps和vps)、为了形成符合解码器的比特流而需要级联vclnal单元所处的顺序(使用例如本公开中别处描述的提取符等)的信息。在拼块流自身中不存在元数据(例如,经由初始化分段)的情况下,拼块流可以依赖于包括元数据的基础流。拼块流对基础流的从属可以经由从属参数而被发信号通知给dash客户端。遍及本申请,此特定从属参数也被称为元数据从属参数。元数据从属参数(在mpegdash标准中,可以用于此目的的参数可以被称为从属id(dependencyid)参数)可以将基础流链接到一个或多个拼块流。

适配集合7402-5中定义的表示包括回来参考适配集合7401中的表示id=“mosaic-base”的dependencyid参数7442-5(dependencyid=“mosaic-base”),其定义包括对表示(拼块流)进行解码所需的元数据的所谓的基础轨道7461。mpegdash规范中的dependencyid的用例之一被用于向客户端设备发信号通知适配集合内的表示的编码从属。例如,具有层间从属的可缩放视频编码是一个示例。

然而,在图7c的实施例中,dependencyid属性或参数的使用被用来向客户端设备发信号通知清单文件中的表示(即,清单文件中的不同适配集合)是从属表示,即需要包括用于解码和播出这些表示的元数据的相关联的基础流的表示。

因此,图7c的示例中的dependencyid属性可以向客户端设备发信号通知:多个适配集合(每个与特定内容相关联)中的多个表示可以依赖于元数据,所述元数据可以作为一个或多个基础轨道存储在储存介质上并且可以作为一个或多个基础流而被传输到客户端设备。这些不同的适配集合中的从属表示的媒体数据可以依赖于相同的基础轨道。因此,当请求从属表示时,可以触发客户端在清单文件中搜索具有对应id的基础轨道。

dependencyid属性可以进一步发信号通知客户端设备:当在那个情况下请求具有相同dependencyid属性的多个不同拼块流时,与这些拼块流相关联的媒体数据应该被缓冲、被处理成符合解码器的比特流并且由一个解码器模块(一个解码器实例)解码成用于播出的拼块化视频帧序列。

当接收到拼块流的媒体数据和相关联的基础流(例如,具有指向定义基础流的适配集合的dependencyid属性的拼块流)的元数据时,媒体引擎可以解析基础轨道中的提取符。每个提取符可以链接到vclnal单元,所以提取符序列可以被用来识别所请求的拼块流的vclnal单元(如轨道7462-4中定义的),对它们进行排序并且将有序的nal单元的有效载荷级联成包括元数据(例如拼块位置信息)的比特流(例如,符合hevc的比特流),解码器模块需要该元数据以用于将比特流解码为可以作为视频拼接在一个或多个显示设备上进行渲染的拼块化视频帧。

dependencyid属性因此将基础流与表示级别上的拼块流相链接。因此,在mpd中,包括元数据的基础流可以被描述为包括与表示id相关联的表示的适配集合,并且包括媒体数据的拼块流可以被描述为这样的适配集合:其中不同的适配集合可以源自不同的内容源(不同的编码过程)。每个适配集合可以包括至少一个表示和涉及基础流的表示id的相关联的dependencyid属性。

在拼块化媒体流的上下文内,可能存在其他类型的解码(非)从属。例如,跨两个不同的帧上的拼块边界的媒体数据的解码从属。在那个情况下,对一个拼块的媒体数据进行解码可能需要其他位置处的其他拼块的媒体数据(例如,在邻近拼块处的媒体数据)。然而,在本公开中,除非另外指定,拼块化媒体流和相关联的拼块流被独立地编码,这意味着视频帧中的拼块的媒体数据可以由解码器解码而不需要其他拼块位置上的拼块的媒体数据。

代替以如上所述的方式使用dependencyid属性的功能性,可以定义新的basetrackdependencyid属性以用于明确地向客户端设备发信号通知:所请求的表示依赖于在清单中的别处(例如在另一个适配集合中)定义的基础轨道中的元数据。basetrackdependencyid属性将触发在清单文件中的整个表示集合中搜索带有对应标识符的一个或多个基础轨道。在实施例中,basetrackdependencyid属性用于发信号通知是否需要基础轨道来对表示进行解码,该基础轨道不与被请求的表示位于相同的适配集合中。

mpd中的上述srd信息可以向内容作者提供描述不同拼块流之间的特定空间关系的能力。srd信息可以帮助客户端设备选择拼块流的期望空间组成。然而,在内容作者描述媒体内容时,支持srd信息解析的客户端设备没有被绑定来组成渲染的视图。图7c的mpd可以包括由客户端设备请求的特定拼接组成。这个过程将在下面更详细地讨论。例如,mpd可以如参考图7b所描述的那样定义视频拼接。在那个情况下,图7c的mpd包括四个适配集合,每个涉及表示(音频)视觉内容和特定拼块位置的拼块流。

为了允许客户端设备更灵活地选择来自不同媒体源的拼块流,媒体组成处理器622可以组合源自不同媒体源(源自不同编码器)的拼接拼块流并将其存储在预定数据结构(媒体格式)中。例如,在实施例中,它可以将包括第一组拼块轨道和第一基础轨道(以及相关联的清单文件6161)的第一数据结构6141(的一部分)和包括第二组拼块轨道和第二基础轨道(以及与清单文件6162相关联)的第二数据结构6142(的一部分)(每个具有类似于图7b中描绘的媒体格式的媒体格式)组合为如图6所描绘的单个数据结构6143(和相关联的清单文件6163)。这样的数据结构可以具有图7d中示意性地描绘的媒体格式。

在实施例中,图6的拼块流格式化器600的媒体组成处理器622可以将不同视频拼接的拼块流组合为新的数据结构730。例如,拼块流格式化器可以产生包括源自第一hevc媒体格式的一组拼块流7321-4和源自第二hevc媒体格式的一组拼块流7341-4的数据结构。每组可以与基础轨道7311,2相关联。

如上面已经描述的那样,可以基于提取符参数来确定提取符所属的拼块轨道,所述提取符参数识别它所涉及的特定轨道。特别地,track_ref_index参数或其等同物可以用作用于找到轨道和相关联的媒体数据(特别是拼块轨道的nal单元)的轨道参考。例如,基于参考图7b描述的轨道参数,涉及图7b中描绘的四个拼块轨道的提取符的提取符参数可以看起来像ex1=(1,0,0,0)、ext2=(2,0,0,0)、ext3=(3,0,0,0)和ext4=(4,0,0,0),其中值1-4是hevc拼块轨道的索引,如由track_ref_index参数所定义的那样。此外,在提取拼块时不存在样本偏移的最简单的情况下,没有数据偏移并且提取符指示媒体引擎拷贝整个nal单元。

图8描绘了根据本发明另一实施例的拼块流格式化器。特别地,图8描绘了用于基于至少一个拼块化拼接流来生成rtp拼接拼块流的拼块流格式化器,如参考图2-5所描述的。流格式化器可以包括一个或多个过滤器模块8041,2,其中过滤器模块可以被配置为接收拼块化拼接流8021,2并且过滤与拼块化拼接流的拼块化视频帧中的特定拼块相关联的媒体数据8061,2。可以将这些媒体数据转发到rtp流化器8081,2,该rtp流化器8081,2可以基于预定媒体格式来构造媒体数据。在图8的实施例中,经过滤的媒体数据可以被rtp流化器模块8081,2格式化为rtp拼块流8101,2。rtp流8201,2可以由储存介质812(例如多播路由器)进行缓存,所述多播路由器被配置为将rtp流多播到客户端设备的群组。

清单文件发生器816可以生成一个或多个清单文件8221,2,其包括用于识别rtp拼块流的拼块流标识符。在实施例中,拼块流标识符可以是rtspurl(例如,rtsp://example.com/mosaic-videoa1.mp4/)。客户端设备可以包括rtsp客户端,并且通过使用rtspurl发出rtspsetup消息来发起单播rtp流。替代地,拼块流标识符可以是拼块流被多播到的ip多播地址。客户端设备可以加入ip多播并通过使用igmp或mlp协议来接收多播rtp流。清单文件还可以包括关于拼块流的元数据,例如,拼块位置描述符、拼块大小信息、媒体数据的质量级别等。

另外,清单文件可以包括序列信息,用于使得媒体引擎能够从所选择的rtp拼块流中确定nal单元的序列,以便形成被提供给解码器模块的输入的比特流。替代地,序列信息可以由媒体引擎确定。例如,hevc规范强制要求以光栅扫描顺序排序符合hevc的比特流中的拼块化视频帧的hevc拼块。换言之,与一个拼块化视频帧相关联的hevc拼块在从左上拼块到右下拼块开始的比特流中遵循逐行、左到右的顺序来进行排序。媒体引擎可以使用此信息以便形成拼块化视频帧。

可能需要图8的系统中的rtp流化器模块之间的协调以确保它们同步地正确操作,使得来自不同中间视频流的对应帧被正确地封装为并行rtp拼块流。可以通过使用已知的时间戳技术来为对应的帧提供相同的rtp时间戳而实现协调。来自不同媒体流的rtp时间戳可以不同的速率前进,并且通常具有独立的随机偏移。因此,虽然rtp时间戳可能足以重建单个流的定时,但是直接比较来自不同媒体流的rtp时间戳对于同步而言不是有效的。替代地,对于每个流,可以通过将采样瞬时与来自参考时钟(壁钟)的时间戳进行配对来将rtp时间戳与采样瞬时相关,该参考时钟表示对与rtp时间戳相对应的数据进行采样时的时间。参考时钟可以由需要被同步的所有流共享。在另一实施例中,可以生成一个或多个清单文件,其使得客户端设备能够跟踪rtp时间戳以及rtp时间戳与不同rtp拼块流之间的关系。图8的系统中的不同模块之间的协调可以由媒体组成处理器822来控制。

图9描绘了根据本发明的实施例的rtp拼块流的形成。如图9中所示,拼块化视频流的nal单元9021、9041、9061被过滤并分成单独的nal单元,即非vclnal单元9022(vps、pps、sps),其包括被解码器模块使用来设置其配置的元数据;以及vcl-nal单元9042、9062,其中每个vclnal单元携带拼块并且其中每个vclnal单元中的分片的头部包括分片位置信息,即与帧中的分片的位置有关的信息,其与在每分片一个拼块的情况下拼块的位置一致。

在此之后,可以将vclnal单元提供给rtp流化器模块,该rtp流化器模块被配置为将nal单元(每一个包括一个拼块的媒体数据)分组化为rtp拼块流910、912的rtp分组。例如,如图9中所示,与第一拼块t1相关联的vclnal单元被多路复用在第一rtp流910中,并且与第二拼块t2相关联的vclnal单元被多路复用在第二rpt流912中。类似地,非vclnal单元被多路复用到包括具有非vclnal单元作为其有效载荷的rtp分组的一个或多个rtp流908中。这样,可以形成rtp拼块流,其中每个rtp拼块流与特定拼块位置相关联,例如,rtp拼块流910可以包括与第一拼块位置处的拼块t1相关联的媒体数据,并且rtp拼块流912可以包括与第二拼块位置处的拼块t2相关联的媒体数据。

rtp分组的头部可以包括表示时间的rtp时间戳,其在时间上单调且线性地增加,使得它可以用于同步目的。rtp分组的头部还可以包括可以用于检测分组丢失的序列号。

图10a-10c描绘了根据本发明的实施例的被配置用于基于清单文件来渲染视频拼接的媒体设备。特别地,图10a描绘了媒体设备1000,其包括用于请求和接收has分段的拼块流的has客户端设备1002以及包括用于将不同拼块流的nal单元组合为比特流的nal组合器1018和用于将比特流解码成拼块化视频帧的解码器1022的媒体引擎1003。媒体引擎可以将视频帧发送到视频缓冲器(未示出),以用于在与媒体设备相关联的显示器1004上渲染视频。

用户导航处理器1017可以允许用户与图形用户接口(gui)交互,以用于从多个拼接拼块流中选择一个或多个拼接拼块流,其可以作为has分段10101-3而被存储在网络节点1011的储存介质上。拼块流可以被存储为独立可访问的拼块轨道。包括元数据的基础轨道使得媒体引擎能够基于作为拼块轨道而被存储的媒体数据(如参考图7a-7c详细描述的)来为解码器构建比特流。如将在下文中更详细地描述的,客户端设备可以被配置为请求并接收(缓冲)所选择的拼接拼块流的媒体数据和基础轨道的元数据。媒体引擎使用媒体数据和元数据以便基于基础轨道中的信息将所选择的拼接拼块流的媒体数据(特别是拼块流的nal单元)组合为用于输入到解码器模块1022的比特流。

例如,通过用户与gui进行交互,可以激活客户端设备的清单文件检索器1014,以向网络节点发送请求,所述网络节点被配置为向客户端设备提供至少一个清单文件,客户端可以使用该清单文件来检索期望的视频拼接的拼块流。替代地,在另一实施例中,可以经由单独的通信信道(未示出)将清单文件发送(推送)到客户端设备。例如,在实施例中,可以形成客户端设备和网络节点之间的(双向)websocket通信信道,其可以用于向客户端设备传输清单文件。

清单文件(mf)管理器1006可以控制清单文件向客户端设备的分发。被配置为管理存储在网络节点1011的储存介质上的拼块流的清单文件1012的清单文件(mf)管理器可以控制清单文件向客户端设备的分发。可以将清单文件管理器实现为在网络节点1011上或在单独的清单文件服务器上运行的网络应用。

在实施例中,清单文件管理器可以被配置为(即时地)生成用于客户端设备的专用清单文件(“定制”清单文件),其包括客户端设备针对请求所需的拼块流而需要的信息,以便形成所期望的视频拼接。在实施例中,清单文件可以具有包含srd的mpd的形式。

清单文件管理器可以基于客户端设备的请求中的信息来生成这样的专用清单文件。当从客户端设备接收到针对视频拼接的请求时,清单文件管理器可以解析该请求,基于请求中的信息来确定所请求的视频拼接的组成,基于由清单文件管理器管理的清单文件10121-3生成专用清单文件并且将响应消息中的专用清单文件发送回到客户端设备。参考图7c来详细描述这样的专用清单文件(特别是专用srd类型的mpd)的示例。

在实施例中,客户端设备可以将所请求的视频组成编码为对清单文件管理器的httpget请求中的url。可以经由url的查询字符串参数或者在httpget请求中插入的特定http头部中传输所请求的视频组成信息。在另一实施例中,客户端可以将所请求的视频组成编码为对清单文件管理器的httppost请求中的参数。

在httppost响应中,清单文件管理器可以提供客户端设备可以使用的url,以便可能地使用http重定向机制来检索包含所请求的视频组成的清单文件。替代地,可以在post请求的响应主体中提供清单文件。响应于该请求,清单文件检索器可以接收所请求的清单文件,从而向客户端设备发信号通知可以检索由用户和/或(软件)应用所选择的拼接拼块流。

一旦接收到清单文件,mf检索器就可以激活客户端设备的分段检索器1016,以便请求包括来自网络节点的所选拼接拼块流和基础轨道的媒体数据的has分段。在这个过程中,分段检索器可以解析清单文件并使用分段标识符和网络节点的位置信息(例如url(的一部分)),以便生成和发送分段请求(例如httpget请求)到网络节点,并从网络节点接收在响应消息(例如httpok响应消息)中的所请求的分段。这样,可以将与所请求的拼块流相关联的多个连续的has分段传输给客户端设备。所检索的分段可以临时存储在缓冲器1020中,并且媒体引擎的nal组合器模块1018通过基于基础轨道中的信息(特别是基础轨道中的提取符)来选择拼块流的nal单元并且将nal单元级联成可由解码器模块1022解码的有序比特流而将分段中的nal单元组合为符合hevc的比特流。

图10b示意性地描绘了可以由如图10a中所示的媒体设备所执行的过程。客户端设备可以使用清单文件(例如多选清单文件),以便选择一个或多个拼块流,特别是一个或多个拼块流的has分段,其可以被has客户端设备和媒体引擎使用,以便在媒体设备的显示器上渲染视频拼接1026(的一部分)。如图10b中所示,基于清单文件(例如参考图7c所描述的清单文件),客户端设备可以选择作为has分段1020、10221-4、10241-4存储在网络节点上的一个或多个拼块流。所选择的has分段可以包括包含一个或多个非vcl单元1020的has分段和包含一个或多个vclnal单元的has分段(例如,在图10b中,vclnal单元与所选择的拼块ta110221、tb210242和ta410224相关联)。

如参考图7b所述,可以基于媒体格式来存储与不同拼块流相关联的has分段。基于此媒体格式,拼块流可以根据诸如iso/iec14496-12或iso/iec14496-15标准之类的媒体格式来存储,其包括单个地可寻址的轨道,其中存储在不同拼块轨道中的媒体数据(即vclnal单元)之间的关系由基础轨道中的信息来提供。因此,在选择拼块流之后,客户端设备可以请求与所选拼块相关联的拼块轨道和基础轨道。一旦客户端设备开始接收所选拼块的has分段,它就可以使用基础轨道中的信息,特别是基础轨道中的提取符,以便将vclnal单元组合和级联到定义了拼块化视频帧1028的nal数据结构1026中。这样,可以向解码器模块提供包括已编码拼块化视频帧的符合比特流。

代替定制的清单文件,还可以基于多选清单文件来检索视频拼接。图10c中描绘了这个过程的示例。特别地,此图描绘了使用多选单清单文件而基于两个或更多不同数据结构来形成视频拼接。在此实施例中,至少第一视频a的拼块流和第二视频b的拼块流可以分别被存储为第一和第二数据结构10301,2。每个数据结构可以包括多个拼块轨道10341,2-10421,2,其中每个轨道可以包括与特定拼块位置相关联的特定拼块流的媒体数据。每个数据结构可以进一步包括包含序列信息的基础轨道10321,2,所述序列信息即是用于向媒体引擎发信号通知可以如何将不同拼块流的nal单元组合为符合解码器的比特流的信息。优选地,第一和第二数据结构具有与参考图7b描述的媒体格式类似的hevc媒体格式。在那个情况下,可以使用参考图7c描述的mpd来通知客户端如何检索存储在特定轨道中的媒体数据。

每个拼块轨道可以包括轨道索引,并且基础轨道中的提取符包括用于识别由轨道索引所标识的特定轨道的轨道参考。例如,基于以上参考图7b所描述的轨道参数,可以将涉及第一拼块轨道(与索引值“1”相关联)的第一提取符的提取符参数定义为ex1=(1,0,0,0),可以将涉及第二拼块轨道(与索引值“2”相关联)的第二提取符定义为ext2=(2,0,0,0),可以将涉及第三拼块轨道(与索引值“3”相关联)的第三提取符定义为ext3=(3,0,0,0)并且可以将涉及第四拼块轨道(与索引值“4”相关联)的第四提取符定义为ext4=(4,0,0,0),其中值1-4是拼块轨道的索引(由track_ref_index参数定义)。此外,在此特定实施例中,假设在提取拼块时不存在样本偏移,则没有数据偏移和提取符指示客户端设备拷贝整个nal单元。

每个hevc文件使用相同的拼块索引方案,例如,跟踪从1到n的索引值,其中每个轨道索引涉及包括在某个拼块位置处的拼块流的媒体数据的拼块轨道。拼块轨道的顺序1到n可以定义拼块在拼块化视频帧中排序所处的顺序(例如,以光栅扫描顺序)。换言之,在例如如图7b中所描绘的2×2拼接的情况下,将所有左上拼块存储在具有索引1的轨道中,将所有右上拼块存储在具有索引2的轨道中,将所有左下拼块存储在具有索引3的轨道中并且必须将所有右下拼块存储在具有索引4的轨道中。因此,当例如如参考图4描述的那样使用拼块化模块的通用配置生成拼块流并且基于诸如hevc媒体格式的通用媒体格式将其进行存储时,第一和第二数据结构的基础轨道是相同的,并且可以被用于寻址视频a的拼块轨道和/或视频b的拼块轨道。这些条件可以例如通过基于具有相同设置的编码器/拼块流格式化器生成数据结构来实现。

在那个情况下,客户端设备可以从第一数据结构和第二数据结构中检索拼块轨道的组合,而不改变第一和第二数据结构的格式,即不改变将媒体数据物理地存储在储存介质上的方式。客户端设备可以基于如图10c中所示意性描绘的多选清单文件1042(mc-mf)来选择源自不同数据结构的拼块轨道的组合。此类清单文件的特征在于它针对一个拼块位置定义了多个拼块流。这可以触发客户端设备:清单文件实际上是允许用户针对一个拼块位置选择不同拼块流的多选清单文件。替代地,多选清单文件可以具有标识符或标志,以用于发信号通知客户端设备:清单文件是可以用于组成视频拼接的多选清单文件。在客户端设备将清单文件识别为多选清单文件的情况下,其可以触发媒体设备中的gui应用,其可以允许用户针对不同拼块位置选择拼块流标识符(表示拼块流),使得可以组成期望的视频拼接。客户端设备的分段检索器1016可以随后使用所选择的拼块流标识符以用于向网络节点发送分段请求,例如http请求。

如图10c的示例中所示,清单文件1042可以包括至少一个基础文件标识符1044,例如,视频a的基本文件mosaic-base.mp4,视频a1046的拼块流标识符和视频b1048的拼块流标识符。每个拼块流标识符与拼块位置相关联。在这个示例中,拼块位置1、2、3和4分别指的是左上、右上、左下和右下的拼块位置。因此,与响应于客户端设备对特定视频拼接的请求而生成的图7b中所描绘的专用清单文件结构(定制清单文件)对照而言,多选清单文件1042允许客户端设备从多个拼块流中选择不同拼块位置处的拼块流。多个拼块流可以与不同的视觉内容相关联。

因此,与定义特定视频拼接的专用(定制)清单文件对照而言,多选清单文件1042为一个拼块位置定义不同的拼块流标识符(与不同的拼块流相关联)。多选清单文件中的拼块流不一定被链接到包括拼块流的一个数据结构。相反,多选清单文件可以指向包括不同拼块流的不同数据结构,客户端设备可以将其用于组成视频拼接。

例如通过将第一数据结构的清单文件(包括具有视频a的媒体数据的拼块轨道)(的一部分)和第二数据结构的清单文件(包括具有视频b的媒体数据的拼块轨道)组合,可以由清单文件管理器基于不同的清单文件10101,2来生成多选清单文件1042。下面将更详细地描述用于使得客户端设备能够基于拼块流来组成视频拼接的多选清单文件的不同的有利实施例。

基于清单文件1042,客户端设备可以选择视频a和b的拼块的特定组合1050,其中客户端设备仅允许针对一个特定拼块位置选择一个特定拼块流。可以通过选择与第一数据结构(视频a)的拼块轨道2和310361、10381和第二数据结构(视频b)的拼块轨道1和410342、10402相关联的拼块流来实现此组合。

将主张的是:图10a-10c中的不同功能元件可以以不同方式来实现而不背离本发明。例如,在实施例中,代替网络元件,可以将mf管理器1006实现为媒体设备中的功能元件,例如,作为has客户端1002的一部分等等。在那个情况下,mf检索器可以检索定义可以在形成视频拼接中使用的拼块流的多个不同清单文件,并且基于这些清单文件,mf管理器可以形成另外的清单文件,例如,定制清单文件或多选清单文件,其使得客户端设备能够请求用于形成期望的视频拼接的拼块流。

图11a和11b描绘了根据本发明的另一实施例的被配置用于基于清单文件来渲染视频拼接的媒体设备。特别地,图11a描绘了包括rtsp/rtp客户端设备1102的媒体设备1100,该rtsp/rtp客户端设备1102用于请求rtp拼块流并且接收(缓冲)所请求的拼块流的媒体数据。包括nal组合器1118和解码器1122的媒体引擎1103可以从rtst/rtp客户端接收缓冲的媒体数据。nal组合器可以将不同的rtp拼块流的nal单元组合为用于解码器的比特流,该解码器将比特流解码成拼块化视频帧。“用于解码器的比特流”将意指所述解码器可解码(可被解码)的比特流。换言之,符合解码器所使用的编解码器的比特流。媒体引擎可将视频帧发送到视频缓冲器(未示出),以用于在与媒体设备相关联的显示器1104上渲染视频。

例如,通过用户与gui进行交互,可以触发客户端设备的清单文件检索器1114,以请求来自网络节点1111的清单文件11121-3。替代地,在另一实施例中,可以经由单独的通信信道(未示出)将清单文件发送(推送)到客户端设备。例如,在实施例中,可以建立客户端设备和网络节点之间的websocket通信信道。清单文件可以是定义专用视频拼接的定制清单文件或者是定义多个不同视频拼接的多选清单文件,客户端设备可以从该多个不同视频拼接“组成”视频拼接。清单文件管理器1106可以被配置为(以与参考图10a-10c所描述的类似的方式)基于与所选择的拼块流11101,2相关联的清单文件11121,2来生成此类清单文件(例如,多选清单文件11123)。

用户导航处理器1117可以帮助选择作为期望的视频拼接的一部分的拼块流。特别地,用户导航处理器可以允许用户与图形用户接口交互,以用于从存储或缓存在网络节点上的多个rtp拼块流中选择一个或多个拼块流。

可以基于多选清单文件来选择rtp拼块流。在那个情况下,客户端设备可以使用清单文件中的拼块位置描述符以用于在媒体设备的显示器上生成gui,其中gui允许用户与客户端设备交互以用于选择一个或多个拼块流。一旦用户已选择了多个拼块流,用户导航处理器可以触发rtp流检索器1116(例如,用以检索单播rtp流的rtsp客户端,或者用以加入携带rtp流的(多个)ip多播的igmp或mlp客户端)以用于请求来自网络节点的所选rtp拼块流。在此过程期间,rtp流检索器可以使用清单文件中的拼块流标识符和位置信息(例如rtspurl或ip多播地址),以便发送流请求(例如rtsp建立消息或igmp加入消息),以从网络节点接收所请求的流。这样,可以将与所请求的拼块流相关联的多个rtp流传输到客户端设备。接收到的不同rtp流的媒体数据可以临时存储在缓冲器1120中。可以基于rtp时间戳以正确的播出顺序对每个拼块流的媒体数据(rtp分组)进行排序,并且nal组合器模块1118可以被配置为将不同rtp流的nal单元组合为用于解码器模块1122的符合解码器编解码器的比特流。“用于解码器的比特流”意指所述解码器可解码(可被解码)的比特流。换言之,符合解码器所使用的编解码器的比特流。

图11b示意性地描绘了由如图11a中所示的媒体设备所执行的过程。客户端设备可以使用清单文件,以便选择一个或多个拼块流。客户端设备可以使用rtp分组的rtp时间戳来在时间上关联不同的rtp有效载荷并且将属于同一帧的nal单元排序到比特流中。

图11b描绘了包括五个rtp流的示例,即一个rtp流1122包括与不同拼块位置相关联的四个rtp拼块流1124-1130和非vclnal单元。客户端设备可以选择三个rtp流,例如,包括非vclnal单元1132的rtp流、包括包含与第一拼块位置相关联的第一拼块的媒体数据的vclnal单元的第一rtp拼块流1134和包括包含与第二拼块位置相关联的第二拼块的媒体数据的vclnal单元的第二rtp拼块流1316。

使用rtp头部和元数据中的信息(例如在清单文件中的信息),不同的nal单元(即,rtp分组的有效载荷)可以被组合,即以正确的时间顺序级联,使得形成一个或多个视频帧(的一部分)的nal数据结构1138,其包括一个或多个非vclnal单元和一个或多个vclnal单元,其中每个vclnal单元与特定拼块位置处的拼块相关联。可以通过针对连续的rtp分组重复此过程来形成用于输入到解码器模块的比特流。解码器模块可以以与参考图10a和10b所描述的类似的方式解码比特流。

因此,根据上面的图10和11,接下来是通过基于清单文件来选择与不同拼块位置相关联的不同拼块流、接收所选择的拼块流的媒体数据以及将接收到的拼块流的媒体数据排序到可以由能够处理拼块的解码器模块解码的比特流中,可以组成拼接视频。通常,此类解码器模块被配置为接收解码器模块配置信息,特别是拼块位置信息,以用于使得解码器模块能够确定视频帧中拼块的位置。在实施例中,可以基于非vclnal单元中的信息和/或vclnal单元的头部中的信息来将解码器信息中的至少一部分提供给解码器模块。

图12a和12b描绘了根据本发明另一实施例的拼块流的has分段的形成。特别地,图12a和12b描绘了形成包括多个nal单元的has分段的过程。如图7b中所述,可以将拼块流存储在媒体容器的不同轨道中。每个轨道然后可以被分段成因此包含多个nal单元的几秒的时间分段。可以根据诸如iso/iec14496-12或iso/iec14496-15之类的给定文件格式来执行对此多个nal单元的储存和索引,使得客户端设备可以能够将has分段的有效载荷解析到多个nal单元中。

单个nal单元(在视频帧中包括一个拼块)具有40毫秒的典型长度(对于每秒25帧的帧速率而言)。因此,仅包括一个nal单元的has分段将导致非常短的has分段,具有相关联的高开销成本。虽然rtp头部是二进制且非常小,但是has头部是大的,因为has分段是封装在具有大ascii编码的http头部的http响应中的完整文件。因此,在图12a的实施例中,形成包括与一个拼块相关联的多个nal单元(通常对应于1-10秒视频的等同物)的has分段。拼块化拼接流的nal单元12021、12041、12061可以被分成单独的nal单元,即,包括由解码器模块用来设置其配置的元数据的非vclnal单元12022(vps、pps、sps)以及每个包括拼块流的帧的vclnal单元12042、12062。vclnal单元中的分片的头部信息可以包括与视频帧中的分片的位置相关联的分片位置信息,其在编码期间应用每个分片一个拼块的约束的情况下也是视频帧中的拼块的位置。

可以将由此形成的nal单元格式化为如由has协议所定义的has分段。例如,如图12a中所示,可以将非vclnal单元存储为第一has分段1208,其中将非vclnal单元存储在不同的原子容器中,例如在iso/iec14496-12和iso/iec14496-15中所称的框。类似地,存储在不同原子容器中的拼块t1的级联的vclnal单元可以被存储为第二has分段1210,并且存储在不同原子容器中的拼块t2的级联的vclnal单元可以被存储为第三has分段1212。

因此,将多个nal单元级联并作为有效载荷插入在单个has分段中。这样,可以形成第一和第二拼块流的has分段,其中has分段包括多个级联的vcl-nal单元。类似地,可以形成包括多个级联的非vclhas单元的has分段。

图12b描绘了根据本发明的实施例的表示视频拼接的比特流的形成。这里,拼块流可以包括如参考图12a所描述的包括多个nal单元的has分段。特别地,图12b描绘了多个(在此情况下为四个)has分段12181-4,每个包括在特定拼块位置处包括特定拼块的视频帧的多个vclnal单元12201-3。对于每个has分段,客户端设备可以基于指示nal单元的边界的给定文件格式语法来分离级联的nal单元。然后,对于每个视频帧12221-3,媒体引擎可以收集vcl-nal单元并且将nal单元布置在预定序列中,使得可以将表示拼接视频的比特流1224提供给解码器模块,该解码器模块可以将比特流解码为表示视频拼接1226的视频帧。

将主张的是:如本公开中所描述的拼块化视频组成或视频拼接的概念应该宽泛地解释,其意义在于它可以涉及组合(视觉上)不相关的内容的拼块流和/或组合(视觉上)相关的内容的拼块流。例如,图13a-13d描绘了后者情况的示例,其中本公开中描述的方法和系统可以被用来在与宽视场视频的中心部分(基本上是中等或窄视场图像)相关联的第一组拼块流(图13b)和与宽视场视频的外围部分相关联的第二组拼块流(图13c)中转换宽视场视频(图13a)。可以使用如本公开所描述的mpd,从而允许客户端设备选择用于渲染窄视场图像的第一组拼块流或用于渲染宽视野图像的第一和第二组拼块流的组合而不会损害渲染图像的分辨率。组合第一和第二组拼块流产生视觉上相关的内容的拼块的拼接。

以下更详细地描述了多选清单文件的各种实施例。在第一实施例中,多选清单文件可以包括某些建议的视频拼接配置。为此目的,多个拼块流可以与多个拼块位置相关联。此类清单文件可以允许客户端设备从一个拼接切换到另一个,而并不请求新的清单文件。这样,因为客户端设备不需要请求新的清单文件以用于从第一视频拼接(拼块流的第一组成)改变为第二视频拼接(拼块流的第二组成),所以不存在dash会话的不连续性。

多选清单文件的第一实施例可以定义两个或更多预定视频拼接。例如,多选mpd可以定义客户端可以从中进行选择的两个视频拼接。每个视频拼接可以包括基础轨道和多个拼块轨道,在本例中定义了与参考图7b所描述的拼接类似的2×2拼块布置。每个轨道被定义为包括srd描述符的适配集合(adaptationset),其中属于一个视频拼接的轨道具有相同的source_id参数值,以便向客户端设备发信号通知:存储在这些轨道中的拼块流彼此具有空间关系。这样,下面的mc-mpd定义了以下两个视频拼接:

包括预定视频拼接的上面的多选单清单文件是符合dash的,并且客户端设备可以使用mpd来在相同的mpeg-dash会话内从一个拼接切换到另一拼接。然而,清单文件仅允许选择预定的视频拼接。它不允许客户端设备通过从多个不同的拼块流中选择用于每个拼块位置的拼块流(如例如参考图10c所描述的)来任意地组成视频拼接。

为了给客户端设备提供更多的灵活性,可以创作清单文件,允许客户端设备组成视频拼接,同时将客户端上的解码负担保持最小,即用于解码整个视频拼接的一个解码器。例如,可以基于针对每个拼块位置的视频a、b、c或d的拼块流来组成以下视频拼接:

在根据本发明的第二实施例的多选单清单文件中,客户端设备可以通过为每个拼块位置或拼块位置的至少一部分选择拼块流来组成视频拼接:

上述清单文件是符合dash的。对于每个拼块位置,清单文件定义了与srd描述符相关联的适配集合(adaptationset),其中适配集合定义了表示可用于由srd描述符描述的拼块位置的拼块流的表示。“扩展的”dependencyid(如参考图7c所解释的那样)向客户端设备发信号通知:所述表示依赖于基础轨道中的元数据。

此清单文件使得客户端设备能够从(基于视频的a、b、c或d形成的)多个拼块流中进行选择。如参考图7b所描述的,可以基于hevc媒体格式来存储每个视频的拼块流。如参考图10c所解释的,只要拼块流是基于具有类似或基本相同设置的一个或多个编码器来生成的,则只需要视频之一的一个基础轨道。拼块流可以被客户端设备基于多选清单文件单个地选择和访问。为了给客户端设备提供最大的灵活性,所有可能的组合都应在mpd中进行描述。

拼块流的视觉内容可以是相关的或不相关的。因此,此清单文件的创作延伸了适配集合(adaptationset)元素的语义,因为通常dash标准指定适配集合(adaptationset)可能仅包含视觉上等同的内容(其中表示提供了此内容在编解码器、分辨率等方面的变型)。

使用具有在视频帧中的大量拼块位置以及可在拼块位置中的每个处选择的大量拼块流的上面的方案,清单文件可能变得非常长,因为拼块位置处的每组拼块流将需要包括srd描述符和一个或多个拼块流标识符的适配集合。

在下文中,作为本发明的第三实施例,描述了处理上面识别出的提供多选清单文件的问题的多选清单文件,其与适配集合的语义相一致并且可以允许定义大量拼块流而不会使清单文件变得普遍地长。在实施例中,可以通过以以下方式将多个srd描述符包括在单个适配集合中来解决这些问题:

允许在一个适配集合中使用多个srd描述符,因为dash规范中的一致性规则不排除在一个适配集合中使用多个srd描述符。在适配集合中存在多个srd描述符可以向客户端设备(特别是dash客户端设备)发信号通知:可以将特定视频内容检索为与不同拼块位置相关联的不同拼块流。

一个适配集合中的多个srd描述符可需要修改的分段模板(segmenttemplate),以用于使得客户端设备能够确定正确的拼块流标识符,例如url(的一部分),其是客户端设备用于请求来自网络节点的正确拼块流所需要的。在实施例中,模板方案可包括以下标识符:

可以使用分段模板(segmenttemplate)的基本urlbaseurl以及object_x和object_y标识符以用于生成与特定拼块位置相关联的拼块流的拼块流标识符,例如url(的一部分)。基于此模板方案,可以创作以下多选清单文件:

因此,在此实施例中,每个适配集合包括用于定义与特定内容相关联的多个拼块位置的多个srd描述符,例如,视频1、视频2等。基于清单文件中的信息,客户端设备可以因此选择在(由特定srd描述符识别的)特定拼块位置处的特定内容(由基础url所识别的特定视频)并且构造所选择的拼块流的拼块流标识符。

特别地,清单文件中的信息通知客户端设备关于针对每个拼块位置可选择的内容。此信息可以被用来在媒体设备的显示器上渲染图形用户接口,从而允许用户选择用于形成视频拼接的视频的特定组成。例如,清单文件可以使得用户能够从与匹配视频拼接的视频帧的右上角的拼块位置相关联的多个视频中选择第一视频。此选择可以与以下srd描述符相关联:

如果选择了此拼块位置,则客户端设备可以使用baseurl和segmenttemplate以用于生成与所选拼块流相关联的url。在那个情况下,客户端设备可以用与所选拼块流的srd描述符相对应的值(即0)来替代segementtemplate的标识符object_x和object_y。这样,可以形成初始化分段的url:/video1/0_0_init.mp4v和第一分段:/video1/0_0_1234655.mp4v。

在清单文件中定义的每个表示可以与dependencyid相关联,其向客户端设备发信号通知:该表示依赖于由表示“mosaic-base”定义的元数据。

根据dash规范,当两个描述符具有相同的id属性时,客户端设备不必处理它们。因此,将不同的id值提供给srd描述符,以便向客户端发信号通知它需要处理它们的全部。因此,在此实施例中,拼块位置x,y是分段的文件名称的一部分。这使得客户端能够请求来自网络节点的期望的拼块流(例如,预定的hevc拼块轨道)。在先前实施例的清单文件中,不需要此类措施,因为在那些实施例中,每个位置(每个srd描述符)被链接到包含具有不同名称的分段的特定适配集合。

因此,此实施例提供了从紧凑的清单文件中描述的多个拼块流中组成不同视频拼接的灵活性,其中可以将所组成的视频拼接变换在可由单个解码器设备解码的比特流中。然而,此mpd方案的创作并不尊重适配集合元素的语义。

在一个适配集合中使用多个srd描述符时,可以修改srd描述符的语法,以便允许甚至更加紧凑的清单文件。例如,在以下清单文件部分中,可以使用四个srd描述符:

可以基于具有已修改语法的srd描述符来描述四个srd描述符:

基于此srd描述符语法,第二和第三srd参数(通常指示拼块的x和y位置)应该被理解为位置的矢量。将四个值组合一次,每个与三个其他的,导致四个原始srd描述符中描述的信息。因此,基于这个新的srd描述符语法,可以实现更紧凑的mpd。显然,当针对视频拼接而可以选择的视频流的数量变得更大时,此实施例的优点变得更加明显:

根据第四实施例的清单文件解决了提供与适配集合的语义一致的多选清单文件的问题,并且可允许定义大量的拼块流,而不使清单文件以替代方式变得广泛地长。在此实施例中,该问题可通过以以下方式在相同适配集合的不同表示中关联不同srd描述符来解决:

因此,在此实施例中,适配集合可以包括多个(从属)表示,其中每个表示与srd描述符相关联。这样,(在适配集合中定义的)相同视频内容可以与(由多个srd描述符定义的)多个拼块位置相关联。每个表示可以包括拼块流标识符(例如,url(的一部分))。此类多选清单文件的示例可看上去如下:

此实施例提供了以下优点:创作与适配集合的语法相一致并且经由表示元素来选择拼块位置,其通常定义了适配集合的媒体内容的不同编码和/或质量变型。因此,在此实施例中,表示定义了与适配集合相关联的视频内容的拼块位置变型,并且因此仅表示了表示元素的语法的相对小的扩展。

如以上参考根据本发明的第三实施例的多选清单文件所描述的那样,包括object_x和object_y标识符的segmenttemplate特征可以被用来进一步减小mpd的大小:

上述多选清单文件定义了依赖于用于正确解码和渲染的元数据的表示(拼块流),其中基于参考图7c所描述的representation元素中的“扩展的”dependencyid属性将从属发信号通知给客户端设备。

因为在表示级别上定义了dependencyid属性,所以对遍及所有表示进行搜索需要索引mpd中的所有表示。特别是在媒体应用中,其中mpd中的表示的数量可能变得相当大,例如数百个表示,通过清单文件中的所有表示进行搜索对于客户端设备而言可能变得处理密集。因此,在实施例中,可以在清单文件中提供一个或多个参数,其使得客户端设备能够通过mpd中的表示来执行更高效的搜索。

在实施例中,representation元素可以包括将(例如,基于adaptationset@id)指向至少一个适配集合的dependentrepresentationlocation属性,其中可以找到包括依赖表示的一个或多个相关联的表示。这里,从属可以是元数据从属或解码从属。在实施例中,dependentrepresentationlocation的值可以是由空格分开的一个或多个adaptationset@id

下文提供了说明dependentrepresentationlocation属性的使用的清单文件的示例:

如此示例中所示,dependentrepresentationlocation属性可以与dependencyid属性或basetrackdependencyid属性(例如,如参考图7c所讨论的)结合使用,其中dependencyidbasetrackdependencyid属性向客户端设备发信号通知:该表示依赖于另一种表示,并且其中dependentrepresentationlocation属性向客户端设备发信号通知:可以在dependentrepresentationlocation所指向的适配集合中找到为了播出与依赖表示相关联的媒体数据而需要的表示。

例如,在该示例中,包括基础流的表示“mosaic-base”的适配集合由适配集合标识符“main-ad”来识别,并且依赖于“mosaic-base”表示(如由dependencyid发信号通知)的每个表示使用dependentrepresentation-location来指向“main-ad”适配集合。这样,客户端设备(例如dash客户端设备)能够在包括大量表示的清单文件中高效地定位基础流的适配集合。

在实施例中,如果客户端设备识别dependentrepresentationlocation属性的存在,则它可以触发对其中存在dependencyid属性的被请求表示的适配集合以外的一个或多个另外适配集合的依赖表示的搜索。适配集合内的依赖表示的搜索优选地可以由dependencyid属性来触发。

在实施例中,dependentrepresentationlocation属性可以指向多于一个适配集合标识符。在另一实施例中,可以在清单文件中使用多于一个dependentrepresentationlocation属性,其中每个参数指向一个或多个适配集合。

在替代实施例中,可以使用dependentrepresentationlocation属性来触发用于搜索与一个或多个依赖表示相关联的一个或多个表示的又一方案。在此实施例中,可以使用dependentrepresentationlocation属性来定位清单文件(或者一个或多个不同清单文件)中具有相同参数的其他适配集合。在那个情况下,dependentrepresentationlocation属性不具有适配集合标识符的值。替代地,它将具有唯一识别此表示群组的另一值。因此,在适配集合中查找的值不是适配集合id本身,而是它是唯一dependentrepresentationlocation参数的值。这样,dependentrepresentationlocation参数被用作用于对清单文件中的表示集合进行分组的参数(“标签”),其中当客户端设备识别与所请求的依赖表示相关联的dependentrepresentationlocation时,它将在清单文件中查找由dependentrepresentationlocation参数识别的表示群组中的一个或多个表示。当adaptationset元素中存在dependentrepresentationlocation属性时,它具有相同的含义,如同在每个representation元素中重复具有相同值的dependentrepresentationlocation属性。

为了将此客户端行为与其他实施例(例如,其中dependentrepresentationlocation参数指向由适配集合标识符所识别的特定适配集合的实施例)中描述的客户端行为区分开,dependentrepresentationlocation参数也可以被称为dependencygroupid参数,从而允许对清单文件内的表示进行分组,其实现了更高效地搜索播出一个或多个依赖表示所需的表示。在此实施例中,可以在表示的级别下定义dependentrepresentationlocation参数(或dependencygroupid参数)(即,将用参数来标记属于该群组的每个表示)。在另一实施例中,可以在适配集合级别处定义该参数。在用dependentrepresentationlocation参数(或dependencygroupid参数)标记的一个或多个适配集合中的表示定义了表示群组,其中客户端设备可以查找定义基础流的表示。

在本发明的进一步改进中,清单文件包含进一步指示特定性质的一个或多个参数,所述特定性质优选地是所提供的内容的拼接性质。在本发明的实施例中,此拼接性质被定义,因为当基于清单文件的表示被选择并且共同具有此性质时,多个拼块视频流在被解码之后被一起拼连成视频帧以用于呈现,这些视频帧中的每一个在被渲染时构成具有一个或多个视觉内帧边界的子区域的拼接。在本发明的优选实施例中,将所选拼块视频流作为一个比特流输入到解码器,优选地是hevc解码器。

优选地,清单文件是基于mpegdash标准的媒体呈现描述(mpd),并且用上述一个或多个性质参数来充实。

发信号通知由清单文件中引用的拼块视频流所共享的特定性质的一个用例是:它允许客户端设备灵活地组成显示当前节目的微缩版本的频道的拼接(可以通过清单文件来发信号通知该当前节目,例如频道)。这与当将拼块视频拼连在一起时提供连续视图(例如拼块化全景视图)的其他类型的拼块化内容有区别。此外,与在其中客户端应用可以通过经由用户交互来实现平移和缩放能力而仅呈现拼块视频的子集的全景视频用例相反,在内容提供者期望应用显示拼块视频的特定布置的完整拼接的意义上来说,拼接内容是不同的。因此,需要朝向客户端应用传达拼接内容的特性,以便客户端进行合适的内容选择,即选择与拼接中的隙(slot)一样多的拼块视频。为此,参数'spatial_set_type'可以被添加在如下面所定义的srd描述符中。

注——替代地,'spatial_set_type'可以直接保存“连续”或“拼接”字符串值而不是数值。

下面的mpd示例说明了如上面所述的'spatial_set_type'的使用。

此示例为所有srd描述符定义了相同的“source_id”,这意味着所有的表示彼此都具有空间关系。

srd描述符的@value属性中包含的逗号分隔列表中倒数第二个srd参数(即'spatial_set_id')指示适配集合中的每个中的表示属于同一空间集合。另外,在此相同逗号分隔列表中的最后srd参数(即'spatial_set_type')指示此空间集合构成了拼块视频的拼接布置。这样,mpd作者就可以表达此拼接内容的特定本质。也就是说,当拼接内容的多个所选拼块视频流被同步地渲染时,优选地在作为一个比特流而被输入到解码器(优选的是hevc解码器)之后,一个或多个拼块视频流之间的视觉边界出现在已渲染帧中,因为根据本发明,至少两个不同内容的拼块视频流被选择。因此,客户端应用应遵循建立完整拼接集合的建议,即,为清单文件中指示的(在本示例中为四个)位置中的每个选择拼块视频流(如在本示例中由四个不同的srd描述符来表示的那样)。

另外,根据本发明的实施例,'spatial_set_type'的语义可以表达'spatial_set_id'值对于整个清单文件是有效的,并且不仅与具有相同'source_id'值的其他srd描述符绑定。这实现了针对不同的视觉内容使用具有不同'source_id'值的srd描述符的可能性,但取代了'source_id'的当前语义。在这个情况下,无论“source_id”值如何,只要它们用值“mosaic”的它们的“spatial_set_type”共享相同的“spatial_set_id”,则具有srd描述符的表示就具有空间关系。

图14是图示出可以如本公开中所描述的那样使用的示例性数据处理系统的框图。此类数据处理系统包括在本公开中描述的数据处理实体,包括服务器、客户端计算机、编码器和解码器等。数据处理系统1400可以包括通过系统总线1406耦合到存储器元件1404的至少一个处理器1402。如此,数据处理系统可以将程序代码存储在存储器元件1404内。此外,处理器1402可以执行经由系统总线1406从存储器元件1404访问的程序代码。在一个方面中,数据处理系统可以被实现为适合于存储和/或执行程序代码的计算机。然而,应该理解的是,数据处理系统1400可以以包括能够执行本说明书内所描述的功能的处理器和存储器的任何系统的形式来实现。

存储器元件1404可以包括一个或多个物理存储器设备,诸如例如本地存储器1408及一个或多个大容量储存设备1410。本地存储器可以指的是随机存取存储器或者是通常在程序代码的实际执行期间使用的(多个)其他非永久性存储器设备。大容量储存设备可以被实现为硬盘驱动器或其他持久性数据储存设备。处理系统1400还可以包括提供至少一些程序代码的临时储存的一个或多个缓存存储器(未示出),以便减少在执行期间必须从大容量储存设备1410检索程序代码的次数。

被描绘为输入设备1412和输出设备1414的输入/输出(i/o)设备可选地可以耦合到数据处理系统。输入设备的示例可以包括但不限于例如键盘、诸如鼠标的定点设备等。输出设备的示例可以包括但不限于例如监视器或显示器、扬声器等。输入设备和/或输出设备可以直接或通过中间i/o控制器而被耦合到数据处理系统。网络适配器1416还可以耦合到数据处理系统,以使得其能够通过中间专用或公共网络来与其他系统、计算机系统、远程网络设备和/或远程储存设备耦合。网络适配器可以包括用于接收由所述系统、设备和/或网络传输到所述数据的数据的数据接收器和用于向所述系统、设备和/或网络传输数据的数据发射器。调制解调器、电缆调制解调器和以太网卡是可以与数据处理系统1450一起使用的不同类型的网络适配器的示例。

如图14中描绘的,存储器元件1404可以存储应用1418。应该认识到,数据处理系统1400可以进一步执行可以促进应用的执行的操作系统(未示出)。以可执行程序代码的形式实现的应用可以由数据处理系统1400(例如由处理器1402)执行。响应于执行应用,数据处理系统可以被配置为执行在此进一步详细描述的一个或多个操作。

在一个方面中,例如,数据处理系统1400可以表示客户端数据处理系统。在那个情况下,应用1418可以表示客户端应用,该客户端应用当被执行时配置数据处理系统1400以执行本文中参考“客户端”所描述的各种功能。客户端的示例可以包括但不限于个人计算机、便携式计算机、移动电话等。为了本申请的目的,被配置为执行本文中参考术语“客户端”所描述的各种功能的数据处理系统1400也可以被称为客户端计算机或客户端设备。

在另一方面中,数据处理系统可以表示服务器。例如,数据处理系统可以表示(http)服务器,在该情况下,应用1418在被执行时可以配置数据处理系统以执行(http)服务器操作。在另一方面中,数据处理系统可以表示如本说明书中所提及的模块、单元或功能。

本文所使用的术语仅用于描述特定实施例的目的,并且不意图限制本发明。如本文所使用的,除非上下文另外明确指示,单数形式“一”、“一个”和“该”旨在也包括复数形式。将进一步理解的是,当在本说明书中使用时,术语“包括”和/或“包含”指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或其群组。

下面的权利要求中的所有装置或步骤加功能元件的对应结构、材料、动作和等同物旨在包括用于结合具体要求保护的其他要求保护的元件执行功能的任何结构、材料或动作。已经出于说明和描述的目的呈现了对本发明的描述,但是其并非旨在是详尽的或将本发明限于所公开的形式。在不脱离本发明的范围和精神的情况下,许多修改和变型对于本领域的普通技术人员将是显而易见的。选择和描述实施例是为了最好地解释本发明的原理和实际应用,并且使得本领域的其他普通技术人员能够理解具有适合于预期的特定使用的各种修改的各种实施例的本发明。

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