SegmentTemplate 中的 media 属性 - AWS Elemental MediaPackage

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

SegmentTemplate 中的 media 属性

SegmentTemplate 属性中的 media 属性定义播放设备在其中发送段请求的 URL。默认情况下,此 URL 使用 $Number$ 变量来确定所请求的特定段。当播放设备请求段时,它将该变量替换为段的数字标识符。对于表示形式中的第一个段,将此标识符替换为 SegmentTemplate 属性中 startNumber 的值。每个额外的段增一。

当段改由指示何时可以播放的时间戳来标识时,某些播放器可以更好地在段之间导航。为了支持此用例,MediaPackage 使用 $Time$ 变量,而不是 media 属性 URL 中的 $Number$。当播放设备请求段时,它将该变量替换为段可供使用的开始时间。此开始时间在 SegmentTimeline 对象中的段 (S) 属性的 t 值中确定。有关示例,请参阅工作方式

$Time$ 变量的工作原理

通过 DASH 端点上的段模板格式设置启用 $Time$ 变量,如 创建 DASH 端点 中所述。AWS Elemental MediaPackage 执行以下操作:

  1. 当 MediaPackage 生成 DASH 清单时,则会使用 SegmentTemplate 对象 media 值中的 $Time$ 变量,如以下示例所示:

    <SegmentTemplate timescale="30" media="index_video_1_0_$Time$.mp4?m=1122792372" initialization="index_video_1_0_init.mp4?m=1122792372" startNumber="2937928">
  2. 当播放设备请求段时,则会使用 media 属性中定义的 URL,并将变量替换为所请求段的可用性开始时间。

    重要

    替换变量的值必须是段的确切 t 值。如果请求使用任意时间戳,MediaPackage 不会寻找最近的段。

    以下是表示形式中段模板的示例。它使用 $Time$ 变量:

    <SegmentTemplate timescale="30000" media="155_video_1_2_$Time$.mp4?m=1545421124" initialization="155_video_1_2_init.mp4?m=1545421124" startNumber="710"> <SegmentTimeline> <S t="255197799" d="360360" r="8"/> <S t="258441039" d="334334"/> </SegmentTimeline> </SegmentTemplate>

    第一个段的请求 URL 为 155_video_1_2_255197799.mp4。使用 360360 持续时间,下一个段请求为 155_video_1_2_255558159.mp4,以此类推,直到第九个段。

    最后一个段请求为 155_video_1_2_258441039.mp4