

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 多檢視程式
<a name="multiviewer"></a>

Amazon Kinesis Video Streams Multiviewer 是一種雲端型 WebRTC 解決方案，可讓多個檢視器從單一攝影機裝置同時加入即時影片串流工作階段。此功能透過處理雲端中的影片串流來解決邊緣裝置的頻寬和運算限制，而不是要求攝影機將個別串流傳送給每個檢視器。

**Topics**
+ [概觀](#multiviewer-overview)
+ [需求和資源](#multiviewer-requirements)
+ [設定多檢視程式](#multiviewer-setup)
+ [與擷取整合](#multiviewer-integration)
+ [API 操作](#multiviewer-apis)
+ [最佳實務](#multiviewer-best-practices)

## 概觀
<a name="multiviewer-overview"></a>

傳統的peer-to-peer WebRTC 連線需要攝影機裝置分別將影片傳送至每個檢視器，如此可以快速讓頻寬或運算容量有限的裝置過載。Multiviewer 會使用雲端型「混音器」來解決此問題：
+ 從攝影機裝置接收單一視訊串流
+ 處理串流並將其轉送給多個檢視器
+ 處理多參與者對話的音訊混合
+ 保留邊緣裝置運算和頻寬容量

Multiviewer 對於使用案例特別有用，包括：
+ **智慧家庭安全：**多個家庭成員可以同時檢視攝影機摘要，而不會降低效能
+ **企業安全：**安全團隊可以同時監控摘要
+ **汽車監控：**機群管理員和控制器可以同時檢視車輛攝影機
+ **機器人和無人機：**多個操作員可以監控自動化系統
+ **教育/執行：**多個執行者可以觀察測試工作階段
+ **遠距醫療：**醫療保健團隊可以參與遠端諮詢

## 需求和資源
<a name="multiviewer-requirements"></a>

若要使用 Multiviewer，您需要下列資源：
+ **Kinesis Video Streams Streams：**擷取和儲存影片和音訊內容的目的地
+ **WebRTC 訊號頻道：**使用 KVS WebRTC SDK 啟用與裝置的連線
+ **媒體儲存組態：**使用 UpdateMediaStorageConfiguration API 連結串流和頻道

**重要**  
多檢視程式目前只有在與 WebRTC 擷取結合時才可用。主要或檢視器都可以啟動 WebRTC 擷取工作階段，而視訊和音訊軌會同時存放在 Kinesis Video Streams Stream 中，同時分發給多個檢視器。

**裝置需求：**
+ 攝影機裝置必須支援 KVS WebRTC SDK
+ 檢視器應用程式必須使用 KVS WebRTC SDK
+ 所有參與者都連接到相同的訊號頻道

**追蹤要求：**
+ 主要參與者：WebRTC 擷取需要音訊和視訊音軌
+ 觀眾參與者：可以傳送選用的音軌或完全不傳送音軌。觀眾無法傳送影片音軌

## 設定多檢視程式
<a name="multiviewer-setup"></a>

請依照下列步驟為您的應用程式設定 Multiviewer：

1. **建立必要資源**

   使用主控台、CLI 或 SDKs 建立 Kinesis Video Streams Streams 和 WebRTC 訊號頻道。如需詳細說明[建立訊號頻道](ingestion-create-channel.md)，請參閱 [建立影片串流](ingestion-create-stream.md)和 。

1. **連結資源**

   使用 UpdateMediaStorageConfiguration API 來連結您的串流和頻道。此組態會啟用 Multiviewer 功能。如需實作詳細資訊[設定目的地](configure-ingestion.md)，請參閱 。

1. **設定攝影機應用程式**

   使用 KVS WebRTC SDK 實作攝影機應用程式，以呼叫 JoinStorageSession API。這會啟動其他檢視器可以加入的擷取工作階段。

1. **設定檢視器應用程式**

   使用 KVS WebRTC 開發套件實作檢視器應用程式，以呼叫 JoinStorageSessionAsViewer API。多個檢視器可以同時加入相同的工作階段。

## 與擷取整合
<a name="multiviewer-integration"></a>

Multiviewer 建置在 WebRTC 擷取功能之上，該功能於 2023 年推出。此整合提供數種優點：
+ **自動錄製：**所有多檢視程式工作階段都會自動錄製到 Kinesis Video Streams Streams，以供日後播放和分析
+ **雲端處理：**影片處理會在雲端進行，減少邊緣裝置上的運算負載
+ **可擴展架構：**以雲端為基礎的方法可以處理多個並行多檢視器工作階段
+ **一致的體驗：**檢視器無論其網路條件為何，都會收到相同的高品質串流

具有擷取的一般多檢視程式工作階段工作流程為：

1. 攝影機裝置呼叫 JoinStorageSession 以開始將視訊擷取至雲端

1. 影片串流會在設定的 Kinesis Video Streams 串流中處理和存放

1. 多個檢視器裝置呼叫 JoinStorageSessionAsViewer 以加入工作階段

1. 雲端混音器會將視訊串流分發給所有連線的檢視器

1. 所有參與者的音訊都已適當混合和分配

## API 操作
<a name="multiviewer-apis"></a>

Multiviewer 使用與 WebRTC 擷取相同的 API 操作。金鑰 APIs包括：
+ [UpdateMediaStorageConfiguration](https://docs.aws.amazon.com//kinesisvideostreams/latest/dg/API_UpdateMediaStorageConfiguration.html) - 將訊號頻道連結至串流以進行擷取
+ [JoinStorageSession](https://docs.aws.amazon.com//kinesisvideostreams/latest/dg/API_webrtc_JoinStorageSession.html) - 從攝影機裝置啟動擷取工作階段
+ [JoinStorageSessionAsViewer](https://docs.aws.amazon.com//kinesisvideostreams/latest/dg/API_webrtc_JoinStorageSessionAsViewer.html) - 允許檢視器加入作用中的擷取工作階段
+ [DescribeMediaStorageConfiguration](https://docs.aws.amazon.com//kinesisvideostreams/latest/dg/API_DescribeMediaStorageConfiguration.html) - 擷取目前的媒體儲存組態

如需詳細的 API 使用範例，請參閱 [使用儲存工作階段建立 WebRTC 連線](getting-started-ingestion.md#ingestion-establish-connection)。

## 最佳實務
<a name="multiviewer-best-practices"></a>

實作 Multiviewer 時，請遵循下列最佳實務：
+ **邊緣裝置最佳化：**當您需要超過 2 到 3 個並行檢視器時，請特別使用 Multiviewer，因為這是邊緣裝置限制通常會明顯顯現的地方
+ **監控工作階段運作狀態：**實作監控以追蹤工作階段品質和檢視器連線
+ **處理連線失敗：**為攝影機和檢視器連線實作重試邏輯
+ **音訊管理：**考慮預設將檢視器靜音，以防止大型工作階段中的音訊回饋
+ **資源清除：**確保檢視器離開工作階段時 WebRTC 連線的正確清除