mpd文件中的segmentrange是什么意思?

时间:2014-12-16 09:19:45

标签: video-streaming mpeg-dash adaptive-bitrate

我从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>
  ...

SegmentBase是什么意思? indexRange的值是什么意思?

初始化结束范围始终小于indexRange起始值。即,在上面的2755-1 = 2754(初始化的值)

任何人都可以帮我理解这些数字的重要性吗?

编辑1:

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

例如: <Representation bandwidth="4190760" codecs="avc1.640028" height="1080" id="1" mimeType="video/mp4" width="1920"> <BaseURL>car-20120827-89.mp4</BaseURL> <SegmentBase indexRange="674-1149"> <Initialization range="0-673" /> </SegmentBase> </Representation>

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

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

如果是这样,文件大约是90mb。如何通过字节范围获得其他段? SegmentBase仅提到indexRange 674-1149。

顺便说一下,我正在使用这个播放器来理解segmentindex。

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

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


由于

1 个答案:

答案 0 :(得分:3)

DASH specification (ISO/IEC 23009-1)中描述了此文件的确切格式。 SegmentBase元素在第5.3.9.2章中描述。

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

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

  

每个“段索引”框记录了(子)段的划分方式   一个或多个子分段(可能会进一步细分   使用细分索引框。)

     

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

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