

# IVS 服务器端合成概述
<a name="ssc-overview"></a>

下图演示了服务器端合成的工作原理：

![\[使用服务器端合成广播舞台。\]](http://docs.aws.amazon.com/zh_cn/ivs/latest/RealTimeUserGuide/images/ssc_Intro_Composite_Recording.png)


## 优势
<a name="ssc-benefits"></a>

与客户端合成相比，服务器端合成具有以下优点：
+ **减少客户端负载** — 通过服务器端合成，处理和组合音频和视频源的负担从单个客户端设备转移到服务器本身。服务器端合成使客户端设备无需使用其 CPU 和网络资源来合成视图并将其传输到 IVS。这意味着观众无需自己的设备处理资源密集型任务即可观看广播，从而延长电池寿命并获得更流畅的观看体验。
+ **质量稳定** — 服务器端合成允许精确控制最终流的质量、分辨率和比特率。这样可确保所有观众都能获得一致的观看体验，而与其个人设备的功能无关。
+ **弹性** — 通过将合成过程集中到服务器上，广播变得更加强大。即使发布者设备遇到技术限制或波动，服务器也可以进行调整，为所有受众成员提供更流畅的流。
+ **带宽效率** — 由于服务器负责合成，因此舞台发布者不必花费额外的带宽将视频广播到 IVS。

或者，要向 IVS 频道广播舞台，可以在客户端进行合成；请参阅 *IVS Low-Latency Streaming User Guide* 中的 [Enabling Multiple Hosts on an IVS Stream](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/multiple-hosts.html)。

## 合成生命周期
<a name="ssc-composition-endpoint"></a>

使用下图来了解合成的状态转换：

![\[服务器端合成资源的生命周期。\]](http://docs.aws.amazon.com/zh_cn/ivs/latest/RealTimeUserGuide/images/ssc_Composition_Lifecycle.png)


概括来说，合成的生命周期如下所示：

1. 合成资源在用户调用 StartComposition 操作时创建。

1. IVS 成功开始合成之后，就会发送“IVS 合成状态更改（会话开始）”EventBridge 事件。有关事件的详细信息，请参阅[将 EventBridge 与 IVS 实时直播功能结合使用](eventbridge.md)。

1. 合成处于活动状态后，就会发生以下情况：
   + 用户停止合成：如果调用 StopComposition 操作，IVS 会启动合成的正常关闭，发送“目标结束”事件，然后发送“会话结束”事件。
   + 合成执行自动关闭 — 如果 IVS 舞台被删除或 60 秒内没有参与者主动发布到 IVS 舞台，则合成将自动完成，并发送 EventBridge 事件。
   + 目标故障 — 如果目标意外失败（例如，IVS 频道被删除），则目标将转换为 `RECONNECTING` 状态并发送“目标重新连接”事件。如果无法恢复，IVS 会将目标转换为 `FAILED` 状态并发送“目标故障”事件。如果至少有一个目标处于活动状态，IVS 会使合成保持活动状态。

1. 一旦合成处于 `STOPPED` 或 `FAILED` 状态，就会在五分钟后自动将其清除。（然后，ListCompositions 或 GetComposition 将不再对其进行检索。）

## IVS API
<a name="ssc-api"></a>

服务器端合成使用以下关键 API 元素：
+ *EncoderConfiguration* 对象允许您自定义要生成的视频的格式（高度、宽度、比特率和其他流式传输参数）。每次调用 StartComposition 操作时，都可以重复使用 EncoderConfiguration。
+ *Composition* 操作跟踪视频合成并输出到 IVS 频道。
+ *StorageConfiguration* 会跟踪录制合成内容的 S3 存储桶。

要使用服务器端合成，您需要创建一个 EncoderConfiguration 并在调用 StartComposition 操作时将其附上。在此示例中，SquareVideo EncoderConfiguration 用于两个合成：

![\[服务器端合成使用两个关键 API 元素。\]](http://docs.aws.amazon.com/zh_cn/ivs/latest/RealTimeUserGuide/images/ssc_IVS_API_Composite_Recording.png)


如需完整信息，请参阅 [IVS Real-Time Streaming API Reference](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/Welcome.html)。

## Layouts
<a name="ssc-api-layouts"></a>

StartComposition 操作提供两个布局选项：网格和 PiP（画中画）。

服务器端合成对令牌交换事件的实时响应。当参与者交换令牌以更新诸如主画面状态或画中画分配等属性时，合成布局会自动更新，参与者无需离开并重新加入阶段。

您也可以使用令牌交换在实时合成过程中更改参与者顺序。当参与者使用更新的订单属性值交换代币时，合成会自动重新渲染以反映新的排序。这消除了参与者断开连接再重新连接的必要。有关更多信息，请参阅[令牌交换](broadcast-mobile-token-exchange.md)。

### 网格布局
<a name="ssc-api-layouts-grid"></a>

网格布局在由大小相等的槽位组成的网格中排列暂存区参与者。它提供了几个可自定义的属性：
+ `videoAspectRatio` 设置参与者显示模式以控制视频磁贴的宽高比。
+ `videoFillMode` 定义视频内容如何适应参与者磁贴。
+ `gridGap` 指定参与者磁贴之间的间距（以像素为单位）。
+ `omitStoppedVideo` 允许从合成中排除已停止的视频流。
+ `featuredParticipantAttribute` 标识精选槽位。设置此选项后，精选参与者在主屏幕上较大的槽位中显示，其他参与者在其下方显示。
+ `participantOrderAttribute` 可基于参与者令牌中的属性值实现自定义参与者排序。指定此参数后，系统将按参与者属性值的数值大小对其进行排序，缺少该属性的参与者将重新按到达时间排序。这提供了可选的确定性定位功能，可实现基于角色的布局。

有关网格布局的详细信息（包括所有字段的有效值和默认值），请参阅 [GridConfiguration](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_GridConfiguration.html) 数据类型。

![\[服务器端合成网格布局\]](http://docs.aws.amazon.com/zh_cn/ivs/latest/RealTimeUserGuide/images/ssc_Grid_Layout.png)


### 画中画（PiP）布局
<a name="ssc-api-layouts-pip"></a>

PiP 布局允许在大小、位置和行为均可配置的叠加窗口中显示参与者。关键属性包括：
+ `pipParticipantAttribute` 指定 PiP 窗口的参与者。
+ `pipPosition` 确定 PiP 窗口的角落位置。
+ `pipWidth` 和 `pipHeight` 配置 PiP 窗口的宽度和高度。
+ `pipOffset` 设置 PiP 窗口距离最近边缘的偏移位置（以像素为单位）。
+ `pipBehavior` 定义所有其他参与者都离开时的 PiP 行为。

与网格布局类似，PiP 布局支持 `featuredParticipantAttribute`、`omitStoppedVideo`、`videoFillMode`、`gridGap` 和 `participantOrderAttribute`，可用来进一步自定义合成。`participantOrderAttribute` 支持为 PiP 窗口选中参与者，并同时根据参与者令牌中的属性值对参与者进行网格定位，从而实现自定义的参与者排序。

有关 PiP 布局的详细信息（包括所有字段的有效值和默认值），请参阅 [PipConfiguration](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_PipConfiguration.html) 数据类型。

![\[服务器端合成画中画（PiP）布局\]](http://docs.aws.amazon.com/zh_cn/ivs/latest/RealTimeUserGuide/images/ssc_PiP_Layout.png)


**注意**：舞台发布者在服务器端合成中支持的最大分辨率为 1080p。如果发布者发送的视频高于 1080p，则发布者将呈现为纯音频参与者。

**重要提示**：确保您的应用程序不依赖于当前布局的特定功能，例如磁贴的大小和位置。*可以随时对布局进行视觉改进*。