当前位置: 首页 > 知识库问答 >
问题:

mpd文件中的分段范围是什么意思?

霍建柏
2023-03-14

我从http://dash-mse-test.appspot.com/media.html得到了一个示例mpd文件,下面是一个包含单个表示的片段。

   ...
   <Representation bandwidth="4190760" codecs="avc1.640028" height="1080" id="1" mimeType="video/mp4" width="1920">
    <BaseURL>car_cenc-20120827-89.mp4</BaseURL>
    <SegmentBase indexRange="2755-3230">
      <Initialization range="0-2754" />
    </SegmentBase>
  </Representation>
  ...

这是什么意思?indexRange的值意味着什么?

初始化结束范围始终比indexRange开始值小一个。即,在上述2755-1=2754(初始化值)

有人能帮我理解这些数字的意义吗?

编辑1:

根据下面@sander的回答,我知道分段索引是字节范围。但是,我仍然对如何使用这个值感到困惑。

例如:<代码>

此表示中只有一个片段包含单个文件中的整个视频剪辑。(文件大小约为90mb)。

初始化范围提到0-673。所以从文件的第0个字节到文件的第673个字节包含视频的初始化段。我的理解对吗?

如果是这样,文件大小约为90mb。如何按字节范围获取其他段?SegmentBase只提到indexRange 674-1149。

顺便说一句,我用这个播放器来理解分段索引。

http://dash-mse-test.appspot.com/dash-player.html?url=http://yt-dash-mse-test.commondatastorage.googleapis.com/media/car-20120827-manifest.mpd

查看使用Chrome的inspect工具发送的头请求,有很多请求发生在小字节范围内,但我不确定如何从MPD获取这些字节范围。

谢谢

共有1个答案

益清野
2023-03-14

DASH规范(ISO/IEC 23009-1)中描述了该文件的确切格式。第5.3.9.2章介绍了分段库元素。

我对这个片段的解释是,这个表示由一个mp4文件组成,该文件作为一个片段传递给播放器。indexRange是该段中表示段索引的字节范围(mp4文件中的sidx框),而Initialization元素表示包含任何相关初始化数据的字节范围(mp4文件中的各个头框)。正如您所注意到的,这些范围整齐地覆盖了段的开头,其余部分可能充满了媒体样本数据。字节范围通知播放机应该从哪里加载相关数据。

编辑:sidx框包含引用此mp4文件子段的字节范围。引用ISO/IEC 14496-12:2012(E):

每个段索引框记录了(子)段如何划分为一个或多个子段(这些子段本身可以使用段索引框进一步细分)。

子段定义为包含(子)段的时间间隔,对应于包含(子)段的单个字节范围。所有子段的持续时间总和为包含(子)段的持续时间。

根据sidx框的内容,播放器可以确定需要下载mp4文件的哪些部分才能播放特定的视频片段。

 类似资料:
  • 在DASH(HTTP上的动态自适应流)的上下文中,MPD文件到底是什么? 它的格式是正式指定的吗?如果有,在哪里可以买到? 它在查看加密媒体的环境中扮演什么角色? (最好以一种比正式规范更容易访问且不那么简洁的方式,提供一个示例文件,其中包含关于文件的各个字段是什么以及它们的作用的描述性注释,将不胜感激)。

  • 我有3个经纪人Kafka设置。我正在更新“min.insync.replicas”属性,我查看了文档, min.insync.replicas 更新模式:群集范围 集群范围在这里指定什么-它是否可以,如果我更新属性在一个代理或它需要更新在所有的代理设置文件(server.properties) 如何更新集群范围属性使用kafka-config- 所有可在集群级别配置的配置也可以在每个代理级别配置(

  • 问题内容: 我试图了解在多个JavaConfig上下文中放置注释的正确位置在哪里? 考虑以下情形:我在JPAConfig.java和AppConfig.java中具有服务bean集的JPA配置。然后,在RootConfig.java中编写整个应用程序配置。 我在JPAConfig.java中定义事务管理器,并启用对JPA存储库的扫描- 当这些暴露事务行为时,我将其放到JPAConfig上,并且它可

  • 问题内容: javascript中变量的范围是什么?它们在函数内部和外部的作用域是否相同?还是有关系吗?另外,如果变量是全局定义的,则将变量存储在哪里? 问题答案: TLDR JavaScript具有词汇(也称为静态)作用域和闭包。这意味着您可以通过查看源代码来确定标识符的范围。 四个范围是: 全球-一切可见 功能-在功能(及其子功能和块)中可见 块-在块(及其子块)中可见 模块-在模块内可见 在

  • 我刚开始编码。我想对同一个变量使用两次switch语句,我被告知要这样做,变量必须是'inscope'。 作为一个初学者,我不知道那是什么意思。那么在范围内意味着什么呢?而且,如果一个变量不在作用域中,我如何使它在作用域中?

  • 在我Linux的主文件夹中,我有几个配置文件,文件扩展名为“rc”: 这些名字中的“rc”是什么意思?