IVS 服务器端合成概述
下图演示了服务器端合成的工作原理:
优势
与客户端合成相比,服务器端合成具有以下优点:
-
减少客户端负载 — 通过服务器端合成,处理和组合音频和视频源的负担从单个客户端设备转移到服务器本身。服务器端合成使客户端设备无需使用其 CPU 和网络资源来合成视图并将其传输到 IVS。这意味着观众无需自己的设备处理资源密集型任务即可观看广播,从而延长电池寿命并获得更流畅的观看体验。
-
质量稳定 — 服务器端合成允许精确控制最终流的质量、分辨率和比特率。这样可确保所有观众都能获得一致的观看体验,而与其个人设备的功能无关。
-
弹性 — 通过将合成过程集中到服务器上,广播变得更加强大。即使发布者设备遇到技术限制或波动,服务器也可以进行调整,为所有受众成员提供更流畅的流。
-
带宽效率 — 由于服务器负责合成,因此舞台发布者不必花费额外的带宽将视频广播到 IVS。
或者,要向 IVS 频道广播舞台,可以在客户端进行合成;请参阅 IVS Low-Latency Streaming User Guide 中的 Enabling Multiple Hosts on an IVS Stream。
合成生命周期
使用下图来了解合成的状态转换:
概括来说,合成的生命周期如下所示:
-
合成资源在用户调用 StartComposition 端点时创建
-
IVS 成功开始合成之后,就会发送“IVS 合成状态更改(会话开始)”EventBridge 事件。有关事件的详细信息,请参阅将 EventBridge 与 IVS 实时直播功能结合使用。
-
合成处于活动状态后,就会发生以下情况:
-
用户停止合成 — 如果调用 StopComposition 端点,IVS 会启动合成的正常关闭,发送“目标结束”事件,然后发送“会话结束”事件。
-
合成执行自动关闭 — 如果没有参与者主动发布到 IVS 舞台,则合成将在 60 秒后自动完成,并发送 EventBridge 事件。
-
目标故障 — 如果目标意外失败(例如,IVS 频道被删除),则目标将转换为
RECONNECTING
状态并发送“目标重新连接”事件。如果无法恢复,IVS 会将目标转换为FAILED
状态并发送“目标故障”事件。如果至少有一个目标处于活动状态,IVS 会使合成保持活动状态。
-
-
一旦合成处于
STOPPED
或FAILED
状态,就会在五分钟后自动将其清除。(然后,ListCompositions 或 GetComposition 将不再对其进行检索。)
IVS API
服务器端合成使用以下关键 API 元素:
-
EncoderConfiguration 对象允许您自定义要生成的视频的格式(高度、宽度、比特率和其他流式传输参数)。每次调用 StartComposition 端点时,都可以重复使用 EncoderConfiguration。
-
Composition 端点跟踪视频合成并输出到 IVS 频道。
-
StorageConfiguration 会跟踪录制合成内容的 S3 存储桶。
要使用服务器端合成,您需要创建一个 EncoderConfiguration 并在调用 StartComposition 端点时将其附上。在此示例中,SquareVideo EncoderConfiguration 用于两个合成:
如需完整信息,请参阅 IVS Real-Time Streaming API Reference。
Layouts
StartComposition 端点提供两个布局选项:网格和 pip(画中画)。
网格布局
网格布局在由大小相等的槽位组成的网格中排列暂存区参与者。它提供了几个可自定义的属性:
videoAspectRatio
设置参与者显示模式以控制视频磁贴的宽高比。videoFillMode
定义视频内容如何适应参与者磁贴。gridGap
指定参与者磁贴之间的间距(以像素为单位)。omitStoppedVideo
允许从合成中排除已停止的视频流。featuredParticipantAttribute
标识精选槽位。设置此选项后,精选参与者在主屏幕上较大的槽位中显示,其他参与者在其下方显示。
有关网格布局的详细信息(包括所有字段的有效值和默认值),请参阅 GridConfiguration 数据类型。
画中画(PiP)布局
PiP 布局允许在大小、位置和行为均可配置的叠加窗口中显示参与者。关键属性包括:
pipParticipantAttribute
指定 PiP 窗口的参与者。pipPosition
确定 PiP 窗口的角落位置。pipWidth
和pipHeight
配置 PiP 窗口的宽度和高度。pipOffset
设置 PiP 窗口距离最近边缘的偏移位置(以像素为单位)。pipBehavior
定义所有其他参与者都离开时的 PiP 行为。
与网格布局一样,PiP 支持 featuredParticipantAttribute
、omitStoppedVideo
、videoFillMode
和 gridGap
以进一步自定义合成。
有关 PiP 布局的详细信息(包括所有字段的有效值和默认值),请参阅 PipConfiguration 数据类型。
注意:舞台发布者在服务器端合成中支持的最大分辨率为 1080p。如果发布者发送的视频高于 1080p,则发布者将呈现为纯音频参与者。
重要提示:确保您的应用程序不依赖于当前布局的特定功能,例如磁贴的大小和位置。可以随时对布局进行视觉改进。