亚马逊AWS官方博客

通过实时输入中断合并配置优化 Amazon IVS 直播到 VOD 的流程

Original URL: https://aws.amazon.com/blogs/media/optimizing-amazon-ivs-live-to-vod-with-live-input-interruptions/

 

亚马逊互动视频服务(Amazon IVS)推出了“合并碎片流”功能,作为其直播自动录制到 Amazon S3 功能的增强。此弹性功能旨在当广播输入流中断后自动将多个录制合并在一起,并解决流媒体可能遇到各种网络条件时带来的挑战。

为了解释这一功能的细节,并了解对用户的好处,我们首先需要检查 Amazon IVS 如何实例化直播频道,以及自动录制到 Amazon S3 的功能。Amazon IVS 是一种全托管的端到端视频交付服务,针对直播和互动进行了优化。它的核心好处之一是从底层基础架构中抽离出来,让开发人员专注于构建应用程序。客户可以提前创建频道,直到有认证的源码流开始推送,也可以通过相应服务的 API 和 Amazon Web Services(AWS) SDK 来创建频道。使用者只需要开始推送视频,Amazon IVS 频道就会上线。

当 Amazon IVS 检测到给定频道的输入流时,它会生成一个唯一的会话 ID。该 ID 包含在服务事件流健康度量中,因此客户可以监控使用情况并可视化使用模式。当在频道上启用实时流录制到 Amazon S3 时,Amazon IVS 将会话 ID 作为资产对象密钥的一部分,以确保唯一性,给定频道可以随时间重复使用。在流媒体视频中断一段时间的情况下,Amazon IVS 可能会将输入丢失解释为会话结束并停止频道。在这种情况下,当重新建立流时,Amazon IVS 将使用新的会话 ID 再次启动频道。输出将继续在同一频道特定的播放 URL 上可用。然而,VOD 录制将被分成不同的对象:一个用于中断之前的会话 ID,一个用于之后的会话 ID。客户以前通过使用频道开始/停止事件来驱动自己的检测逻辑和 VOD 连接过程来解决这一问题。

Amazon IVS 现在可以代替您管理这一点。如果频道的输入中断,并在可配置的时间窗口内返回,Amazon IVS 可以自动将记录合并到单个视频文件中,如下图所示。

在本例中,在一个小时的实时事件中发生两次输入中断。使用可选的“合并碎片流”功能,将单个合并的视频资产记录到 Amazon S3,而不是记录三个不同部分。

配置视频资产合并

Amazon IVS 控制台和 API 现在在录制配置中包含一个合并碎片流选项。启用后,客户可以定义 1 到 300 秒之间的重新连接窗口。如果输入流中断的持续时间少于指定时间,Amazon IVS 将把 VOD 录制合并到同一个可播放的视频资产中。请注意,有些用例不适用此操作。请参阅本文后面的“不支持的用例”部分。

合并流的分析

Amazon IVS 通过在实时输入中断期间,在使用 ENDLIST HLS 标记最终确定视频资产之前,在用户指定的“重新连接窗口”期间保持录制会话打开,从而“合并”流。在会话合并的位置插入一个 DISCONTINUITY 标记,以向观看者发出发生了变化的信号。

以下示例显示了输入中断期间播放列表清单的一部分。输入在通过切片 28 的中途丢失。输入在配置的重新连接窗口内返回,Amazon IVS 添加 DISCONTINUITY 标签,然后从切片 30 继续。

#EXTINF:10.833,
26.ts
#EXTINF:10.633,
27.ts
#EXTINF:8.474,
28.ts
#EXT-X-DISCONTINUITY
...
#EXTINF:10.500,
30.ts
#EXTINF:10.233,

使用 Amazon EventBridge 进行监控

Amazon IVS 使用 Amazon EventBridge 生成显示频道运行状态的事件。下面的消息序列图显示了 Amazon IVS 频道的典型消息,这些频道具有定义为启用合并片段流的录制配置,以及由于输入中断而创建的各种事件。突出显示“录制开始”和“录制结束”事件。


启动 Amazon IVS 频道时,会触发 Session Create 和 Stream Start 事件,Amazon IVS 会发送 Recording Start。我们可以在录制事件消息中获取录制的关键细节,包括录制的地址。可以通过以下方式获取录制的地址:recording_s3_bucket_name+recording_s3_key_prefix。

两个新字段“recording_session_id”和“recording_session_stream_ids”已添加到通过 Amazon EventBridge 发布的录制状态更改事件中,并添加了合并碎片流功能。 “recording_session_id”字段现在在所有录制事件中都可用,允许客户将录制和会话映射在一起。“recording_session_stream_ids”字段已添加到录制结束/录制结束失败事件中。此字段包含“合并”到单个录制中的所有流 ID。此字段可用于查找录制的所有流。如果没有合并,则此列表数组的长度为 1。

有关将 Amazon EventBridge 与 Amazon IVS 一起使用的更多信息,请参阅用户指南

不支持的场景

如果 Amazon IVS 检测到不同会话之间流格式的变化,例如分辨率(例如,从全高清到高清)或视频比特率的显著变化,则服务将会将其解释为新的广播会话。即使连续会话在“重新连接窗口”间隔内,Amazon IVS 也不会合并流。您可以通过流健康仪表板或通过 GetStreamSession API 以编程方式获取输入格式的详细信息。

立即开始使用 Amazon IVS 的合并碎片流功能

合并碎片流功能增强了自动录制到 Amazon S3 的功能,允许开发人员简化他们的 VOD 工作流程。流会话合并在单个媒体录制中,因此观众可以重新观看内容,而不会因为网络不稳定或其他流中断而在直播流期间发生任何中断。

本篇译者

滕彬

亚马逊云科技视频媒体相关服务资深架构师,负责基于亚马逊云科技的媒体相关服务方案的设计和咨询。专注于视频媒体相关服务的推广和应用,深度参与了很多使用亚马逊云科技媒体相关服务的直播和点播项目的构建以及优化。在视音频编转码以及视频平台的搭建上有丰富经验。