本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
准备就绪:设置 SCTE 35 源 – 分段或清单
如果 MediaLive 频道中有 HLS 输入,则必须配置输入以识别 SCTE 35 消息的来源。有两种可能的源:
-
传输流(TS)中的分段。这种类型的源适用于所有可能包含 SCTE 35 消息的输入。除非选择特定的 SCTE 35 数据包标识符(PID),否则将使用 TS 中存在的第一个 PID。
-
HLS 输入清单中的标签。这种类型的源仅适用于 HLS 输入。
在非 HLS 输入中设置源
-
在创建/编辑通道页面的导航窗格中,选择输入附件。
-
在常规输入设置中,完成以下字段:
-
SCTE 35 PID:输入 PID 值。如果该值留空,则将选择输入中存在的第一个 SCTE 35 PID。
-
-
如果合适,请对其他输入附件重复此操作。
注意
您只需要按照下一个步骤进行 HLS 输入。对于所有其他输入,SCTE 35 消息源始终是 TS 分段。
在 HLS 输入中设置源
-
在创建/编辑通道页面的导航窗格中,选择输入附件。
-
对于每个 HLS 输入,在网络输入设置的 HLS 输入设置中,选择 HLS 输入。此时将显示更多字段。
-
将 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:在“输入附件”的缓冲区段中输入此数字(或更大的数字)。