

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

下圖說明伺服器端合成的運作方式：

![\[使用伺服器端合成廣播階段。\]](http://docs.aws.amazon.com/zh_tw/ivs/latest/RealTimeUserGuide/images/ssc_Intro_Composite_Recording.png)


## 優勢
<a name="ssc-benefits"></a>

與用戶端合成相比，伺服器端合成具有以下優點：
+ **減少用戶端負載**：透過伺服器端合成，處理和合併音訊與視訊來源的負擔會從個別用戶端裝置轉移到伺服器本身。伺服器端合成可消除用戶端裝置使用其 CPU 和網路資源來合成檢視並將其傳輸到 IVS 的需求。這表示觀眾可以觀看廣播，而其裝置無需處理資源密集型任務，這可以改善電池壽命和更流暢的觀看體驗。
+ **一致的品質**：伺服器端合成可讓您精確控制最終串流的品質、解析度和位元速率。這可確保所有觀眾獲得一致的觀看體驗，無論其個別裝置的功能為何。
+ **彈性**：透過將合成程序集中在伺服器上，廣播會變得更加穩定。即使發布者裝置遇到技術限制或波動，伺服器也可以適應並為所有觀眾成員提供更流暢的串流。
+ **頻寬效率**：由於伺服器會處理合成，因此階段發布者不必花費額外頻寬將視訊廣播到 IVS。

若要將階段廣播到 IVS 頻道，您可以執行用戶端合成；請參閱《IVS 低延遲串流使用者指南》**中的[在 IVS 串流上啟用多位主持人](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/multiple-hosts.html)。

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

參閱下方圖表，以了解合成的狀態轉換。

![\[伺服器端合成資源的生命週期。\]](http://docs.aws.amazon.com/zh_tw/ivs/latest/RealTimeUserGuide/images/ssc_Composition_Lifecycle.png)


合成的生命週期大致如下：

1. 當使用者呼叫 StartComposition 操作時，會建立合成資源。

1. 一旦 IVS 成功啟動合成，就會傳送「IVS 合成狀態變更 (工作階段啟動)」EventBridge 事件。如需有關事件的詳細資訊，請參閱[搭配 IVS 即時串流使用 EventBridge](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_tw/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)。

## 版面配置
<a name="ssc-api-layouts"></a>

StartComposition 操作提供兩種版面配置選項：網格和 PiP (子母畫面)。

### 網格版面配置
<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_tw/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_tw/ivs/latest/RealTimeUserGuide/images/ssc_PiP_Layout.png)


**注意**：階段發布者在伺服器端合成上所支援的最大解析度為 1080p。如果發布者傳送的視訊高於 1080p，則發布者會轉譯為純音訊參與者。

**重要事項**：確保應用程式不依賴目前版面配置的特定功能，例如動態磚的大小和位置。*您可以隨時對版面配置進行視覺化改善*。