线性提示视频流的制作方法

文档序号:7734967阅读:394来源:国知局
专利名称:线性提示视频流的制作方法
技术领域
本公开涉及视频流,尤其涉及提供线性提示信息以改进缓存性能的文件格式。
背景技术
在任何媒体数据可以通过实时传输协议(RTP)被传送之前,这些数据必须依照某些规则被打包。例如,RFC 2250描述了用于MPEG-I和MPEG-2数据的规则。为了避免文件分析的重复工作,这些数据可被仅打包一次,并且被存储以供将来使用。为了这个目的 QuickTime文件格式使用“提示”轨道。QuickTime文件格式的构造是为了本地重放,而在流应用中其未能被很好地执行。 QuickTime文件格式是非线性的,因此收集数据以建立单个RTP包需要每个文件内的多个查询操作。在可以读取实际的媒体数据之前,元数据内的时间到样本(time-to-sample) 表、样本到块(sample-to-chunk)表、块到偏移量(chunk-to-offset)表、样本到大小 (sample-to-size)表以及提示样本偏移量(hint sample offset)表都必须被查阅。这些操作导致了系统缓存的使用效率非常低。例如,随着缓存文件的增加,必须不断地更新元数据内的各种表。该元数据结构需要被保持在存储器中,并且直到每个缓存会话结束才能被保存在磁盘上。这种元数据的大小通常是媒体数据的1_2%,因此缓存多个大的文件可以很快地导致RAM本身成为瓶颈。QuickTime文件格式的复杂性也阻止了为高性能流建立轻量级核心模块。需要的是一种对于流和缓存应用都可以用作普通容器的文件格式。

发明内容
容易分析到,普通媒体流文件格式适合于高性能RTP流和缓存。媒体文件的提示信息和元数据被包括,从而改进了流请求的实时性能。提示文件具有文件标题部分,文件标题部分具有文件标题对象、媒体数据文件描述符和索引描述符。提示索引部分包括第一级提示索引,第一级提示索引具有与时间标记键值对应的线性组织结构。第二级提示索引具有与时间标记键值对应的非连续组织结构。在第二级提示索引中布置专用标志以向流引擎指示出对于下一个时间标记键值,必须查阅第一级提示索引。该专用标志被放置在与其条目相关联的一连串时间标记键值的最后。本发明的上述概述并不打算代表每个公开的实施例。在随后的附图和详细描述中提供了其它方面以及具体实施例。


图1是流格式文件的结构图。图2是例如可用于图1的流格式文件中的、表示单个密集提示索引如何提供指向带有时间标记0T-11T的连续媒体数据文件的指针的数据图。图3是例如可用于图1的流格式文件中的、表示带有一些不用位置的第一级密集提示索引如何提供指向第二级密集索引的指针的数据图,其中第二级密集索引进而提供指向带有时间标记0T-11T的连续媒体数据文件的指针。图4是例如可用于图1的流格式文件中的、表示第一级线性提示索引如何提供指向带有专用标志($)的第二级非连续提示索引的指针的数据图,其中带有专用标志($)的第二级非连续提示索引进而提供指向带有时间标记0T-11T的非连续媒体数据文件的指针。
具体实施例方式图1描述了用于存储媒体文件的提示信息和元数据的流格式文件100,其是可扩展且灵活的文件。该流格式文件帮助服务器以较少的实时性能影响来处理流请求。流格式文件100包括文件标题部分102、提示索引部分104以及数据部分106。文件标题部分102 包括文件标题对象108、媒体数据文件描述符110和索引描述符112。索引部分包括第一级提示索引114和第二级提示索引116。数据部分106携带实际的媒体数据,并且作为代替, 可以被完全包含于单独的文件中。流格式文件100支持带有多级稀疏索引的提示信息的有效查找,该多级稀疏索引是独立于任何一种特定数字媒体容器格式或者传输格式的。对于存储在流格式文件中的数据,支持文件内的提示。对于存储在与线性提示格式(LHF)文件分开的文件中的数据,提供文件外提示查找。多级线性索引(MLI)可以帮助流引擎(SE)有效地定位这些数据。典型的提示处理通过该提示信息来工作以获得同一文件或者单独的媒体数据文件中所期望的数据块的偏移量。这就使流引擎以更多有效的方式取出即将被发出的数据, 而不用首先必须知道该流媒体的容器格式或有效载荷。密集索引是组织提示信息的常规方式。在密集索引中,数据块的序号、调整的RTP 时间戳或者正常播放时间(NPT)被用作键。图2举例说明了密集索引的例子。密集提示索引202提供指向连续媒体文件204 的指针。该包的调整的RTP时间戳被用作索引键。例如,在媒体包中的序列{0T,1T,2T,3T, 3Τ,5Τ,7Τ,8Τ,8Τ,10Τ,11Τ}具有值为3003的标记时间(T)。在单独的文件中顺序地存储该媒体数据,并且连续地打包带有相同调整的RTP时间戳的媒体数据块(RTP包)。通常,并不是连续地存储带有调整的RTP时间戳的媒体数据。但是,有了密集索引中用于每个包的偏移量指针,可以定位每块媒体数据。当在请求范围(0Τ, )内的播放请求到达时,流引擎检查密集提示索引202,对键“0Τ”进行定位,并且跟随偏移量指针来定位连续媒体数据文件204中的媒体数据块的起点,同时从那儿开始流动一个数据块。当具有不是以OT开始的请求范围的请求到达时,例如假象播放模式,(5Τ, ),流引擎必须穿过密集提示索引来定位键值=5的索引,然后跟随偏移量指针。如果使用二进制搜索,则该密集提示索引的扫描大约为0 (log (η))。如果数据元素数目巨大,则使用这个方法会对性能造成不利影响。如图3中所述,该缺点例如通过多级线性索引来克服。在第一级中,使用线性表来索引调整的RTP时间戳。例如,这种索引计算为,索引=(请求的正常播放时间)/标记
其中,标记=1/采样率。例如,对于90kHz采样率,标记=3003。在一个实施例中,假定所有的调整的RTP时间戳是标记值的倍数。如果一些调整的RTP时间戳不是标记值的整数倍,则在线性提示处理期间,该标记值被向上进位为标记值最接近的倍数。由此引入了时间上的非传播进位误差,但是这无关紧要。可能遇到一种情况,其中在第一级线性提示索引302中将存在不使用的位置,例如,如图3所示例的4T,6T和9T。第一级索引302中的每个条目仅需要少许字节。因此, 该调整的RTP时间戳应该继续保持线性增加,这是因为浪费在空位置上的空间是可以忽略的。在如前所述的相同例子中,当该请求是(5Τ, )时,流引擎计算该5Τ条目的偏移量,并且跟随它的偏移量指针来到第二级索引304。该操作可以在0(1)时间常量内完成,并且索引304提供在连续媒体数据文件306中所期望的媒体数据块的实际偏移量的起点。对于预先定位的媒体文件,该媒体文件在其线性提示文件104生成时被顺序地放置于文件中。在缓存代理情形中,将电影的后面部分存储在媒体数据文件106的前面附近。该缓存代理情形可以向原始服务器发起具有如下请求范围的请求,所述请求范围不从电影的开头处开始。例如,在时长60分钟的电影中,可能存在三个时间段的请求,例如,0-20 分钟
,40-60 分钟[40m, 60m]以及 20-40 分钟[20m, 40m]。当缓存代理往媒体数据文件中写入数据时,产生的媒体数据文件将是非连续的。第一个二十分钟
请求的数据将去往文件的第一部分,后面是[40m,60m]请求的数据,并且该文件的最后部分是[20m,40m]请求的。可以以上述顺序将第二级索引的三个片段存储在线性提示文件中。需要多级线性索引的扩展以准许非连续媒体数据文件索引。图4举例说明了以非连续方式组织起来的、使得例如7T IlT的数据在3T 5T的数据之前到来的媒体数据文件 402。可以将非连续媒体数据文件402分成几个片段。在每个片段内,数据可以按顺序地存在。该数据文件包括三个片段404,406以及408,即
,[7Τ,11Τ]和[3Τ,5Τ]。 由美元标记符号($)表示的扩展告诉流引擎何时希望跳跃,以及何时回到第一级线性提示索引410以获得用于下一时间戳的索引。用第二级非连续提示索引412中的专用标志或者标记($)来实现对何时希望跳跃或者何时回到第一级提示索引的指示。在一个实施例中,当播放请求
到达时,流引擎检查第一级线性提示索引 410和WT],以获得指向第二级非连续提示索引412的指针。该流引擎跟随该指针来定位在第二级非连续提示索引412中的相应的OT条目,并且获得指向第一媒体数据404的偏移量地址指针,第一媒体数据404具有在非连续媒体文件402中的时间标记0Τ。然后,该流引擎可以在第二级非连续提示索引412的条目中重复,以跟随偏移量地址指针来到媒体文件 404。即,直到命中2Τ中的、类似于文件结束(EOF)标记的专用标志($)。该专用标志指示流引擎应该回到第一级提示索引410以定位用于下一调整的RTP时间戳的第二级索引偏移量。在图4所举例说明的例子中,流引擎回到第一级410并且获得3T在第二级非连续提示索引412中的偏移量。该偏移量指向非连续媒体数据文件402的另一部分408。该流引擎将继续取得在第二级非连续提示索引412中的下一个条目,直到遇到5T中的专用标志($)。多个包可以共享相同的实时协议(RTP)时间戳。该接收器时间戳(RTS)没有单调地增加。在一个实施例中,更好地是使用DTS、包发送时间或者包编号作为到每个包的索引, 所述DTS、包发送时间或者包编号来自RTP扩展标题或者来自承诺访问速率(CAR)算法的输出。可以将媒体文件/缓存文件中的包以解码/编码的顺序进行存储以加速打包。RTP播放请求中的时间范围是表示时间戳(PTS),但是当定位要发送的包的范围时,其可以被当做解码时间戳(DTS)。为了精确,包的元信息中的实际PTS还与所请求的PTS 范围进行比较。多个包可以共享相同的RTS,只要用该RTS来定位第一个包即可。在缓存文件中, 以这种方式存储数据,但是不能对其它媒体文件格式(如.mov和.mp4)使用相同的假定。可以将附加字段包含于文件格式中以传达在提示索引中使用哪种类型的键(例如,RTS, PTS, DTS或者包编号),以便具有更多的灵活性。如果将密集提示索引文件与原始媒体数据分开并且将单个的大索引文件用于存储大数组,则使用密集提示索引的复杂性可以是0(1)。以T为单位的播放时间被直接用作到数组的索引。基本上,索引[t]是指向数据文件中的包的指针。在一个实施例中,为在提示/索引文件中的所有时间戳保留空间。在相应的偏移量被写入之前,文件系统实际上不会分配磁盘空间。再次参考图1,流格式文件100可以定义多个流或者轨道,例如与多个音频流/轨道相关联的一个视频流/轨道。可以进一步将一个轨道/流分割成多个剪辑,其中每个剪辑都包含一段流数据。每个剪辑都具有它自己的指向实际媒体数据的第一级提示索引114 和第二级提示索引116。在一个实施例中,如同表-I所详细描述的,流格式文件100从强制的文件标题对象108开始。可以通过扩展偏移量和标题长度利用文件标题对象来定位标题扩展部分。表-I
权利要求
1.一种流文件,包括文件标题部分,所述文件标题部分具有文件标题对象、媒体数据文件描述符和索引描述符;提示索引部分,所述提示索引部分具有第一级提示索引和第二级提示索引;专用标志,所述专用标志被布置于所述第二级提示索引中,用于向流引擎指示出对于下一时间标记键值,必须查阅所述第一级提示索引;以及数据部分;其中,为非连续媒体数据文件提供提示。
2.如权利要求1的流文件,还包括包含该数据部分的单独的文件。
3.如权利要求1的流文件,其中,所述第一级提示索引具有与时间标记键值对应的线性组织结构。
4.如权利要求1的流文件,其中,所述第二级提示索引具有与时间标记键值对应的非连续组织结构。
5.如权利要求1的流文件,其中,所述第二级提示索引在与其条目相关联的一连串时间标记键值的最后包括所述专用标志。
6.如权利要求1的流文件,其中,所述数据部分接受在连串的时间标记键值中相关联的媒体数据块来作为其条目。
7.如权利要求1的流文件,其中,所述数据部分是这样的它接受在连串的时间标记键值中相关联的媒体数据块来作为其条目,并且所述第二级提示索引在与其条目相关联的一连串时间标记键值的最后包括所述专用标志。
8.如权利要求1的流文件,还包括线性组织结构,与所述第一级提示索引中包含的时间标记键值相对应;非连续组织结构,与所述第二级提示索引中包含的时间标记键值相对应;其中,所述第二级提示索引在与其条目相关联的一连串时间标记键值的最后包括所述专用标志;以及其中,所述数据部分接受在连串的时间标记键值中相关联的媒体数据块来作为其条目。
9.如权利要求1的流文件,其中,所述媒体数据文件描述符携带与所述提示索引部分将指向的连续或非连续的数据文件相关的信息以使得可以通过单个提示索引来使用多个数据文件,并且所述媒体数据文件描述符提供对存储于不同媒体数据文件中的一个电影中的多个剪辑的处理。
10.一种流文件,包括文件标题部分,所述文件标题部分具有文件标题对象、媒体数据文件描述符和索引描述符,其中所述媒体数据文件描述符携带与连续或非连续的数据文件相关的信息以使得可以通过单个提示索引来使用多个数据文件,并且所述媒体数据文件描述符提供对存储于不同媒体数据文件中的一个电影中的多个剪辑做准备的处理;提示索引部分,所述提示索引部分具有第一级提示索引和第二级提示索引,其中所述第一级提示索引具有与时间标记键值对应的线性组织结构,并且其中,所述第二级提示索引具有与时间标记键值对应的非连续组织结构;专用标志,所述专用标志被布置于所述第二级提示索引中,以用于向流引擎指示出对于下一时间标记键值,必须查阅所述第一级提示索引,并且所述专用标志被放置在与其条目相关联的一连串时间标记键值的最后;以及数据部分,所述数据部分可以被布置在单独的文件中,并且是这样的它接受在连串的时间标记键值中相关联的媒体数据块来作为其条目,其中,为非连续媒体数据文件提供提示。
11.一种用于流媒体数据文件中的线性提示的方法,包括配置带有指向第二级非连续提示索引的指针的第一级线性提示索引;给所述第二级非连续提示索引提供指向非连续媒体数据文件的指针;以及通过访问所述第一级线性提示索引以获得指向所述第二级非连续提示索引的指针,来搜索在所述非连续媒体数据文件中的媒体数据块,其中所述指向第二级非连续提示索引的指针进而提供了指向在所述非连续媒体数据文件中的特定媒体数据块的最终指针。
12.如权利要求11的方法,还包括对于下一访问,不优先查阅所述第一级线性提示索引;以及通过仅访问在所述第二级非连续提示索引中的下一条目以取得指向在所述非连续媒体数据文件中的下一媒体数据块的相应指针,来获得在所述非连续媒体数据文件中的所述下一媒体数据块。
13.如权利要求11的方法,还包括用特殊字符按所述媒体数据块在所述非连续媒体数据文件中的次序来标记间断,其中所述特殊字符被放置在指向在所述第二级非连续提示索引中的最后一个连续媒体数据块的相应指针中。
14.如权利要求13的方法,还包括如果在最后的访问中没有获得所述特殊字符,则通过仅访问在所述第二级非连续提示索引中的下一条目以取得指向在所述非连续媒体数据文件中的下一媒体数据块的相应指针,来获得在所述非连续媒体数据文件中的所述下一媒体数据块,并且不优先查阅所述第一级线性提示索引;否则,返回以通过访问所述第一级线性提示索引以获得指向所述第二级非连续提示索引的指针来搜索在所述非连续媒体数据文件中的媒体数据块,其中所述指向第二级非连续提示索引的指针进而提供了指向在所述非连续媒体数据文件中的特定媒体数据块的最终指针。
15.如权利要求11的方法,还包括将所述第一级线性提示索引和所述第二级非连续提示索引共同打包在具有媒体文件描述符的单个文件中;以及关联至少一个单独的媒体数据文件。
16.如权利要求11的方法,还包括将所述第一级线性提示索引和所述第二级非连续提示索引共同打包在具有媒体文件描述符的单个文件,以及至少一个非连续媒体数据文件中。
17.如权利要求11的方法,还包括组织索引部分,使得所述第一级线性提示索引具有与时间标记键值对应的线性组织结构。
18.如权利要求11的方法,还包括组织索引部分,使得所述第二级提示索引具有与时间标记键值对应的非连续组织结构。
19.如权利要求11的方法,还包括组织索引部分,使得所述第二级提示索引在与其条目相关联的一连串时间标记键值的最后包括所述专用标志。
20.如权利要求11的方法,还包括组织数据部分,使得它接受在连串的时间标记键值中相关联的媒体数据块来作为其条
全文摘要
用文件标题部分、提示索引部分和数据部分来构建流文件。该文件标题部分包括文件标题对象、媒体数据文件描述符和索引描述符。提示索引部分包括第一级提示索引,所述第一级提示索引具有与时间标记键值对应的线性组织结构;及第二级提示索引,所述第二级提示索引具有与这种时间标记键值对应的非连续组织结构。在第二级提示索引中的专用标志指示出,对于下一时间标记键值,必须查阅该第一级提示索引。这种标志被放置在与其条目相关联的一连串时间标记键值的最后。数据部分可以放在单独的文件中,并且它接受在与连串的时间标记键值中相关联的媒体数据块来作为其条目。由此,为非连续媒体数据文件提供提示。
文档编号H04N21/235GK102204266SQ200980124139
公开日2011年9月28日 申请日期2009年6月25日 优先权日2008年6月27日
发明者乔纳森·里蒙, 何凯川, 安尼尔·托马斯, 徐曦, 朱江, 迪帕克·普诺兰·库罗斯 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1