媒体容器文件管理的制作方法

文档序号:7674654阅读:217来源:国知局
专利名称:媒体容器文件管理的制作方法
技术领域
本发明总体涉及媒体和多媒体管理,并且特别涉及产生及使用包含这 种媒体和多媒体内容的媒体容器文件。
背景技术
在最近的几年内,通过不同的网络向客户端提供媒体和多媒体的情况 已经大大增多。现在有许多用户采用因特网从媒体服务器访问及下载例 如以视频和音频流或文件的形式的媒体。这种媒体提供也已经出现在基
于无线电的移动通信网络中。当前人们对于多媒体或TV内容使用移动 网络非常感兴趣。这在本领域中常常被称作移动TV。所述移动网络中的 这种媒体提供当前主要可以通过单点传送传输来获得。但是,针对移动 TV的广播/多点传送递送方法当前仍在开发中。这种标准化努力的例子 有3GPP多媒体广播/多点传送服务(MBMS )以及欧洲电信标准协会(ETSI ) 手持式数字视频广播(DVB-H)。
为了迎合针对在不同的有线和无线通信网络中提供媒体的上述日益 增长的需求,正在开发可以在无线网络中用于向发出请求的客户端提供 媒体内容的流传输和下载服务器。通常的趋势是透明且灵活的流传输/ 下载服务器,这意味着所述服务器应当最基本地包括用来执行不同的媒 体管理功能的多个"标准";溪块或程序。随后向这些功能提供输入^f某体 内容以及关于所述模块/程序应当如何处理所述内容的指令。这与在所
体供应。
与开发灵活的流传输/下载服务器 一起,在关于如何在媒体流中引入 纠错的领域内同时也有发展。所述多点传送/广播传输是单向的,并且 同时寻址大量接收客户端。传统的单点传送可靠性方案(比如自动重复 请求(ARQ))不能被缩放来为多点传送/广播传输的大量接收器提供服务。
因此,需要引入一种与多点传送/广播媒体传输相关联的可靠性方案。 引入这种可靠性方案还应当符合灵活的流传输和下载服务器解决方案
的趋势。

发明内容
本发明克服了现有技术设置的上述和其他缺陷。
本发明的一般目的是提供一种可以被用在多媒体会话中的媒体容器 文件。
本发明的另一个目的是提供一种还可以被用在后会话
(post-session)修复程序中的媒体容器文件。
如所附权利要求书所限定的那样,本发明满足了上述和其他目的。 简而言之,本发明涉及到生成及使用媒体容器文件,并且涉及到用于 生成及使用这种容器文件的设备。
生成媒体容器文件涉及到提供至少 一个媒体源文件,其包括将被传送 到发出请求的客户端并且将在所述客户端处被呈现的媒体或多媒体数 据。该容器文件被视为包括一个或多个媒体源块,这取决于所述源文件 的大小。根据本发明处理至少一个所述媒体源块,以便根据该源块计算
FEC冗余数据或符号。因此,该源块的媒体数据被输入到FEC算法,以 便计算至少 一个FEC符号。优选地对于源文件的每一 个媒体源块执行该 FEC符号计算。随后把该至少 一个媒体源块组织到所述媒体容器文件中。 相应地,也把所计算的FEC数据组织到所述媒体容器文件内的一个或多 个FEC存储库中。每一个所述FEC存储库包括为特定媒体源块计算的FEC 数据。提供元数据并且将其包括在所述容器文件中,以便提供媒体源块 与其FEC存储库之间的关联。
所得到的容器文件可以由媒体服务器在媒体会话期间采用,以便利用 该容器文件中的元数据来编辑包括媒体数据和FEC数据的数据分组。预 先计算FEC数据并且把媒体和FEC数据组织在本发明的容器文件中,允 许所述媒体服务器以简单的在计算方面并不昂贵的方式把媒体数据和 FEC数据插入到将被传送到发出请求的客户端的数据分组中,而无需进 行大量数据处理以及计算需求高的FEC计算。
在一个优选实施例中,所述容器文件还包括编辑指令,所述媒体服务 器在编辑包含来自所述容器文件的媒体和FEC数据的数据分组时使用并 且遵循所述编辑指令。在这种情况下,所述容器文件包括能够按照可靠 的方式成功地把所述媒体数据转送到所述客户端所需要的所有媒体内
容、保护数据和指令。
本发明的容器文件还可以被用在后会话修复程序中,其中尽管把FEC 冗余保护数据包括到所传送的数据分组中,但是客户端仍然不能成功地 在媒体会话期间接收所有媒体数据。在这种情况下,由修复服务器使用 在前一个媒体会话期间所使用的相同容器文件的副本。该服务器能够根
据来自所述客户端的请求从所述容器文件内的其中 一个FEC存储库检索 FEC冗余数据。随后把该FEC数据返回到该客户端,从而允许该客户端 成功地呈现所有媒体数据。


可以参照结合附图进行的以下详细描述来更好地理解本发明及其其 他目的和优点,其中
图l是示出了根据本发明的一方面的生成媒体容器文件的方法的流程
图2是示出了图1的文件生成方法的附加步骤的流程图3是示出了图1的文件生成方法的附加步骤的流程图4是示出了图1的文件生成方法的附加步骤的流程图5是示出了根据本发明的另 一 方面的媒体会话管理方法的流程图6是示出了图5的会话管理方法的附加步骤的流程图7是更加详细地示出了图5的编辑和传送步骤的一个实施例的流程
图8是更加详细地示出了图5的编辑和传送步骤的另一个实施例的流 程图9是示出了图5的会话管理方法的附加步骤的流程图10是示出了根据本发明的另 一 方面的后会话修复方法的流程图11,是根据本发明的另 一方面的媒体容器文件的示意性总览;
编辑的示意图13是示出了对采用根据本发明的媒体容器文件的不同媒体流进行 编辑的另一个示意图14是根据本发明的包括管理媒体容器文件的服务器的通信网络的 总览;
图15是根据本发明的另 一方面的内容服务器的示意性方框图; 图16是更加详细地示出了图15的容器文件产生器的一个实施例的示 意性方框图17是根据本发明的另一方面的媒体会话服务器的示意性方框图; 以及
图18是根据本发明的另 一方面的修复服务器的示意性方框图。
具体实施例方式
在附图中,相同的附图标记将被用于相应的或类似的元件。 本发明总体上涉及媒体和多媒体数据管理,并且特别涉及产生及利用 与基于无线电的通信网络中的媒体服务器(比如流传输或下载服务器) 相关联的容器文件。除了将要传送到发出请求的一个(或多个)客户端
护的数据。由于存在被包括在所述容器文件中的预先生成的前向纠错 (FEC)冗余数据,因此该可靠性保护是可以实现的。
如本领域中已知的那样,FEC涉及到把冗余数据添加到所传送的有效 载荷数据中,这样允许接收器在无需向发送方请求附加数据的情况下检 测并校正错误。FEC的优点在于常常能够避免对数据的重传,但是其代 价则是平均而言更高的带宽要求。因此,FEC可以被有利地用于媒体内 容的基于多点传送/广播的递送,其中重传将很难实现。
FEC是通过利用预定算法或方案向将被传送的信息添加冗余度而实现 的,所述算法或方案在本领域中通常被称作FEC编解码器。每一个这种 冗余比特都是许多原始信息或有效载荷比特的复杂函数。在输出中包括 未经修改的输入的FEC编解码器被称作系统编解码器。换句话说,(N, K) 系统FEC编解码器保留K个源符号或有效载荷符号并且附加(N-K)个FEC 符号。相应地,(N, K)非系统FEC编解码器从K个源符号产生N个(FEC 或源)符号,而不必保留所有K个源符号。
主要有两类FEC编解码器块编解码器和巻积编解码器。FEC块编解
作^"而巻积编解码器则在:'意^^度"的比特或符号流上进行操作。d i g: t a;
Fountains Raptor编解码器是能够从单一源块中产生任意数目的FEC冗
余符号的FEC块编解码器。这是该FEC编解码器的一个有利属性,这是 因为在所述源块构造中没有任何改变的情况下可以生成不同的保护-开销配置。Reed-Solomon是另一种FEC块编解码器,但是其需要对于不 同的保护开销尺寸在源块分割中做出改变。FEC块编解码器的其他例子 包括Golay、 BCH (Bose、 Ray-Chaudhur i 、 Hocquenghem )和Hamming。 与本发明相结合地使用的一种优选的FEC编解码器是Digital Raptor 编解码器。
根据本发明,媒体或多媒体数据或内容指代可以由内容提供商或服务 器提供给客户端以供呈现数据的任何数据。典型的优选实例包括视频数 据和音频数据。所述数据可以具有预先编码的固定速率音频或视频内容 版本的形式,或者具有可扩展音频或视频内容的形式。其他媒体实例包 括静止图像(JPEG)、位形(GIF和PNG)、矢量图形(SVG)以及 合成音频(SP-MIDI)和文本(XHTML和SMIL )。
图1是根据本发明的生成媒体容器文件的方法的流程图。该媒体容器 文件可以被视为完整的输入包,其由媒体服务器在媒体会话期间使用来 提供媒体内容并且把媒体数据形成到可传送的数据分組中。因此,除了 媒体内容本身之外,所述容器文件优选地包括为了由所述媒体服务器在 和指令。, ., " '、; 。 、
所述方法开始于步骤Sl,在该步骤中,至少一个媒体源块被组织并且 存储在所述容器文件中。如果在该容器文件中存在多于两个媒体源块, 则把它们视为相同媒体内容文件或流(例如视频流)以及/或者不同的 媒体文件或流(例如视频流的几个媒体源块以及相应的相关联的音频流 的几个媒体块)的单独媒体块。所述至少一个媒体源块包括应当被发送 到客户端的媒体数据或符号,其在该客户端中被呈现以便把媒体内容呈 现给用户。所述媒体块可以具有固定的相同尺寸,或者至少其一部分, 如果多于一个的话,可以具有不同的比特/符号尺寸。
在步骤SI中被组织在所述容器文件中的所述至少一个媒体块优选地 共同包括将在媒体会话期间被传送到客户端的所有媒体内容数据。换句 话说,所述容器文件包含用于整个多媒体呈现的媒体数据。因此,如果 所述媒体内容包括音乐视频,则所述容器文件优选地包括具有视频数据 的媒体源块和具有相应的音频数据的媒体块。但是本发明预期可以在多
个可能的媒体版本中提供同一项媒体内容。例如,所述音乐^L频的^L频
部分可以被提供在多个预先编码的视频版本中,其中每一个所述视频版 本被适配成与给定的带宽或者比特率水平或区间相结合地使用。因此在 所述容器文件中可以有给定媒体内容的多个版本。在这种情况下,每一 个所述媒体版本可以祐L视为包括一个或多个媒体源块。虽然在所述容器 文件中可以有多个媒体版本,但是在所述媒体会话期间的给定时刻通常 仅仅使用一个所述版本,但是例如基于可用带宽水平的改变,在所述会 话期间,在各媒体版本之间可以有切换。 为了给所述容器文件中的所述媒体内容提供可靠性保护,下一个步骤
S2基于在步骤Sl中被组织在所述容器文件中的各媒体块当中的至少一 个媒体源块预先计算FEC冗余数据。在该计算步骤S2中,优选地采用 在媒体块的基础上进行操作的FEC块编解码器(比如digital fountain raptor编解码器)。但是也可以采用巻积FEC编解码器,所迷巻积FEC 编解码器也在本发明的范围内。在一种优选实现方式中,对于所述至少 一个^(某体源块生成一组FEC冗余符号。该FEC符号组可以包括一个(但 是优选地包括多个)基于所述媒体源块的源符号计算的FEC符号。将为 某一媒体源块计算的FEC符号的数目可以由所采用的FEC编解码器中的 限制来限定,其可以是所述媒体源块中的媒体源符号的数目的函数或者 由某种其他标准来限制(例如所述容器文件的尺寸限制)。这些预先计 算的FEC冗余符号的一般思想是在所述容器文件中提供可以获得的并且
;护的FEC符号的存储库。因此,^一个媒体源块的FEC符;的i:目优
选地是根据这一标准确定的即能够提供可靠性保护。
除了在媒体会话期间可用于提供可靠性保护之外,在步骤S2中计算 的FEC冗余符号还可以被用在后会话修复程序或会话中。可替换地,所 述FEC冗余符号的专用子集在所述媒体会话期间可用于可靠性保护,并 且所述冗余符号的另一个子集被专用于后会话修复,在本文中将更加详 细地描述这一点。因此,本发明的优点在于,相同的容器文件(或其拷 贝)既可以由媒体服务器在媒体会话期间使用又可以由修复服务器在修 复会话期间使用。这样允许与媒体管理相关联的高度灵活性。关于FEC 编解码器的更多信息可以参照文献[1 ]的附录B,该附录B的教导在此被 引入以作参考。
下一个步骤S3把在步骤S2中计算的所述FEC冗余数据与所述媒体源 块一起组织在所述容器文件内。该步骤S3优选地把所述媒体源块的FEC 冗余符号存储为所述容器文件内的存储库。如果已经出于可靠性保护和 后修复的目的生成了 FEC冗余符号,则这些符号可以被提供在相同的 FEC存储库中。可替换地,第一存储库容纳用于可靠性目的的FEC符号, 第二存储库包含后修复FEC符号。
下一个步骤S4提供将被包括在所述容器文件中的元数据。该元数据 提供在步骤Sl中被添加到所述容器文件中的媒体源块与在步骤S3中被 存储在所述文件中的FEC冗余数据之间的关联。这种关联可以具有从所 述媒体源块在所述文件内的存储位置到所述FEC存储库的存储位置的指 针的形式,或者反之亦然。因此,该元数据允许在给出特定媒体源块或 者其在所述容器文件内的位置的情况下识别出基于该媒体源块计算的 相关联的FEC冗余数据或者识别出该冗余数据在所述文件内的存储位 置。在所述媒体源块和/或相关联的FEC存储库被存储在所述容器文件 中的预先定义的"标准"位置处的情况下,取代采用指针,所述元数据 可以包括所述媒体源块和/或相关联的FEC存储库的标识符。随后使用 该元数据来识别出所述文件中的媒体源块和FEC存储库的其中之一,并 且基于该识别出的位置可以识别出所述媒体源块和FEC存储库当中的另 一个。
存储库之间的关联的信息。这例如可以通过针对所述媒体源块把会话中 元数据和后会话元数据分别包括在所述容器文件中来实现。
在本发明的一种典型的实现方式中,在步骤Sl中把多个媒体源块组 织到所述容器文件中。在这种情况下,优选地对于每一个这种媒体源块 或者至少对于多组媒体源块重复步骤S2到S4,这由线Ll示意性地示出。 因此,如果在步骤Sl中把yV个媒体源块组织到所述容器文件中,则优 选地把步骤S2到S4重复#次,这意味着除了所述源块之外还把至少# 个FEC存储库和W个元数据版本组织在所述容器文件中。
本发明预期所生成的媒体容器文件可以包含完整媒体会话所需要的 所有媒体数据和FEC数据。然而,所述媒体数据和FEC数据实际上可以 -故应用在多个不同的会话中。例如,所述容器文件可以包括音乐视频、
足球比赛等等的媒体数据。在这种情况下,媒体服务器不必传送被包含 在所述FEC存储库中的所有媒体数据,而可以仅仅传送由客户端所请求 的特定数据。但是另 一个媒体服务器可能接收了相同容器文件的副本, 并且替换地把该文件中的其他媒体数据提供给其客户端。 所述方法随后结束。
体内容源的内容产生器或者服务器处实施的。随后可以在诸如计算机存 储器的存储介质中或者在诸如电信号或无线电信号的物理信号中表示 所生成的容器文件,以便例如在本地系统内传输或者通过本地或全球网 络传输。在一个典型的实施例中,所述容器文件被提供为到媒体服务器 的无线电信号,以便使用在与不同客户端的媒体会话中。替换地或附加 地,所述容器文件可以被提供到修复服务器,该修复服务器可以由客户 端在与所述媒体服务器的媒体会话之后访问,以便在必要时对所接收的 媒体内容进行后会话修复。
在下面的公开内容中将通篇使用术语"媒体容器文件",其含义包括 用于存储在存储介质中的数据文件以及用于传送或分发的信号。
图2是示出了图1的容器文件生成方法的附加步骤的流程图。所述方 法开始于步骤S10,在该步骤中提供至少一个媒体源文件。在该说明性
实施例中,可以在所述容器文件产生器处以包含所述媒体数据的源文件
或流的形式获得媒体内容。在该步骤S10中,可以提供一个或多个媒体 源文件以便包括到容器文件中。例如,第一媒体文件可以包含视频数据, 而第二相关联的文件则包含音频数据。为了允许高效地计算FEC冗余数 据以及随后使用这种FEC数据,在步骤S10中提供的所述一个(或多个) 媒体源文件在下一个步骤Sll中被划分成多个媒体块。该媒体源块于是 可以被视为所述媒体源文件的一个片段,其中可以对该片段应用FEC代
被预先;定:或^择:在前一种情况下,'所述尺寸应当:将被应用来计算
FEC冗余数据的预定FEC方案或代码来定义。因此,实际的FEC编解码 器或算法以及/或者所需要的FEC保护开销可能会影响所述媒体文件划 分和媒体块尺寸。
在所述输入媒体源文件的比特或符号尺寸小于可以由FEC编解码器有 效处理的最大尺寸时,当然不需要把该源文件划分成媒体源块,并且可
以省略步骤Sll。于是将该输入媒体源文件视为根据本发明的媒体源块。 应当注意的是,即使存在优选的块尺寸,也并不需要从媒体源文件生 成的所有媒体源块都具有该优选尺寸。例如,与其他等同块相比,最后 一个媒体源块的尺寸可能较小,这是因为所述媒体文件的剩余部分不包 含足够的媒体数据以达到所述优选块尺寸。
上述划分步骤Sll不一定意味着把所述媒体源文件物理地划分成被存
储在所述容器文件中的单独位置处的单独媒体源块。与此相对,在大多 数实际的实现方式中,所述媒体源文件在所述容器文件中被存储为 一个 连续数据序列,但是被视为或者被虚拟地划分成媒体源块。例如,可以
把包含2N个源符号的媒体源文件划分成使得源符号
属于第一 源块,并且使得符号[N, 2N-1]属于第二源块。
所述方法随后继续到图1的步骤Sl,在该步骤中把所述一个(或多个) 媒体源块组织到所述容器文件中。
图3是示出了图1的容器文件生成方法的附加步骤的流程图。该方法 开始于步骤S20,在该步骤中把媒体源块分割成源符号或者所谓的组块 (chunk)。这些符号通常包括几百个字节。该块分割优选地是至少部分 地基于将被用来为当前媒体源块计算FEC符号的FEC编解码器/算法的 信息来执行的。如前所述,基于Reed-Solomon的FEC编解码器需要基 于所期望的保护开销尺寸(即FEC冗余符号的数目)而改变所述源块分 割。
因此,实际的FEC编解码器或算法以及/或者所需的FEC保护开销可 能会影响所述媒体源分割以及媒体符号尺寸。此外,在步骤S20的该源
比如数据^组的尺寸,其中所i数据分组比如是用户数据报协议7 UDP ) 分组。在这种情况下,可以限制所述源符号的尺寸,从而可以把至少一 个完整源符号置于UDP分组中。
该分割步骤S20不一定意味着把所述媒体源块物理地划分成被存储在 所述容器文件中的单独位置处的单独源符号。与此相对,在大多数实际 的实现方式中,所述媒体源文件在所述容器文件中被存储为一个连续数 据序列,但是被视为或者被虚拟地划分成媒体源块,所述媒体源块又被 虚拟地分割成源符号。
在下一个步骤S21中生成所述分割的信息。该信息基本上表明所述数
据序列的哪些部分属于所述媒体源块的哪一个源符号。所述分割信息可
以被组织到一个表中,该表表明媒体源块Z的比特X到比特Y构成源符
号。可替换地,所述信息可以包括每一个源符号的以字节计的尺寸。于 是在知道媒体源块在媒体文件中的起始位置的情况下有可能确定属于 不同源符号的数据部分。
该方法随后继续到步骤S2 ,在该步骤中把所述分割符号与所述媒体源 块一起用于计算所述FEC数据。因此,所述分割信息允许识别出应当被 输入到所述FEC编解码器以便生成FEC符号的媒体源块的各数据部分。
如前所述,本发明的一个目的是提供一种媒体容器文件,其除了实际 的媒体数据之外还包括可靠性保护(即预先计算的FEC数据)。这意味 着所述文件到源块划分、块分割以及FEC保护计算是"离线"进行的, 并且与媒体服务器中的实际的媒体传输处理无关。这种预处理简化了所 述服务器的任务,并且降低了所述服务器的性能要求和复杂度。此外, 所述容器文件优选地还包括由媒体服务器识别出媒体数据和FEC数据并 且把所述媒体数据和FEC数据组成媒体流所需的信息和指令,其中所述 媒体流可以被传送到发出请求的客户端。所述容器文件优选地还包括由 修复服务器识别并且组成FEC数据所需要的信息和指令,其中所述FEC 数据可用于完成媒体会话之后的后修复处理。因此,所述容器文件可以 被视为能够被透明且灵活的服务器用于数据编辑和传输的数据、信息和 指令的免整包。
图4是示出了图1的容器文件生成方法的附加步骤的流程图。该方法 从图1的步骤S4继续。在下一个步骤S30中,提供^f皮采用来计算FEC 冗佘数据的方案的FEC算法的信息。该信息可以具有特定算法名称或者 某种其他描述性信息的形式。在一种替换方法中,每一种可用的FEC算 法都具有预先定义的标识符。因此,可以随后在步骤S30中仅仅提供该 FEC标识符。在一种典型的实现方式中采用了相同的FEC编解码器来确 定对于媒体源文件的所有媒体源块的冗余数据。但是实际上有可能对于
不同的FEC编解码器。因此,所述FEC信息可以表明利用了单一FEC编
于哪二个源块或者源^:组使用了不同的FEC编解码^。口^ ' 在下一个步骤S31中提供特定媒体源文件划分的信息。当所述媒体服
务器或修复服务器要向发出请求的客户端提供媒体数据分組流或者FEC
数据时,该信息对于所述媒体服务器或修复服务器具有相关性。
在下一个步骤S32中优选地提供属性表。如果在所述容器文件中包括
多于一个媒体源文件/流,则该属性表是特别有用的,但是在仅仅包含 单一J 某体源文件时也可以有利地使用该属性表。该文件属性表通常包含
所述媒体源文件的媒体类型的信息,优选地是所述媒体的多目的因特网 邮件扩展(MIME)类型。因此,该MIME信息可以表明所述媒体是音频 媒体、视频媒体或者某种其他媒体类型,其中包括同步多媒体集成语言 (SMIL)。该MIME类型向所述媒体服务器提供关于什么类型的数据被实 际包括在所述容器文件中的信息。所述属性表还可以包括被用于所述媒 体数据的任何编码方案的信息,其中包括gzip。在所述属性表中还可以 包括尺寸信息。该尺寸信息可以声明每一个媒体源文件的在字节或符号 数目方面的总尺寸、所述一个(或多个)源文件的媒体源块的对应尺寸 (基本上对应于在步骤S31中提供的所述划分信息)、对于将在传送数 据时被使用的数据分组的最大或目标有效载荷尺寸、媒体源符号(基本 上对应于在图3的步骤S21中生成的所述分割信息)和/或FEC符号的 (以字节计的)尺寸等等。对于被包括在所述容器文件中的每一个媒体 源文件,在所述属性表中优选地包括文件名或文件标识符。
优选地可以在所述属性表中找到关于每一个媒体源文件在所述容器 文件中的实际存储位置的信息。该位置信息可以表明该源文件的第 一媒 体源块的起始位置,并且随后在所述容器文件中的该位置之后找到剩余 的媒体块。在图1的步骤S4中生成的提供所述容器文件中的媒体源块 与FEC存储库之间的关联的元数据也可以-故包括在所述属性表中。相应 地,关于所采用的块分割以及对于FEC冗余数据计算所采用的FEC代码 的信息优选地;故包括在该表中。
因此,所述容器文件的属性表可以被用作用于媒体源的单一信息源, 以便定位相关的媒体源文件/块并且提供对于该源块的FEC冗余数据以 及可用于在媒体会话期间编辑媒体分组的其他信息。
下一个步骤S33生成供媒体服务器使用的编辑指令。这些指令被用来 基于所述元数据定义编辑,所述元数据提供了来自所述媒体源块的媒体 数据与来自相关联的一个(或多个)FEC存储库的FEC冗余数据的FEC -块关联以便形成数据分组的媒体流。因此,这些指令可以被视为提示
或元数据,其提供关于如何使用被包括在所述容器文件中的(媒体和
FEC)数据来组成具有可靠性保护的可传送媒体分组流的指令。因此, 这些指令被与所述关联元数据一起使用,以便把媒体数据和FEC数据一 起编辑成适当的分组,以供在媒体会话期间传输到发出请求的客户端。 因此,所述指令将描述媒体源数据和FEC数据的服务器侧传输顺序。但 是应当注意到,所述指令通常不包括时间调度信息、目标/源地址或端 口的信息或者其他特定于会话的信息。这意味着所述容器文件以及其中 的编辑指令对于特定会话来说是透明的,并且实际上可以被媒体服务器 用于与不同接收客户端的多个不同会话,但是也可以被不同媒体服务器使用。
所述编辑指令可以应用于所述媒体源块和FEC存储库的子集,这意味 着必须由媒体服务器在会话期间读取并使用多条这种指令。可替换地, 编辑指令包括对于单 一 媒体源文件或者实际上对于所述容器文件中的 所有媒体源文件所需要的所有信息。
在步骤S33中可以实际生成多于一个的编辑指令集合。在这种情况下, 可以提供不同的替换指令,从而媒体服务器可以选择确定对于特定媒体 会话采用哪一个特定指令集。例如,在采用单一传输信道以用于数据传 输时,第一编辑指令可以被用于描述媒体源块和FEC数据的传输顺序。 如果有多条信道可用(即意味着可以并行地而不是顺序地传送数据), 则第二指令可以被应用于相同的媒体源块和FEC数据,但是其提供编辑 和传输顺序信息。因此,可以使用几条编辑指令来提供针对不同传输信 道条件的替换传输会话。
按照类似的方式,对于不同的可靠性保护开销可以包括替换的编辑指 令。例如,第一编辑指令被用于针对第一最大保护开销水平描述媒体源 块和FEC数据的编辑和传输顺序,而第二指令则^&用于具有第二不同 FEC开销水平的相同媒体源块。如果该第二 FEC开销水平高于(低于) 第一水平,则可以向给定数量的媒体源符号添加更多的FEC符号或其在 本领域中也被称作的奇偶符号。
除了将被媒体服务器使用的编辑指令之外,可以在步骤S33中生成适 用于修复服务器的编辑指令。这些专用于修复的指令随后主要由后会话 修复服务器采用,以便允许识别出FEC冗余数据(可能的专用后会话FEC 冗余数据)以便传送到发出请求的客户端,其中该客户端未能正确地接
收及解码所有在前一 个媒体会话期间所接收的媒体数据。
下一个步骤S34在容器文件中组织在先前的步骤S30到S33以及优选 地还有图3的步骤S21中提供和生成的信息、表和指令。所述容器文件 于是将包含由媒体服务器或修复服务器识别及组成用于传输到发出请 求的一个(或多个)客户端的数据所需要的"原始"媒体数据、FEC数 据和元数据的完整集合。所述方法随后结束。
图11是根据本发明的媒体容器文件1的示意性总览。如前所述,该 容器文件1包含多个媒体源文件10、 12、 14的媒体数据,在该图中示 出了M个这种文件,其中M》1。每一个文件IO、 12、 14的媒体数据被 视为划分成多个媒体源块20、 22、 24。在该图中对于第一媒体源文件 10示出了 (^个这种块20、 22、 24,其中Q!》1。每一个这种J 某体源块20、 22、 24又被视为分割成源符号。
除了具有媒体数据的媒体源块20、 22、 24之外,所述容器文件1包 括FEC存储库30、 32、 34,其包含将与所述媒体数据相结合地使用来提 供可靠性保护的预先计算的FEC冗余数据。在一种优选的实现方式中, 每一个媒体源块包括至少一个专用的FEC存储库30、 32、 34。在这种情 况下,该图中的FEC存储库30、 32、 34的数目N是Ar》l;Q 。在一种替 换方法中,每一个媒体源文件10、 12、 14具有至少一不'专用FEC存储 库,即N》M。在这种情况下,所述存储库30、 32、 34的对应的区段或 区域可以被不同的媒体源块20、 22、 24釆用。
本发明的关联元数据40也被提供在所述容器文件1中,所述关联元 数据40提供所述FEC存储库30、 32、 34与所述一个(或多个)J 某体源 块20、 22、 24之间的关联,其中基于所述关联元数据40来计算所述存 储库30、 32、 34中的FEC数据。图11示出了该元数据40在文件1中 的多个不同的可能位置。在第一实施例中,与所述一个(或多个)相关 联的媒体源块20、 22、 24相结合地存储所述元数据。因此,通过识别 出所述文件中的媒体源块20、 22、 24还允许识别出该源块20、 22、 24 的对应元数据40。替换地或附加地,把所述元数据40与对应的FEC存 储库30、 32、 34—起存储。因此,每一个存储库30、 32、 34具有相连 接的关联元数据40,其允许识别出为之应用特定存储库30、 32、 34的 一个(或多个)相关媒体源块20、 22、 24。如果所述容器文件l包括优 选的文件属性表60,则所述关联元数据40可以被提供在该属性表中。
在这种情况下,媒体服务器可以仅仅调查该文件属性表60以便识别出 将在媒体会话期间使用的相关媒体数据和FEC数据的位置。在另 一种可 能的实现方式中,与所述容器文件1的不同编辑指令50、 52、 54相结 合地存储所述关联元数据40,所述编辑指令50、 52、 54在该图中#:标 记为提示轨道(hint track)。在这种情况下,每一条提示轨道50、 52、 54仅仅需要包含可以由该提示轨道50、 52、 54中的指令实现的媒体会 话所需要的元数据40。多个此类可能的存储位置的组合也是可能的,并 且落在本发明的范围之内。
在本发明的一种可选但是优选的实现方式中,所述容器文件1还包括 专门在修复程序期间使用的编辑指令70,其在该图中被标记为修复提示 轨道70。该提示轨道70于是优选地包括关联元数据45,所述关联元数 据45可用于识别包括可以用在所述修复程序中的后会话FEC数据的FEC 存储库30、 32、 34,这将在本文中进一步进行描述。
根据本发明的一个特定实施例,所述媒体容器文件1是交织的单元, 其针对循序(progressive)下载或流传输而纟皮优化。从而可以通过到 发出请求的客户端的所谓的循序下载或流传输来传送或下载整个多媒 体呈现。
IS0基础媒体文件格式[2, 3, 4]可以有利地被采用作为本发明的媒体 容器文件的文件格式。替换的容器文件格式包括MP4文件格式、3GP文 件才各式以及QuickTime才各式。
异步分层编码(ALC)是一种显著可伸缩的可靠的内容递送协议。其 是用于对任意二进制对象进行可靠的多点传送递送的基础协议,并且已 经被采用作为在3GPP2 BCMCS (广播/多点传送服务)和开放移动联盟 (OMA)浏览器和内容(BAC)广播(BCAST)工作组中进行广播/多点传 送文件递送的强制协议。
FLUTE (通过单向传输的文件递送)在ALC之上建立并且定义了一种 用于单向文件递送的协议,其近来已经在3GPP MBMS和DVB-H IP数据 播送(IPDC)中被采用作为针对广播/多点传送文件递送的强制协议。 ALC和FLUTE都由因特网工程特别任务组(IETF)定义。
FLUTE定义了文件递送表(FDT),其携带与在ALC会话中递送的文件 相关联的元数据,并且提供用于对FDT进行带内递送和更新的机制。与 此相对,ALC依赖于对文件元数据进行带外递送的其他措施。OMABCAST
定义了电子服务指南(ESG),其通常在所述ALC会话之前很好被递送 到客户端。如果在所述ALC会话期间需要更新所述文件元数据,则可以 通过利用ESG递送/更新信道来更新ESG的各片段。
将要通过ALC或者FLUTE递送的文件可以作为项目^皮存储在ISO容器 文件中。元框(Meta box)及其子框(child box)允许把多种数据项 目(比如静态媒体(画面)和SMIL呈现)存储到ISO基础媒体文件中。 所述元框及其子框还允许在所述ISO基础媒体文件中把文件名、到各项 目的路径以及所述文件目录结构的信令相关联。
一般来说,在可以通过ALC/FLUTE发送文件之前的第一步是把所述文 件分割成源块和源符号。此外,根据本发明,计算FEC编码的奇偶符号。 所述分割可以依赖于FEC方案、目标分组尺寸以及所期望的FEC开销。 对于将被FEC编码的每一个源块,预先计算奇偶符号的存储库,并且将 其与关于所述FEC方案和对所述源文件的分割的信息一起存储在所述 ISO基础媒体文件中。
促进文件传输的下一步是令所述ISO基础媒体文件还包含用于多点传 送/广播服务器的指令,其(利用会话描述协议)描述所述ALC/FLUTE 会话以及描述如何把各项目封装到ALC或FLUTE分组中。
一方面所述文件分割和FEC存储库,另 一方面用于文件递送的所述提 示轨道被彼此独立地使用。所述文件分割和FEC存储库有助于提示轨道 的设计并且允许例如具有不同FEC开销的替换提示轨道以重复使用相同 的FEC符号。所述文件分割和FEC存储库还提供针对后递送修复独立地 访问源符号和附加FEC符号的措施,其中所述后递送修复可以通过 ALC/FLUTE执行或者通过另一种协议带外执行。然而,为了在服务器遵 循提示轨道指令时降低复杂度,提示轨道直接涉及到被拷贝到提示釆样 中的项目或数据的数据范围。
下面给出了根据本发明的容器文件的一个更加详细的实现方式实例, 其具有ISO基础纟某体文件一各式的形式并且纟皮适配成通过ALC/FLUTE传 输。然而这仅仅应当被视为本发明的一个说明性实例,在本发明的范围 内可以对该实例4故出明显的^f'务改和改变。
源文件和FEC存储库的存储
预定通过ALC/FLUTE传输的文件被作为项目存储在充当容器文件的 ISO基础々某体文件的顶级元框('meta,)中。项目位置框('iloc,)
表明每一个项目(媒体源文件)在所述容器文件内的实际存储位置以及 每一个项目的文件尺寸。每一个项目的文件名、内容类型(MIME类型)
等等由项目信息框('iinf,)提供。
按照类似的方式,预先计算的FEC存储库被作为附加项目存储在所述 元框中。如果源文件被分离成几个源块,则对于每一个源块的FEC存储 库优选地被存储为单独的项目。FEC存储库与原始源项目之间的关系被 记录在下面章节中描述的文件递送(FD)项目信息框内。
FD项目信息框
关于分割源文件和FEC存储库的细节被提供在FD项目信息框
('fiin,)中。该框优选地被用于采用了 FD提示轨道的文件,并且优
选地恰好有一个该框位于所述元框(‘meta’)内。该框4支如下定义
aJigned(8) class FDItemlnforaiationBox extends Ful旧03c('fiin', version = 0, 0) { ,
unsigned int(16) entiy_count;
PartitionEntiy[ entry—count J partition—entries;
SessionGroupBox sessionJnfo;
GroupIdToNameBox groupJd_to-name;
所述FD项目信息框中的每一个PartitionEntry (分割条目)提供关 于对应于特定媒体源文件的特定文件分割、FEC编码、相关联的FEC存 储库以及元数据的细节。如果在所述IS0文件中使用了替换的FEC编码 方案或者分割,则有可能为一个源文件提供多个条目。所有分割条目都 可以被隐含地编号,并且笫一条目的编号通常为1。
分割条目
源的分割条目(‘paen’)故如下定义
aligned(8) class PartitionEntiy extends Box('paeu')
PilePartitionBox blocks-and—symbols; FECReservoirBoxFEC一symbo1—locations;}
该条目可以包含两个框,所迷两个框一起提供关于如何对媒体源文件 进行FEC编码的所有细节。
文件分割框
文件分割框('fpar,)识别出源文件并且提供把该文件分割成源块
和符号。其定义如下
aligned(8) class FilePartitionBox extends FullBox(言fpar', version - 0, 0)
unsigned int(16) iteinJD;
unsigned int(16) packetLpayloacLsize;
unsigned int(16) FEC,encodingJD;
unsigned int(16) FEC一instance一ID;
usingned int(16) max—source一blockJength;
unsigned int(16) encoding_8ymbolJength;
unsigned int(16) maJUiumber~oJLencoding_symbols;
string scheme一8pec迅c一info;
unsigned int(16) entry—count;
for (i-l; i < = entry—count; i++、
unsigned int(16) block—count; unsigned int(32) bbc、8ize;
语义
item-ID(项目ID)表明源文件的项目ID。有可能通过在多于一个文 件信息条目的文件分割框中使用相同的项目ID来提供对源文件的替换 的分割和/或FEC编码。
packeUpayload —size (分组有效载荷尺寸)给出分割算法的目标 FLUTE或ALC分组有效载荷尺寸。应当注意到,UDP分组有效载荷更大, 这是因为其还包含FLUTE或ALC报头。
FEC —encoding — ID (FEC编码ID)标识出FEC编码方案。G值可以对应 于,f夫i人方案,比^口只于应于"Compact No—Code FEC scheme ('紧至丈无4戈石马 FEC方案),,,其也被称作"Null-FEC (空FEC) ,, [5]。 1值优选地对 应于"MBMS FEC" [l]。
FEC_instance-ID (FEC事例ID)提供对被用于欠详列的FEC方案的 FEC编码器的更为具体的标识。该值通常不被用于完全详列的FEC方案。
关于欠详列的FEC方案的进一步细节参见文献[5]。
max_source_block_length (最大源块长度)给出每个J 某体源块的最 大源符号数目。
encoding —symbol — length (编码符号长度)给出一个编码符号(源符 号和FEC奇偶符号)的(以字节计的)尺寸。除了可能较短的最后一个
符号之外, 一个项目的所有编码符号优选地具有相同的长度。
max-誦ber-of-encoding一symbols (最大编码符号数目)给出针对在 文献[5]中定义的FEC编码ID 129可以为源块生成的最大编码符号数目。
scheme_specific_info (特定于方案的信息)是"FLUTEbis"中的特 定于方案的对象传送信息(特定于FEC-0TI方案的信息)的base64编 码的空字符结尾字符串。所述信息的定义取决于所述FEC编码ID。
entry — count (条目计数)给出提供对源文件的分割的(block—count, block—size)对的列表中的条目数。从所述文件的开头开始,每一个条 目表明该文件的下 一个片段如何被划分成源块和源符号。
block—count (块计数)表明尺寸为block—size (以字节计)的连续 源块的数目。不是符号尺寸(其被提供在FEC信息框中)的倍数的 block—size表明最后一个源符号包括未^C存储在所述文件项目中的填 充符。
FEC存储库框
FEC存储库框('fecr,)把媒体源文件与被存储为附加项目的FEC
存储库相关联
aligned(8) class FECReservokfiox extends Ful旧ox('fecr', version = 0, 0) { ,
unsigned int(16) entry一count;
for (i-l; i <= entry—count; i++)
unsigned int(16) itemLjD; unsigned int(32) symbol_count;
语义
entry_count (条目计数)给出提供对于每一个FEC存储库及其所包 含的源符号数目的(item_ID, symbol — count)对的列表中的条目数。该
列表开始于与所述媒体源文件的第一个源块相关联的FEC存储库,并且 顺序地继续遍历该文件。 项目信息框
为了利用广播/多点传送文件下载协议(ALC/FLUTE)内部地传送所嵌 入的分立媒体,优选地使所述服务器还传送对应于所述分立媒体的某些 元数据。如果FLUTE被用作广播协议,则作为所述FDT的一部分发送所 述元数据,而如果4巴ACL与0MA BCAST ESG相结合地^吏用,则作为0MA BCAST ESG的一部分发送所述元数据。
由于某些元数据信息可能是快速(on the fly )产生的,因此对于FLUTE
和ALC所共有的所述元数据的静态部分的才莫板结构被定义为所述项目信
息条目的第二版本。所述项目信息条目的该版本在所述项目信息框中被
用于具有源文件分割的项目。
aligned(8) class ItemlnfoEnbj extends FullBox((infe,, version 88 1, 0)
unsigned int(16) item_ID;
unsigned int(16) itera_protection_index;
unsigned int(32) content—length;
unsigned int(32) transfer—length;
string item—name;
string content一type;
string content—location;
string content—encoding;
string contentLMD5;
unsigned irxt(8) entty一count;
for (i-l; i <= entry—count; i++)
unsigned int(32) group一id;
语义
item-id (项目id)对于主资源(例如包含在"xml"框中的扩展标记 语言(XML))包含O,或者对于为之定义了以下信息的项目包含该项目 的ID。
item_protection_index(项目保护索引)对于不受保护的项目包含0, 或者包含到项目保护框的基于1的索引(所述项目保护框中的笫一个框 的索引为l),其中所述项目保护框定义了^皮应用于该项目的保护。
content — length (内容长度)给出(未编码)文件的总长度(以字节计)。
transfer —length (传送长度)给出(已编码)文件的总长度(以字 节计)。应当注意到,如果没有应用内容编码则该传送长度等于内容长 度(见下面)。
item-name (项目名)是UTF-8字符的空字符结尾字符串,其包含所 述项目的符号名,即该项目(源文件)的文件名。
content-type (内容类型)是UTF-8字符的空字符结尾字符串,其具 有所述项目的MIME类型。如果该项目是经过内容编码的(见下面), 则所述MIME类型指代内容解码之后的该项目。
content-location (内容位置)是UTF-8字符的空字符结尾字符串, 其包含定义在HTTP/1. 1 [6]中的所述文件的URI。
content —encoding (内容编码)是UTF-8字符的空字符结尾字符串, 其被用来表明所述二进制文件是已编码的,并且在被解译之前需要被解 码。针对HTTP/1. 1的内容编码定义了其值。 一些可能的值有"gzip"、 "compress"和"deflate"。空的字符串表明没有内容编码。应当注意 到,所述项目在应用了内容编码之后^皮存^f诸。
content—MD5 (内容MD5 )是UTF-8字符的空字符结尾字符串,其包含 所述文件的MD5摘要[6, 7]。
entry —count (条目计数)给出下面的列表中的条目数。
group_ID (组ID)表明所述文件项目所属的文件组。
优选地采用所有的字段。但是空字符结尾字符串也有可能仅仅包含空 字符,以表明没有提供该字段的相应值。对所述框的未来扩展可以在末 尾添加附加的字l殳。
通过考虑被提供在对于每一个项目的文件信息框中的信息以及由提 示轨道所使用的项目列表,可以构造对于FDT或ESG所需的文件条目。
可以通过使用定义在IS0基础媒体文件格式[2, 3]的8.44.7节中的 通用资源位置(URL)表来指代所嵌入的媒体资源的内容位置。
会话组框
FD会话可以同时在几条FD信道上进行发送,其中的每一条信道都由 FD提示轨道进行描述。所述会话组框包含会话列表以及属于每一个会话 的所有媒体文件组和提示轨道。如果在所述容器文件中有多于一条FD 提示轨道,则在所述FD项目信息框中优选地存在一个会话组框。
在任意时间应当仅仅处理一个会话组。在会话组中第一条列出的提示 轨道指定基础信道。如果所述媒体服务器在各会话组之间没有优选,则 默认的选择通常是第 一会话组。包含由所述提示轨道所提到的文件的所 有文件组的组ID都被包括在所述文件组的列表中。随后可以(利用組 ID到名称框)把所述文件组ID翻译成文件组名,所述文件组名可以祐二 所述服务器包括在FDT中。
aligned问class SessionGroupBox extends Box('segr')
unsigned int(16) num_8ession—groups; for(i"0; i < num_session—groups; i++)
unsigned int(8) entry一ccmnt; for (j=0; j < entry一count; j++)
unsigned int(32) groupJD;
unsigned int(16) num_channels_in—session_group; for(k="0; k < num—channelsjn—session—group; k++)
unsigned int(32) hint一trackuid;
语义
num_session_groups (会话组数目)指定会话组的数目。 entry — count (条目计数)给出下面的列表中的条目数,该列表包括 所述会话组所遵照的所有文件组。该会话组包含^皮包括在由每一个源文 件的项目信息条目所表明的所列出的文件组中的所有文件。用于该会话 组的FDT应当优选地仅仅包含在该结构中列出的那些组。group—ID (组ID)表明所述会话组所遵照的文件纟且。
num—charmels —in—session—groups (会话组中的信道数)指定所述会 话组中的信道数。该会话组中的信道数的值是正整数。
hint_track—ID (提示轨道ID )指定属于特定会话组的FD提示轨道的 轨道ID。 一条FD提示轨道对应于一条分层编码传输(LCT)信道。
组ID到名称框
所述组ID到名称框把文件组名与使用在所述项目信息条目中的文件 组ID相关联。
aligned(8) class GroupIdToNameBox extends FullBox('gitn', version = O' 0)
unsigned int(32) entty一count; for (i l; i< entiy—count; i++)
unsigned int(32) group—ID; string group一name;
语义
entry —count (条目计数)给出下面的列表中的条目数。 group —ID (组ID)表明文件组。
group—name (组名)是UTF-8字符的空字符结尾字符串,其包含相应 的文件组名。 提示4九道才各式
所述提示轨道结构被一般化,以便支持多种数据格式的提示采样。所 述提示轨道采样包含建立正确类型的分组报头所需要的任何数据,并且 还包含到应归入所述分组中的数据的媒体源块的指针。
采样条目格式
FD提示轨道是具有"fdp"("文件递送协议"的简称)的采样描述 中的条目格式的提示轨道(媒体句柄"hint (提示)")。 FDHintSampleEntry( FD提示采样条目)净皮包含在SampleDescr ipt ionBox (采样描述框)('stsd,)中并且具有以下句法
class FDHintSarapleEntry() extends SampleEntiy ('fdp')
uint(16) hinttrackversion - 1; uint(16) highestcompatibleversion >= 1; uint(16) partition^entry一ID; ,uint(16) FEC_overhead; box additionaldata[];
语义
partition—entry —ID (分割条目ID)表明FD项目信息框中的分割条 目。O值表明没有分割条目与该采样条目相关联(例如对于FDT)。
FEC_overhead ( FEC开销)是固定的值8.8,其表明由所述一个(或 多个)提示采样使用的百分比保护开销。提供FEC开销的意图是提供帮 助媒体服务器选择会话组(以及相应的FD提示轨道)的特性。
字|殳 "hinttrackversion (提示專九道版本)"和 "highestcompatibleversion (最高兼容版本),,具有与 "RtpHintSampleEntry (Rtp提示釆样条目)"中相同的解译,这在ISO 基础媒体文件格式[2, 3]的10.2节中做了描述。作为附加的数据,提 供time-scale-entry(时间尺度条目)框。如果没有提供所述时间尺度条 目框,则没有给出关于分组定时的指示。
可以通过观察提示轨道的所有采样条目以及由上述项目ID所涉及的 项目的相应文件元数据信息框来产生FDT或ESG所需要的文件条目。如 果任何采样没有涉及采样条目,则没有采样条目包括在所述提示轨道 中。
推荐所述媒体服务器对于所述文件的每一次重传发送不同的一组FEC 符号。
采样格式
所述提示轨道中的每一个FD釆样将生成一个或多个FD分组。每一个 采样包含两个区域针对组成所述分组的指令,以及在发送所述分组时 所需要的任何额外数据(例如净皮拷贝到所述采样中而不是驻留在用于源 文件或FEC的项目中的编码符号)。应当注意到,可以从采样尺寸表中 获知所述采样的尺寸。
aligned(8) class FDsample extends Box((fdsa,
FDPacketBox packetbox[] ExtmDataBox extradata;
样地,i一个':D ^样中的:f:分组框按照应当:其进行处理的顺序出现5。
如果在所述FD提示采样条目中存在时间尺度条目框,则定义采样次数 并且提供对于默认比特率的相对分组发送次数。取决于实际的传输比特 率,服务器可以应用线性时间缩放。采样次数可以简化所述调度处理, 但是要及时发送分组则取决于所述媒体服务器。 分组条目才各式
所述FD采样中的每一个分组具有以下结构[8-10]: aligned问class FDpacketBox extends Box((fdpa")
header—template LCT—header—info; unsigned int(16) entiycountl;
dataentiy header—extension—constructorsfentiycountl];
unsigned itit(16) entrycount2;
dataenbty packet一constructors[entrycoimt2;
LCT_header_info ( LCT报头信息)包含用于当前FD分组的LCT报头模板。
entry —countl (条目计数1 )对下面的构造器进行计数。
header — extension—constructors:(净艮头扩展构造器)是4皮用来构
造LCT报头扩展的结构。
entry-count2 (条目计数2 )对下面的构造器进行计数。
packet —constructors (分组构造器)是被用来构造FD分组中的FEC
有效载荷ID和源符号的结构。 LCT报头模板格式
class header一template
unsigned int(l} sender—current_thne_present;
unsigned int(l) expected—residual一time一present;
unsigned int(l) sessioruclose一bit;
unsigned int(l) objectLclose一bit;
unsigned int(4) reserved;
unsigned int(16) transport_object_identifier;
所述LCT报头模板可以被媒体服务器使用来形成用于分组的LCT报 头。应当注意到,所述报头的某些部分取决于服务器策略并且没有^皮包 括在所述模板中。某些字段长度还取决于由所述服务器分配的LCT报头 比特。所述服务器可能还需要改变所述TOI的值。
LCT报头扩展构造器格式
应当注意到,媒体服务器可以通过观察是否存在EXT-FDT来识别出包
括FDT的分组。
aligned(8) class LCTheaderextension
unsigned int问header—extension—type; unsigned int问header—extensionjength; unsigned int(8) header—extension—content^];
}
header — extension-length(报头扩展长度)用32比特字的倍数表示。 0值意味着该报头由服务器生成。
header — extens ion—content (报头扩展内容)是等于 header_extension-length (才艮头扩展长度)的项目数。
分组构造器格式
存在多种形式的构造器。每一个构造器都是16字节,以便使得迭代 更加容易。第一个字节是联合区分符(union discriminator)。该结构 是基于IS0基础媒体文件格式[2, 3]的10. 3. 2节。所述分组构造器被 用来把FEC有效载荷ID以及源符号包括在FD分组中。
aligned(8) class FDconstructor(type)
unsigned 3nt(8) constructor—type = type;
aligned(8) class FDnoopconstructor extends FDconstructor(O) unsigned int(8) pad[15;
aligned(8) class FDimmediateconstructor extends FDconstructor(l)
unsigned int(8) count; unsigned int(8) data[countj; unsigned int问pad[l4 - count!;
aligned(8) class FDsampleconstructor extends FT)constructor(2)
signed int问trackreflndex; unsigned int(16) length; unsigned int(32) samplenumber; unsigned int(32) sampleoffset; unsigned int(16) bytesperblock - lj unsigned int{16) samplesperblock 1;
aligned(8) class FDitemconstructor extends FDconstructor(3)
unsigned int(16) item—ID; unsigned int(16) extent—index; unsigned int(64) data^offset; ■unsigned int(24) datajength;
aligtied(8) class FDxmlboxconstructor extends FDconstructor(4)
unsigned int(64) datfL_offset; unsigned int(32) datajength; unsigned int(24) reserved;
额外数据框
FD提示轨道的每一个采样可以包括存储在额外数据框中的额外数据 aligned(8) class ExtraDataBox extends Box('extr')
bit问extradata
图5是示出了根据本发明的媒体会话管理方法的流程图。该媒体会话 管理是在媒体服务器(比如流传输或下载服务器)中实施的,并且其使 用本发明的媒体容器文件。所述方法开始于步骤S40,在该步骤中提供 媒体容器文件。这一文件提供可以通过从所述媒体服务器的存储器位置 获取所述容器文件而实现,这意味着该服务器先前已经从内容提供商或 产生器接收了所述文件。可替换地,所述媒体服务器可以结合针对媒体 数据的请求从内容提供商定购或接收所述容器文件。
在下一个步骤S41中,通过从所述容器文件的一个(或多个)媒体源 块中提取媒体数据并且从一个(或多个)FEC存储库中提取FEC冗余数 据来编辑媒体数据分组。这一数据提取是基于所述容器文件中的元数据 执行的,所述元数据提供所述一个(或多个)媒体源块与所述一个(或 多个)FEC存储库之间的关联。因此,媒体服务器优选地接收将在所述 媒体会话期间传送的媒体数据的标识符。可替换地,所述容器文件可能 仅仅包含单一媒体数据文件的媒体数据,因此没有必要选择媒体源。在 任一种情况下,被包括在所述容器文件中(比如被包括在所述文件属性 表中)的先前描述的信息都可以被用于识别所述媒体文件的开头,即应 当从该处开始传输的第一个媒体源块。此外,被包括在所述容器文件中 的其他信息可以被用作关于应当如何组合媒体数据和FEC数据并且将其 包括在数据分组中的指令,其中所述数据分组适于通过一条或多条基于 无线电的信道被无线传送到不同的客户端。在给出当前从中提取媒体数 据的媒体源块的情况下,本发明的元数据允许识别出应当在所述分组编 辑步骤S41中从其中提取FEC数据的相关联的FEC存储库。
在下一个步骤S42中,优选地通过广播或多点传送技术把具有FEC可 靠性保护的所编辑的媒体数据分组发送到客户端,在所述客户端处可以 呈现所述媒体数据。通常一旦在所述媒体服务器中的传送緩冲器达到了 给定水平之后就启动所述分组传输。但是在所述媒体会话期间,在其他
分组正被传送的同时编辑新的数据分组并且将其输入到所述传送緩冲
器中,这由线L2示意性地示出。
所生成的容器文件以及在其中组织媒体数据并且提供预先计算的FEC 数据,可以在媒体会话期间降低所述媒体服务器的处理需求。因此这导 致降低了服务器复杂度并且允许服务器灵活性,这是因为所述服务器不 需要快速进行源块构造和FEC编码。与此相对,所述服务器使用所述容 器文件中的元数据和指令来提取预先计算的源符号和FEC符号、添加报 头信息并且把所得到的数据分组发送到客户端。
所述方法随后结束。
图6是示出了图4的会话管理方法的附加步骤的流程图。所述方法从 图5的步骤S40继续。在下一个步骤S50中确定当前可以净皮采用来在所 述媒体会话中进行数据传输的FEC开销容量。可以基于针对所述媒体传 输所能分配给所述服务器的带宽水平以及对于该媒体传输所采用的一 个(或多个)无线电载体的最小和最大比特率水平等等来确定或者至少 估计所述容量。实际上可以在该步骤S50中采用本领域中已知的用于结 合数据传输确定这种开销容量的任何技术。
一旦确定了所述FEC开销容量,下一个步骤S51就基于所确定的开销 容量来选择编辑指令集。因此,所迷媒体容器文件于是包含多个替换的 编辑指令集,所述替换的编辑指令集可以被用于给定的媒体内容但是提 供不同的FEC开销水平。换句话说,这些替换的编辑指令基本上定义将 在编辑媒体数据分组时添加到所述媒体数据中的FEC冗余数据量。可接 受的FEC开销越大,所添加的FEC数据就越多。通过具有不同的替换编 辑指令,所述媒体服务器可以使用在给定当前开销限制的情况下允许最 高可允许FEC保护的那些指令,从而与使用单一编辑指令集相比增大了 在不同客户端处成功接收及解码所述媒体数据的机会。
所述方法随后继续到图5的步骤S41,在该步骤中基于在步骤S51中 选择的编辑指令从所述媒体内容数据和相关联的FEC数据编辑媒体数据分组。
图12是根据本发明的媒体容器文件1的示意图,其被用于显示出根 据本发明的一个实施例使用替换的编辑指令。该容器文件l包括媒体源 文件10,所述媒体源文件10优选地包括多个媒体源块(比如两个媒体 源块)。、在该实施例中,该源文件10的每一个媒体源块具有相关联的
FEC存储库30、 32,所述FEC存储库包括为对应的源块预先计算的FEC 冗余数据。在该说明性例子中,该容器文件1还包括三条提示轨道50、 52、 54,所述提示轨道包含用于不同的FEC开销的编辑指令。例如,在 期望10%的冗余开销时可以使用第一提示轨道50,第二提示轨道52给 出大约12%的FEC开销,第三提示轨道54给出14%的FEC开销。在该图 中采用了在文献[l]的附录B中提出的源块构造算法。如果选择了笫一 提示轨道50,则生成数据分组81、 82、 83、 84的第一流(在该图中每 个媒体源块仅仅一个数据分组并且示出了 FEC块)。然而,如果替换地 使用了第二提示轨道52,则生成数据分组91、 92、 93、 94的第二流。 与第一流80相比,第二流90对于每个媒体源块包括更大的FEC块,即 更多的FEC冗余数据。但是对应的源块在两个流80、 90中包含相同的 媒体数据量。
如前所迷,所述媒体容器文件可以包含多个媒体源文件或者携带不同 媒体内容的文件。图7的流程图示出了其中利用了这种多文件解决方案 的图5的编辑和传送步骤的实施例。所述方法从图5的步骤S^继续。 在下一个步骤S6Q中,第一媒体内容文件和第一FEC存储库的媒体数据 分组基于所述元数据以及专用于该特定媒体内容的编辑指令而生成。所 述分组生成的结果可以^皮视为包含第 一組的媒体内容和来自第一 FEC存 储库的FEC数据的数据分组流。随后在步骤S61中利用基于无线电的通 信信道(优选地是广播或多点传送信道)把该第一组数据分组发送到发 出请求的客户端。
然而在当前媒体会话中还应当把所述容器文件中的第二媒体源文件 或者第二组的媒体内容传送到所述客户端。结果,在步骤S62中包含来 自所述第二媒体源文件的媒体内容数据和来自第二相关联的FEC存储库 的FEC冗余数据的数据分组基于元数据和与这个内容相关联的编辑指令 而生成。随后在步骤S63中利用在先前描述的步骤S61中被所述服务器 所釆用的相同的基于无线电的通信信道来传送所得到的数据分组。因 此,将作为数据分组的连续流来发送所述两组数据分组。
图8的流程图示出了其中利用了多文件解决方案的图5的编辑和传送 步骤的附加实施例。该方法从图5的步骤40继续。在下一个步骤S70 中,生成包含来自第一媒体源文件的媒体内容数据和来自第一 FEC存储 库的FEC数据的媒体数据分组。该步骤S70基本上对应于图7的步骤
S60,并且在这里不再进一步描述。下一个步骤S71对应于图6的步骤 S61,在该步骤中数据分组包括从所述容器文件的笫二媒体源文件和第 二FEC存储库导出的媒体内容。在该实施例中,所述媒体服务器可以同 时管理两个客户端组(IP多点传送组)。因此,在下一步骤S72中,所 述媒体服务器利用第 一基于无线电的通信信道把在步骤S 7 Q中生成的数 据分组的第 一组或第 一流传送到第 一媒体组的客户端成员,并且同时地 或者至少部分同时地利用第二基于无线电的通信信道把第二媒体数据 分组流传送到第二媒体组的客户端成员。因此,在该实施例中将作为并 行媒体流来发送所述两组数据分组。所述方法随后结束。
本发明还包含以下情况多个媒体文件的媒体数据被共同编辑并传送 到一组客户端。在这种情况下,在所述媒体会话期间由所述媒体服务器 一同管理来自所述多个源文件的媒体数据。这特别是其中一个媒体文件 包含视频数据并且第二媒体文件包含相关联的音频数据的情况。可以利 用相同的基于无线电的通信信道或者不同的此类信道来传送所述两个 文件的媒体数据。
本发明预期在上面结合图7和8描述的教导可以被扩展成处理在所述 容器文件中包括多于两个媒体源文件和FEC存储库的情况。
图13是媒体容器文件1的示意性表示,其具有多个媒体源文件10、 12、 14和多个FEC存储库30、 32、 34。该容器文件1还包括两条提示 轨道50、 52,其具有用于从所述源文件10、 12、 14中提取媒体内容数 据并且从所述存储库30、 32、 34中提取FEC数据所需要的编辑指令和 元数据。
在组成包含来自多个源文件10、 12、 14和FEC存储库30、 32、 34的 数据分组81、 82、 91、 92的流时可以由媒体服务器采用第一提示轨道 50。随后将利用基于无线电的信道把所生成的流传送到发出请求的客户 端(与图7相比)。在应当同时管理多个媒体组时可以采用第二提示轨 道52。因此,由所述媒体服务器基于所述提示轨道52、源文件IO、 12、 14以及FEC存储库30、 32、 34生成数据分组81、 82; 91、 92的多个并 行流。
如果所述媒体容器文件还包括附加信息(比如文件到块划分的信息、 块分割的信息、FEC算法和/或文件属性表的信息),所述媒体服务器可 以在数据分组生成和传输过程中使用该附加信息。
例如,所述媒体服务器可以把所述块分割的信息与所述元数据一起使 用来从所述容器文件内的媒体源文件和块中提取媒体数据。这样,所述 分割信息帮助该服务器正确地识别出所期望的媒体数据在所述容器文
件中的正确的存储位置。相应地,所述媒体服务器可以把FEC算法信息 与所述元数据一起使用来从所述容器文件中提取媒体数据和FEC数据。 不同的FEC算法需要从媒体内容到源符号和块的不同分割,此外,所述 分割可以取决于所述保护开销。因此,在预先计算所述FEC数据时所采 用的FEC算法和其他FEC参数的信息对所述媒体服务器来说可能是有用 的。
可以在所述文件属性表中包括或者至少声明可以由所述媒体服务器
使用的所述附加数据以及优选地还有MIME类型的信息、任何编码信息、
尺寸信息等等。在一种优选实现方式中,该属性表构成单一信息或查找
源,其可以被所述媒体服务器访问以便获得结合媒体提取、数据分组编 辑和传输所需要的或者有利的信息。
本发明的媒体服务器还可以被用于后修复程序。因此,在这种情况下, 尽管在所述媒体流中包括了 FEC冗余数据,但是在把媒体内容数据和 FEC数据传送(多点传送)到客户端以后,某些客户端可能仍无法正确 地解码所接收的媒体符号。图9的流程图示出了定义这种后修复程序的 附加步骤。通常一旦在所述媒体会话期间的媒体传输结束或者至少在把 某些媒体数据传送到客户端之后启动该程序。所述方法因此从图5的步 骤S42继续。在下一个步骤S80中,所述媒体服务器接收到源自先前在 与该服务器的媒体会话中所涉及到的客户端的针对后会话修复程序的 请求。所述修复请求通常包括不正确地接收的媒体数据的标识符。该标 识可以是特定媒体内容的名称并且可能是允许所述内容服务器更加详 细地识别出未被所述客户端成功接收的内容部分的某种信息。在下一个 步骤S81中,所述服务器使用该信息从基于该信息识别出的FEC存储库 中提取FEC冗余数据。在该提取步骤S81中,所述服务器可以默认地提 取在步骤S82中优选地利用基于单点传送的数据传输被传送到发出请求 的客户端的预定义数目的FEC符号。如果所提供的FEC符号不足以对所 述媒体内容进行成功解码,则所述客户端可以从所述服务器请求更多 FEC符号。可替换地,所述客户端为所述服务器提供这样的信息,该信 息允许该服务器至少估计出为了在该客户端处成功解码所述媒体内容
所需要的FEC符号的数目。在这种情况下,所述服务器优选地在所述提 取步骤S81中使用该信息,并且在步骤S82中把所提取的FEC符号传送 到所述客户端。
在媒体会话中使用了本发明的媒体容器文件之后,还可以在专用的后 会话修复程序中使用所述媒体容器文件。图IO是示出了本发明的这种 后会话修复方法的流程图。该方法开始于步骤S90,在该步骤中,修复 服务器从客户端接收到针对FEC冗余数据的请求,该客户端先前在媒体 会话中被涉及到并且从媒体服务器接收了媒体数据。在步骤S9G中接收 到的该请求包括允许该修复服务器识别出媒体容器文件的标识符。因 此,该服务器在下一个步骤S91中基于所述请求(通常是该请求中的所 述标识符)提供相关的媒体容器文件。该容器文件通常是由媒体服务器 在先前的媒体会话中使用的容器文件的副本,因此包括一个(或多个) 媒体源块和一个(或多个)FEC存储库,所述媒体源块和FEC存储库分 别包含所传送的但是没有在发出请求的客户端处完全成功接收到的媒 体和FEC数据。可以从内容提供商/产生器或者实际从实施先前的媒体 会话的所述媒体服务器定购或请求所述容器文件。
所述修复服务器在步骤S92中基于元数据使用所述修复请求中的标识 符从所述媒体容器文件中提取FEC冗余数据。在一种优选的实现方式中, 所述标识符可以是包含所述不正确地接收的媒体内容的媒体源文件的 名称或者某种更为详细的信息,其中包括特定媒体源块的标识,所述特 定媒体源块包含所述缺失的媒体数据。随后把所述容器文件中的元数据 与所述标识符一起使用来识别该容器文件中的至少一个FEC存储库,其 中应当从该至少一个FEC存储库中提取所述FEC数据。如前面结合图9 的步骤S81所描述的那样,可以向所述修复服务器通知对进行成功的数 据解码所需的FEC数据量的估计。可替换地,所述修复服务器可以提取 并发送默认数目的FEC符号,并且要求所述客户端在这些默认数目的符 号不足够的情况下请求更多FEC数据。
参见图U,在一种优选的实现方式中,所述容器文件包括后会话修复 指令70。这些指令随后被所述修复服务器使用来编辑数据分组,所述数 据分组包含从FEC存储库30、 32、 34中提取的FEC数据。如图所示, 由所述服务器在该提取程序中使用的元数据45可以被包括在所述编辑 指令70中或者构成其一部分。可替换地,可以与相关的媒体源文件10、
12、 14、 FEC存储库30、 32、 34相结合地提供所述元数据45,或者在 被包括在所述容器文件1内的文件属性表60中提供所述元数据45。
图14是通信网络的示意性总览,其中示出了生成或使用本发明的媒 体容器文件1的各方。内容服务器IOO表示所述内容提供商或产生器, 其接收或者可以访问媒体源数据并且构造媒体容器文件1。该容器文件 1的副本被发送到媒体服务器200,该媒体服务器200在媒体会话中使 用该容器文件1来编辑数据分组,所述数据分组包含被发送(多点传送) 到不同的客户端400、 410、 420的媒体和FEC数据,所述客户端在该图 中由移动终端表示。在与该媒体服务器200的所述媒体会话之后,其中 一个所述移动终端400可以联系修复服务器300。在这种情况下,该修 复服务器300从该内容服务器IOO请求所述媒体容器文件1的副本,并 且在后会话修复程序中使用该副本。
图15是根据本发明的媒体内容服务器100的示意性方框图。该内容 服务器100包括一般的输入和输出(I/O)单元110,其被设置成与各外 部单元通信并且包括用于与各外部单元通信的功能(发送器/接收器、 调制器/解调器、编码器/解码器)。该1/0单元IIO特别被设置成接收 输入媒体内容以及接收针对媒体容器文件的请求。当向所述通信网络中 的其他服务器传送这种容器文件时,服务器IOO还采用该1/0单元110。
所述内容服务器IOO还包括容器文件产生器120,其被设置成产生本 发明的媒体容器文件。该产生器120包括媒体块管理器130,其净皮设置 成把至少一个媒体源块输入并组织到媒体容器文件中。该至少一个输入 源块优选地是从该内容服务器100的文件划分器190提供的。可替换地, 所述至少 一个源块可以从内部数据存储装置115检索并且可以利用所述 1/0单元110从外部々某体源500、 510提供。
所述内容服务器100的FEC编解码器160为由所迷块管理器130输入 到所述容器文件中的媒体源块计算FEC冗余数据。该FEC编解码器160 可以在该计算程序中使用任一种先前提到的FEC算法。该编解码器160 可以被设置成对于所有其冗余数据计算都使用给定的FEC算法。可替换 地,该编解码器160可以使用多种不同算法,因此可以选择实际的算法。 可以基于不同的参数来执行所述算法选择,所述参数比如是由所述文件 划分器190进行的特定块划分、所述媒体源块中的数据类型或者某种其 他参数。由所述编解码器160计算的FEC数据既可以;故用作媒体会话中
的冗余数据,也可以被用作后会话修复程序中的修复数据。
所得到的计算出的FEC数据(符号)被输入到所述文件产生器120的 FEC数据管理器140。该FEC管理器140把所述输入FEC数据组织到所 述媒体容器文件内的至少一个FEC存储库中。在一种优选的实现方式中, 所述FEC编解码器160和FEC管理器140生成用于由所述块管理器130 组织到所述文件中的每一个源块的FEC符号,并且在所述容器文件中为 每一个源块提供至少一个FEC存储库。
所述文件管理器120的元数据管理器150把元数据提供到所述容器文 件中。该元数据提供由所述块管理器130组织的所述媒体源块与由所述 FEC管理器140组织的所述FEC存储库之间的关联。
随后可以把所得到的媒体容器文件至少临时存储在所述数据存储装 置115中,或者通过所述1/0单元IIO将其传送到媒体服务器或修复服 务器。
在 一 种优选的实现方式中,所述输入媒体内容具有媒体源文件的形 式,所述媒体源文件被提供到所述文件划分器190。该划分器190把所 述源文件分离成一个或多个源块。该划分器190可以基于不同的信息或 参数进行该文件划分。例如,可以至少部分地基于由所述FEC编解码器 160采用的FEC算法来确定所述文件划分。在这种情况下,所迷文件划 分190优选地可以使用这种FEC算法的信息。该划分器190随后可以把 媒体源文件划分成个等尺寸的媒体源块以及一个可以具有小于其他
7个块的尺寸的媒体源块。
所述媒体文件还纟皮输入到块分割器195,其优选地在所述文件划分器 对所述数据进行了处理之后对所述媒体数据进行操作。该分割器195及 时对一个媒体源块进行操作,并且把该块分割成具有已定义尺寸的源符 号。优选地基于将被所述FEC编解码器160采用的特定FEC算法或方案 来进行该块分割。所述块分割器195还可以操作来执行适于把所述源符 号置于数据分组中的分割,所述数据分组将由媒体服务器在媒体会话期 间采用。因此,所述分割器195可以采用分组尺寸(比如UDP分组尺寸)信息。
所述分割器195还生成所得到的块分割的信息。该信息随后被转送到 所述FEC编解码器160,以便在生成所述FEC冗余数据时使用。
所述内容服务器100的各单元110、 120、 130、 140、 150、 160、 190
和195可以净皮实现或者提供为软件、硬件或其组合。所迷单元110到195 都可以被实现在通信系统中的单一网络节点内的内容服务器100中。可 替换地,分布式实现方式也是可能的,并且落在本发明的范围内。在这 种情况下,所述内容服务器100的不同单元110到195可以被设置在不 同的网络节点中,但是即便如此也仍将执行前面所描述的其预定操作。
图16是更加详细地示出了图15的容器文件产生器120的实施例的示 意性方框图。该文件产生器120还包括信息管理器170,其用于把不同 的信息数据包括并组织在所述容器文件中。该管理器170优选地把由所 述FEC编解码器160使用的FEC算法、由所述文件划分器190使用的文 件划分和/或所述块分割器195的块分割的信息提供在所述文件中。其 他信息可以是描述所述媒体数据的数据,比如媒体类型、(块和/或符 号)尺寸信息、内容名称或标识符、位置信息、可选的编码信息等等。 在一个优选实施例中,可能把该信息与来自所述元管理器150的元数据 一起组织到被包括在所述容器文件内的文件属性表中。
所述文件产生器120的指令管理器18Q生成编辑指令并且将其插入到 所述容器文件中。这些指令包括由媒体服务器使用来基于来自所述元数 据管理ll 15 0的元数据编辑来自所述媒体源块的媒体数据以及来自所述 FEC存储库的FEC数据的信息。该管理器180可以为所述文件中的每一 项媒体内容生成单一指令或者指令集。可替换地,可以由该管理器180 提供不同的所述指令并且将其组织到所述容器文件中,其中所述不同的 指令适应于在所述媒体会话中采用的不同的FEC开销、不同的FEC数据 类型和/或不同数目的基于无线电的通信信道。
所述容器文件产生器120的各单元130到180可以被实现或者提供为 软件、硬件或其组合。所述单元130到180都可以被实现在所述容器文 件产生器120中。可替换地,分布式实现方式也是可能的,并且落在本 发明的范围内。在这种情况下,所述容器文件产生器120的不同单元120 到180可以被设置在所述内容服务器100中的其他位置处。
图17是根据本发明的媒体会话服务器200的示意性方框图。该媒体 服务器200包括1/0单元210,其用于实施与各外部单元的通信。该I/O 单元210特别被设置成从内容服务器请求并接收媒体文件容器。该I/O
于应当向哪些客^户端传^媒体内容:信息。'还可以通过该,1^)单元'210
把由所述媒体服务器200编辑的数据分组传送到这些客户端。
所述服务器20G包括媒体文件提供器220,其提供媒体内容文件以便 使用在当前会话中。该文件提供器220可以生成针对特定容器文件的请 求,该请求通过所述1/0单元210被传送到内容产生器。可替换地,该 提供器220从被提供在所述媒体服务器200内的数据存储装置260中获 取先前接收的容器文件。
数据分组编辑器230使用被包括在来自所述提供器220的容器文件中 的元数据以及优选地编辑指令以从该文件中提取媒体数据和FEC数据, 并且生成包含所提取的该数据的数据分组。随后通过所述I/O单元210 传送(或者从该处流传输或下载)如此生成的数据分组。
述文件中的其他信息(FEC算法信息、划分/分割信息、尺寸信息、内容 名称、内容存储信息)。因此,实际上在所述内容文件中提供了生成具 有媒体数据和FEC数据的数据分组所需要的所有指令和数据,从而允许 灵活且高效的媒体会话管理。
对于给定的媒体内容可以把不同的编辑指令存储在所述文件中。例 如,所述指令可以是依赖于信道或者依赖于容量的。在前一种情况下, 可用无线电信道的数目和应当传送的并行媒体流的数目决定由所述编 辑器230使用的实际编辑指令。在后一种情况下,在所述服务器200中 优选地包括FEC容量估计器240,其用于估计可以在会话期间采用的FEC 开销的最大数量。优选地在所述会话期间动态地更新由该估计器240执 行的开销估计,这是因为可以在所述会话期间改变所述开销容量。集合 选择器250使用来自所述估计器240的所述容量估计来选择将要使用可 以在所述文件中获得的哪一条特定编辑指令或指令集。所述分組编辑器 230随后使用该指令(集)把媒体数据和FEC数据编辑到数据分组中。
所述媒体服务器200可以可选地包括FEC管理器270,其可以由该媒 体服务器200在后会话修复程序中使用。在这种情况下,所述I/0单元 210接收源自客户端的修复请求,其中该服务器200先前向该客户端传 送了媒体和FEC数据。从所述I/O单元210把该请求转送到所述FEC管 理器270。该管理器270使用该请求从所述媒体容器文件中(例如其被 存储在所述数据存储装置260中)识别并提取出FEC冗余数据(符号)。 在该后会话FEC提取中,该FEC管理器270可以釆用被包括在所述容器
文件中的后会话修复指令来识别出正确的FEC数据以及/或者把所提取 出的FEC数据编辑到数据分组中。随后通过所述I/O单元210把所得到 的数据分组传送到发出请求的该客户端。
所述媒体服务器200的各单元210、 220、 230、 240、 250和27G可以 被实现或者提供为软件、硬件或其组合。所述单元210到270都可以被 实现在通信系统中的单一网络节点内的媒体服务器200中。可替换地, 分布式实现方式也是可能的,并且落在本发明的范围内。在这种情况下, 所述媒体服务器200的不同单元210到270可以被设置在不同的网络节 点中,但是即便如此也仍将执行前面所描述的其预定操作。
图18是根据本发明的修复服务器300的示意性方框图。该服务器300 包括1/0单元310,其被设置成与各外部单元进行通信。该1/0单元310 特别被提供来接收来自客户端的后会话修复请求,并且用于从内容产生 器或者媒体会话服务器请求媒体容器文件。对包括FEC冗余数据的数据 分组的传输也通过该1/0单元310执行。
所述修复服务器300包括媒体文件提供器320,其响应于接收到来自 客户端的修复请求而提供容器文件。该提供器320可以组成通过所述 I/0单元31 0传送到内容产生器的容器请求以提供所述文件。可替换地, 该修复服务器300先前已经接收了所述容器文件,从而该文件提供器 320从数据存储装置340中获取该容器文件。
FEC数据提取器330被设置在所述服务器300中,以便基于被包括在 所述修复请求中的标识符从由所述文件提供器320提供的容器文件中提 取FEC冗余数据。该标识符可以是未被所述客户端成功接收的媒体内容 的名称或其他标识符。也可以使用其他标识符(比如所述媒体会话服务 器的标识符和/或所述媒体内容的递送时间),其允许所述修复服务器 300识别出正确的媒体内容(有可能借助于到所述媒体服务器的请求)。 还可以替换地或附加地釆用更加详细的信息,比如所述媒体内容的特定 部分(其允许识别错误地接收的媒体源块)。
由所述数据提取器330提取的FEC数据的数量可以是预先定义的。如 果需要多于该预先定义的默认水平的FEC符号,则所述客户端必须相应 地明确通知所述服务器300,或者所述客户端需要发送针对另外的FEC 数据的请求。可替换地,该提取器330从所述客户端接收关于为了成功 解码所有媒体内容应当接收多少FEC符号的估计。该提取器330随后将
在所述FEC数据提取中使用该估计。
在一种优选的实现方式中,所述容器文件包括后会话修复指令,其定
所述客户端的数据分组中的所述编辑。在这种情况下,所述提取器在所 述提取和编辑处理中使用这些指令。
所述修复服务器300的各单元310到330可以被实现或者提供为软件、 硬件或其组合。所述单元310到340都可以-波实现在通信系统中的单一 网络节点内的修复服务器300中。可替换地,分布式实现方式也是可能 的,并且落在本发明的范围内。在这种情况下,所述修复服务器300的 不同单元310到340可以^皮设置在不同的网络节点中,j旦是即便如此也 仍将执行前面所描述的其预定操作。
本领叙技术人员应当理解,在不偏离本发明的范围的情况下可以对本 发明做出许多修改和改变,本发明的范围由所附权利要求书限定。
参考文献 ISO/IEC 15444-12:2005: "ISO base media file format"
14] International application WO 2005/039135
RFC 3695; Compact Forward Error Correction (FEC) Schemes' February 2004
问RFC 2616; Hypertext Transfer Protocol — HTTP/1.1, June 19997RFC 1864; The Content-MDS Header Field, October 1995 [8] RFC 3926; FLUTE - File Delivery over Unidirectional Transport, October 2009] RFC 3450; Asynchrononous Layered Coding (ALC) Protocol
Instantiation, December 2002 [101 RFC 3451; Layered Coding Transport (LCT) Building Block, December
200权利要求
1、一种生成媒体容器文件的方法,所述方法包括以下步骤 -把至少一个媒体源块组织在所述媒体容器文件中; -基于所述至少一个媒体源块计算前向纠错FEC冗余数据; -把所述FEC冗余数据组织在所述媒体容器文件内的至少一个FEC存储库中;以及 -在所述媒体容器文件中提供元数据,所述元数据提供所述至少一个媒体源块与所述至少一个FEC存储库之间的关联。
2、 根据权利要求l所述的方法,还包括以下步骤 -提供媒体源文件;以及-把所述媒体源文件划分成所述至少一个媒体源块。
3、 根据权利要求2所述的方法,其中,所述划分步骤包括至少部分 地基于被用来计算所述FEC冗余数据的FEC算法把所述媒体源文件划分 成所述至少 一 个媒体源块。
4、 根据权利要求l - 3中任一权利要求所述的方法,其中,所述计算 步骤包括以下步骤-基于将被用来计算所述FEC冗余数据的FEC算法把所述至少一个媒 体源块分割成多个媒体符号;-生成所述媒体源块分割的分割信息;以及-基于所述至少一个媒体源块和所述分割信息计算所述FEC冗余数据。
5、 根据权利要求4所述的方法,还包括以下步骤-在所述媒体容器文件中提供所述FEC算法的信息和所迷分割信息。
6、 根据权利要求l - 5中任一权利要求所述的方法,还包括以下步骤 -在所述媒体容器文件中提供属性表,该属性表包括所述至少一个媒体源块在所述媒体容器文件内的存储位置信息。
7、 根据权利要求1-6中任一权利要求所述的方法,还包括以下步骤 -生成编辑指令,所述编辑指令基于所述元数据定义对来自所述至少一个媒体源块的媒体数据和来自所述至少一个FEC存储库的FEC冗余数 据的编辑,以便形成数据分组的媒体流;以及 -把所述编辑指令组织在所述媒体容器文件中。
8、 根据权利要求7所述的方法,其中,所述生成编辑指令的步骤包括 以下步骤-生成第一编辑指令集,所述第一编辑指令集基于所述元数据定义对来自所述至少一个媒体源块的媒体数据和来自所述至少一个FEC存储库 的FEC冗余数据的编辑,以便形成具有第一FEC冗余开销水平的数据分组 的第一媒体流;以及-生成第二编辑指令集,所述第二编辑指令集基于所述元数据定义对 来自所述至少一个媒体源块的媒体数据和来自所述至少一个FEC存储库 的FEC冗余数据的编辑,以便形成具有笫二FEC冗余开销水平的数据分组 的第二媒体流。
9、 根据权利要求1-8中任一权利要求所述的方法,其中,所述FEC冗 余数据是将在媒体会话期间被使用的FEC冗余数据,并且所述方法还包 括以下步骤-基于所述至少 一个媒体源块计算可用在后会话修复程序中的后会 话FEC冗余数据;-把所述后会话FEC冗余数据组织在所述媒体容器文件内的至少 一 个 FEC存^渚库中;以及-在所述媒体容器文件中提供元数据,所述元数据允许基于与所述至 少一个媒体源块相关联的标识符来识别所述至少一个FEC存储库。
10、 一种媒体内容服务器,其包括-媒体块管理器,其被设置成把至少一个媒体源块组织在媒体容器文 件中;-前向纠错FEC编解码器,其被设置成基于所述至少一个媒体源块计 算FEC冗余数据;-FEC数据管理器,其被设置成连接到所述FEC编解码器以便把所述 FEC冗余数据组织在所述媒体容器文件内的至少一个FEC存储库中;以及-元数据管理器,其被设置成在所述媒体容器文件中提供元数据,所 述元数据提供所述至少一个媒体源块与所述至少一个FEC存储库之间的关联。
11、 根据权利要求10所述的媒体内容服务器,还包括 -媒体源,其祐:设置成提供媒体源文件;以及-文件划分器,其被设置成连接到所述媒体源以便把所述媒体源文件 划分成所述至少 一个媒体源块。
12、 根据权利要求ll所述的媒体内容服务器,其中,所述文件划分器被设置成至少部分地基于被所述FEC编解码器用来计算所述FEC冗余数 据的FEC算法把所述媒体源文件划分成所述至少 一个J 某体源块。
13、 根据权利要求10-12中任一权利要求所述的媒体内容服务器,还 包括.--块分割器,其用于根据将被所述FEC编解码器使用的FEC算法把所述 至少 一个媒体源块分割成多个媒体符号并且用于生成所述媒体源块分 割的分割信息,其中,所述FEC编解码器被设置成基于所述至少一个媒 体源块和所述分割信息计算FEC冗余数据。
14、 根据权利要求13所述的媒体内容服务器,还包括-信息管理器,其被设置成在所述媒体容器文件中提供由所述FEC编 解码器使用的所述FEC算法的信息和所述分割信息。
15、 根据权利要求10-14中任一权利要求所述的媒体内容服务器,还 包括-信息管理器,其被设置成在所述媒体容器文件中提供属性表,该属 性表包括所述至少一个媒体源块在所述媒体容器文件内的存储位置信息。
16、 根据权利要求IO-15中任一权利要求所述的媒体内容服务器,还 包括.--指令管理器,其被设置成i)生成编辑指令,所述编辑指令基于 由所述元数据管理器提供的所述元数据定义对来自所述至少 一个媒体 源块的媒体数据和来自所述至少一个FEC存储库的FEC冗余数据的编辑, 以便形成数据分组的媒体流;以及ii)把所述编辑指令组织在所述媒体 容器文件中。
17、 根据权利要求16所述的媒体内容服务器,其中,所述指令管理器 被设置成i)生成第一编辑指令集,所述第一编辑指令集基于由所述 元数据管理器提供的所述元数据定义对来自所述至少一个媒体源块的 媒体数据和来自所述至少一个FEC存储库的FEC冗余数据的编辑,以便形 成具有第一FEC冗余开销水平的数据分组的第一媒体流;以及ii)生成 第二编辑指令集,所述第二编辑指令集基于由所述元数据管理器提供的 所述元数据定义对来自所述至少一个媒体源块的媒体数据和来自所述 至少一个FEC存储库的FEC冗余数据的编辑,以便形成具有第二FEC冗余 开销水平的数据分组的第二媒体流。
18、 根据权利要求10-17中任一权利要求所述的媒体内容服务器,其 中,由FEC编解码器生成的所述FEC冗余数据是将在力某体会话期间祐:使用 的FEC冗余数据,所述FEC编解码器被设置成基于所述至少一个媒体源块 计算可用在后会话修复程序中的后会话FEC冗余数据,所述FEC数据管理 器被设置成把由所述FEC编解码器计算的所述后会话FEC冗余数据组织 在所述媒体容器文件内的至少一个FEC存储库中,并且所述元数据管理 器被设置成在所述媒体容器文件中提供元数据,所述元数据允许基于与 所述至少 一 个媒体源块相关联的标识符来识别所述至少 一 个FEC存储 库。
19、 一种媒体容器文件,其包括 -至少一个々某体源块;—至少一个前向纠错FEC存储库,其包括基于所述至少一个媒体源块 生成的FEC冗余数据;以及-元数据,其提供所述至少一个媒体源块与所述FEC存储库之间的关联。
20、 根据权利要求19所述的媒体容器文件,还包括-源块分割的分割信息,其被用于计算所述FEC冗余数据;以及 -可选的FEC算法的信息,其被用于计算所述FEC冗余数据。
21、 根据权利要求19或20所述的媒体容器文件,还包括-属性表,其包括所述至少一个媒体源块在所述媒体容器文件内的存 储位置信息。
22、 根据权利要求19-21中任一权利要求所述的媒体容器文件,还包 括-编辑指令,其基于所述元数据定义对来自所述至少 一个媒体源块的 媒体数据和来自所述至少一个FEC存储库的FEC冗余数据的编辑,以便形成数据分组的媒体流。
23、 根据权利要求19 - 22中任一权利要求所述的媒体容器文件,其中,媒体容器文件还包括 '' 、-至少一个FEC存储库,其包括可用在后会话修复程序中的后会话FEC 冗余数据;以及 -元数据,其允许基于与所述至少一个媒体源块相关联的标识符来识别所述至少 一个FEC存储库。
24、 一种媒体会话管理方法,其包括以下步骤 -提供媒体容器文件,所述媒体容器文件包括至少一个媒体源块;至少一个前向纠错FEC存储库,其包括基于所述至少一个媒体源块生成 的FEC冗余数据;以及元数据,其提供所述至少一个々某体源块与所述FEC 存储库之间的关联;-通过基于所述元数据提取来自所述至少一个媒体源块的媒体数据 和来自所述至少一个FEC存储库的FEC冗余数据来编辑数据分组;以及 _在媒体会话期间把所述数据分组传送到至少一个用户终端。
25、 根据权利要求24所述的方法,其中,所述媒体容器文件还包括编 辑指令,所述编辑指令定义对来自所述至少一个媒体源块的媒体数据和 来自所述至少 一个FEC存储库的FEC冗余数据的编辑,以便形成数据分组 的媒体流,并且所述编辑步骤包括通过基于所述元数据和所述编辑指 令提取来自所述至少一个媒体源块的媒体数据和来自所述至少一个FEC 存储库的FEC冗余数据来编辑所述数据分组。
26、 根据权利要求25所述的方法,其中,所述编辑指令包括多个编辑 指令集,其中每一个编辑指令集与已定义的FEC冗余开销相关联,所述 方法包括以下步骤-对于所述媒体会话估计FEC冗余开销容量;以及-基于所述估计的FEC冗余开销容量从所述多个编辑指令集当中选择 编辑指令集,其中,所述编辑步骤包括通过基于所述元数据和所述选 择的编辑指令集提取来自所述至少 一 个媒体源块的媒体数据和来自所 述至少一个FEC存储库的FEC冗余数据来编辑所述数据分组。
27、 根据权利要求24 - 26中任一权利要求所述的方法,其中,所述媒体容器文件还包括属性表,所述属性表包括所述至少一个媒体源块在所 述媒体容器文件内的存储信息,并且所述编辑步骤包括通过基于所述 元数据和所述属性表提取来自所述至少 一 个媒体源块的媒体数据和来 自所述至少一个FEC存储库的FEC冗余数据来编辑所述数据分组。
28、 根据权利要求24 - 27中任一权利要求所述的方法,还包括以下步 骤-接收源自所述至少一个用户终端当中的某一用户终端的针对后会 话修复程序的请求;-基于所述请求从所述至少 一个FEC存储库中提取FEC冗余数据;以及 -把所述提取的FEC冗余数据传送到所述用户终端。
29、 根据权利要求28所述的方法,其中,所述媒体容器文件还包括可 用于在后会话修复会话期间识别FEC冗余数据的后会话修复指令,并且 所述提取步骤包括基于所述请求和所述后会话修复指令从所述至少一 个FEC存储库中提取FEC冗余数据。
30、 一种媒体会话服务器,包括-媒体文件提供器,其用于提供媒体容器文件,所述媒体容器文件包 括至少一个媒体源块;至少一个前向纠错FEC存^I库,其包括基于所 述至少一个媒体源块生成的FEC冗余数据;以及元数据,其提供所述至 少一个媒体源块与所述FEC存储库之间的关联;-数据分组编辑器,其被设置成连接到所述媒体文件提供器,以便通 过基于所述元数据提取来自所述至少一个媒体源块的媒体数据和来自 所述至少一个FEC存储库的FEC冗余数据来编辑数据分组;以及-传送器,其被设置成连接到所述数据分组编辑器,以便在媒体会话 期间把由所述数据分组编辑器编辑的所述数据分组传送到至少 一个用 户终端。
31、 根据权利要求30所述的媒体服务器,其中,所述媒体容器文件还 包括编辑指令,所述编辑指令定义对来自所述至少一个媒体源块的媒体 数据和来自所述至少 一个FEC存储库的FEC冗余数据的编辑,以便形成数 据分组的媒体流,并且所述数据分组编辑器被设置成通过基于所述元数 据和所述编辑指令提取来自所述至少 一 个媒体源块的媒体数据和来自 所述至少 一个FEC存储库的FEC冗余数据来编辑所述数据分组。
32、 根据权利要求31所述的媒体服务器,其中,所述编辑指令包括多 个编辑指令集,其中每一个编辑指令集与已定义的FEC冗余开销相关联, 所述媒体会话服务器还包括-FEC容量估计器,其^L设置成对于所述媒体会话估计FEC冗余开销容 量;以及-集合选择器,其被设置成连接到所述FEC容量估计器,以便基于由 所述FEC容量估计器估计的所述FEC冗余开销容量从所述多个编辑指令 集当中选择编辑指令集,其中,所述数据分组编辑器被设置成通过基于 所述元数据和由所述集合选择器选择的所述编辑指令集提取来自所述至少 一个媒体源块的媒体数据和来自所述至少 一个FEC存储库的FEC冗余数据来编辑所述数据分组。
33、 根据权利要求30 - 32中任一权利要求所述的媒体服务器,其中, 所述媒体容器文件还包括属性表,所述属性表包括所述至少一个々某体源 块在所述媒体容器文件内的存储信息,并且所述数据分组编辑器^皮i丈置 成通过基于所述元数据和所述属性表提取来自所述至少一个媒体源块 的媒体数据和来自所述至少一个FEC存储库的FEC冗余数据来编辑所述 数据分组。
34、 根据权利要求30 - 33中任一权利要求所述的媒体服务器,还包括 -接收器,其被设置成接收源自所述至少一个用户终端当中的某一用户终端的针对后会话修复程序的请求;-FEC管理器,其被设置成基于由所述接收器接收到的所述请求从所 述至少一个FEC存储库中提取FEC冗余数据,其中,所述传送器被设置成连接到所述FEC管理器,以便把由所述FEC 管理器提取的所述FEC冗余数据传送到所述用户终端。
35、 根据权利要求34所述的媒体服务器,其中,所述媒体容器文件还 包括可用于在后会话修复会话期间识别FEC冗余数据的后会话修复指 令,并且所述FEC管理器被设置成基于所述请求和所述后会话修复指令 从所述至少 一个FEC存储库中提取FEC冗余数据。
36、 一种后会话修复方法,其包括以下步骤-从先前接收了数据分组的用户终端接收针对前向纠错FEC冗余数据 的请求,'所迷数据分组包括从至少一个媒体源块中提取的媒体数据,所 述请求包括与所述至少 一个媒体源块相关联的标识符;-基于所述请求提供媒体容器文件,所述媒体容器文件包括i)所 述至少一个媒体源块;ii )至少一个FEC存储库,其包括基于所述至少 一个媒体源块生成的FEC冗余数据;以及iii)元数据,其允许基于与所 述至少 一个媒体源块相关联的标识符来识别所述至少 一个FEC存^f渚库;-基于所述接收的标识符从所述至少一个FEC存储库中提取FEC冗余 数据;以及-把所述提取的FEC冗余数据传送到所述用户终端。
37、 根据权利要求36所述的方法,其中,所述媒体容器文件还包括后 会话修复指令,所述后会话修复指令定义对来自所述至少一个FEC存储 库的FEC冗余数据的编辑,以便形成FEC冗余数据的至少一个数据分组, 并且所述提取步骤包括基于所述接收到的标识符和所述后会话修复指 令从所述至少 一个FEC存储库中提取FEC冗余数据。
38、 一种修复服务器,其包括-接收器,其用于从先前接收了数据分组的用户终端接收针对前向纠 错FEC冗余数据的请求,所述数据分组包括从至少一个媒体源块中提取 的媒体数据,所述请求包括与所述至少一个媒体源块相关联的标识符;-容器文件提供器,其被设置成连接到所述接收器,以便基于由所述 接收器接收到的所述请求提供媒体容器文件,所述々某体容器文件包^舌 i )所述至少一个媒体源块;ii )至少一个FEC存储库,其包括基于所述 至少一个媒体源块生成的FEC冗余数据;以及iii)元数据,其允许基于 与所述至少一个媒体源块相关联的标识符来识别所述至少一个FEC存储库;-FEC数据提取器,其被设置成连接到所述容器文件提供器,以^f更基 于所述接收到的标识符从所述至少 一个FEC存储库中提取FEC冗余数据; 以及-传送器,其被设置成连接到所述FEC数据提取器,以便把所述提取 出的FEC冗余数据传送到所述用户终端。
39、 根据权利要求38所述的修复服务器,其中,所述媒体容器文件还 包括后会话修复指令,所述后会话修复指令定义对来自所述至少一个 FEC存储库的FEC冗余数据的编辑,以便形成FEC冗余数据的至少 一个数 据分组,并且所述FEC数据提取器被设置成基于所述接收到的标识符和 所述后会话修复指令从所述至少一个FEC存储库中提取FEC冗余数据。
全文摘要
本发明教导一种媒体容器文件(1),其包括被组织到媒体源块(20;22;24)中的媒体数据。对于所述不同的源块(20;22;24)预先计算前向纠错(FEC)冗余数据,并且将其组织到所述容器文件(1)中以作为不同的FEC存储库(30;32;34)。该容器文件(1)还包括元数据(40;45),其提供所述媒体源块(20;22;24)与对应的FEC存储库(30;32;34)之间的关联。该容器文件(1)可以由媒体服务器(200)在媒体会话中采用来在无需大量数据处理和FEC计算的情况下编辑将被传送到发出请求的客户端(400;410;420)的媒体数据分组。
文档编号H04N7/66GK101366287SQ200780001943
公开日2009年2月11日 申请日期2007年1月4日 优先权日2006年1月5日
发明者M·韦斯特伦德, P·弗罗德, T·洛马 申请人:艾利森电话股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1