准备就绪:设置 SCTE 35 源 – 分段或清单 - MediaLive

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

准备就绪:设置 SCTE 35 源 – 分段或清单

如果 MediaLive 频道中有 HLS 输入,则必须配置输入以识别 SCTE 35 消息的来源。有两种可能的源:

  • 传输流(TS)中的分段。这种类型的源适用于所有可能包含 SCTE 35 消息的输入。除非选择特定的 SCTE 35 数据包标识符(PID),否则将使用 TS 中存在的第一个 PID。

  • HLS 输入清单中的标签。这种类型的源仅适用于 HLS 输入。

在非 HLS 输入中设置源
  1. 创建/编辑通道页面的导航窗格中,选择输入附件

  2. 常规输入设置中,完成以下字段:

    • SCTE 35 PID:输入 PID 值。如果该值留空,则将选择输入中存在的第一个 SCTE 35 PID。

  3. 如果合适,请对其他输入附件重复此操作。

注意

您只需要按照下一个步骤进行 HLS 输入。对于所有其他输入,SCTE 35 消息源始终是 TS 分段。

在 HLS 输入中设置源
  1. 创建/编辑通道页面的导航窗格中,选择输入附件

  2. 对于每个 HLS 输入,在网络输入设置HLS 输入设置中,选择 HLS 输入。此时将显示更多字段。

  3. 将 SCTE 35 源设置为 SEGMENTS(默认)或 MANIFEST

支持的清单格式

如果您设置为使用 HLS 输入清单作为 SCTE 35 源,请阅读以下章节。

MediaLive 可以从 EXT-X-CUE-OUT 中生成 SCTE35 拼接插入消息,也可以从源 HLS 清单中生成可选的 E XT-X-CU E-IN 标签。以下是这些标签支持的格式示例。

  • #EXT-X-CUE-OUT:DURATION=60.000

  • #EXT-X-CUE-OUT:DURATION="60.000"

  • #EXT-X-CUE-OUT:60.000

  • #EXT-X-CUE-OUT:"60.000"

  • #EXT-X-CUE-IN

如何 MediaLive 创建 SCTE 35 消息

对于每个EXT-X-CUE-OUT, MediaLive 使用以下数据创建一个 splice insert 类型的 SCTE 35 消息:

  • splice_event_id: 一个递增的数字,从 1 开始,表示根据当前输入 MediaLive 创建的第一条 CUE-OUT 消息。

  • out_of_network_indicator:true (1)

  • program_splice_flag:true (1)

  • duration_flag:true (1)

  • break_duration:

    • auto_return:1

    • reserved:0

    • duration:清单中的持续时间,转换为 90kHz 的刻度。例如,15 秒是 1350000 个刻度。

  • splice_immediate_flag:0 (false)

  • splice_time: 使用输入清单中紧随其后的视频片段第一帧 EXT-X-CUE-OUT的视频 PTS

  • unique_program_id:0

  • avail_num: 一个递增的数字,从 1 开始,表示根据当前输入 MediaLive 创建的第一条 CUE-OUT 消息。

  • avails expected:0

对于每个EXT-X-CUE-IN, MediaLive 使用以下数据创建一个 splice insert 类型的 SCTE 35 消息:

  • splice_event_id:清单 EXT-X-CUE-OUT中最新的 ID。

  • out_of_network_indicator:false (0)

  • program_splice_flag:true (1)

  • duration_flag:false (0)

  • splice_immediate_flag:0 (false)

  • splice_time: 使用输入清单中紧随其后的视频片段第一帧 EXT-X-CUE-IN的视频 PTS

  • unique_program_id:0

  • avail_num: 最近的值 EXT-X-CUE-OUT

  • avails expected:0

如何 MediaLive 插入消息:preroll

MediaLive 当它插入与 CUE-OUT 对应的 SCTE 35 消息时,它会包含预览。此预卷比 SCTE 35 消息中的 splice_time 提前 5 秒。

MediaLive 如果频道没有足够的缓冲空间来允许预先播放,则会减少前贴片。缓冲区时长(以秒为单位)为以下各项的乘积:

  • 输入段持续时间(在输入清单中指定);

  • 缓冲区中需包含的段数。附加 HLS 输入时,可以在缓冲区段字段中设置此值。

例如,如果分段持续时间为 6 秒,分段数为 3,则缓冲区为 18 秒。

确保有足够预卷

如果计算出的输入缓冲区短于 5 秒,则 MediaLive 会减少预滚动。 MediaLive 可能会将前置卷减少到 0,这意味着 SCTE35 消息的 PTS 值等于拼接时间的 PTS。

为避免预卷不足,我们建议您确保缓冲区至少等于预卷加一个分段。按照以下步骤进行操作:

  • 步骤 1:计算输入的最小缓冲区(以秒为单位):预卷(以秒为单位) + 一个分段的长度(以秒为单位)

  • 步骤 2:计算该最小缓冲区中的分段数:用最小缓冲区除以分段长度

  • 步骤 3:将所得值四舍五入为整数。如果所得值小于 3,则四舍五入为 3。

  • 步骤 4:在“输入附件”的缓冲区段中输入此数字(如果需要,可以输入更大的数字)。

例如,假设分段长度为 2 秒。

  • 步骤 1:5 + 2 = 7

  • 步骤 2:7 秒除以 2 = 3.5

  • 步骤 3:四舍五入为 4。

  • 步骤 4:在“输入附件”的缓冲区段中输入此数字(或更大的数字)。