

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

# 建立 Amazon Chime SDK 媒體管道
<a name="media-pipelines"></a>

在本節中，我們會示範如何建立用來擷取或串流 Amazon Chime SDK 會議的媒體管道。開始之前，您必須將用戶端應用程式與 Amazon Chime SDK 用戶端程式庫整合。如需詳細資訊，請參閱[了解 Amazon Chime SDK 用戶端程式庫](mtgs-sdk-client-lib.md)。如需媒體管道的詳細資訊，請參閱*AWS 商業生產力部落格*中的[使用媒體管道擷取 Amazon Chime SDK 會議](https://aws.amazon.com/blogs//business-productivity/capture-amazon-chime-sdk-meetings-using-media-capture-pipelines/)。

**重要**  
您和您的最終使用者必須了解，錄製 Amazon Chime SDK 會議可能受到有關錄製電子通訊的法律和法規的約束。您和您的最終使用者有責任遵守有關錄製的所有適用法律，包括正確通知錄製工作階段中的所有參與者正在錄製工作階段或通訊，並取得他們的同意。  
您和您的最終使用者需負責使用媒體即時連接器服務進行所有內容串流，且必須確保此類內容不會違反法律、侵犯或盜用任何第三方的權利，或以其他方式違反您與 Amazon 協議的重要條款。

**Topics**
+ [建立 Amazon Chime SDK 媒體管道的考量事項](creating-media-pipelines-considerations.md)
+ [了解作用中 Amazon Chime SDK 媒體管道的預設限制](media-pipelines-limits.md)
+ [遷移至 Amazon Chime SDK 媒體管道命名空間](migrate-pipelines.md)
+ [了解 Amazon Chime SDK 媒體管道的建立](create-pipeline.md)
+ [為 Amazon Chime SDK 會議建立媒體擷取管道](capture-pipe-config.md)
+ [為 Amazon Chime SDK 會議建立媒體串連管道](create-concat-pipe.md)
+ [為 Amazon Chime SDK 會議建立媒體即時連接器管道](connector-pipe-config.md)
+ [使用 Amazon Chime SDK 建立媒體串流管道](create-media-stream-pipeline.md)
+ [在 Amazon Chime SDK 會議中將音訊和視訊合成為單一檢視](pipeline-compositing.md)
+ [為 Amazon Chime SDK 媒體管道建立服務連結角色](create-pipeline-role.md)
+ [使用 Amazon Chime SDK 媒體管道事件](media-pipe-events.md)
+ [停止 Amazon Chime SDK 媒體管道的最佳實務](stop-pipe-best-practices.md)

# 建立 Amazon Chime SDK 媒體管道的考量事項
<a name="creating-media-pipelines-considerations"></a>

媒體管道可以包含下列其中一個管道：
+ **媒體擷取** – 使用媒體擷取管道來擷取音訊、影片和內容共用串流，以及會議事件和資料訊息。所有媒體擷取管道都會將其資料儲存至您建立的 [Amazon Simple Storage Service](https://aws.amazon.com/s3/) (S3) 儲存貯體。您可以為每個 Amazon Chime SDK 會議建立一個媒體擷取管道。如需詳細資訊，請參閱 [了解 Amazon Chime SDK 媒體管道的建立](create-pipeline.md)。
+ **媒體串連** – 使用媒體串連管道串連媒體擷取管道中的成品。串連管道的運作與媒體擷取和即時連接器管道無關。如需詳細資訊，請參閱 [為 Amazon Chime SDK 會議建立媒體串連管道](create-concat-pipe.md)。
+ **媒體即時連接器** – 使用媒體即時連接器管道來連線至可讓您將 Amazon Chime SDK 會議串流至 RTMP 端點的服務。每個 Amazon Chime SDK 會議最多可以建立一個媒體即時連接器管道。如需詳細資訊，請參閱 [為 Amazon Chime SDK 會議建立媒體即時連接器管道](connector-pipe-config.md)。
+ **媒體串流** – 使用媒體串流管道來擷取會議中所有出席者的個別音訊，以及媒體串連管道所產生的混合音訊。所有媒體串流管道都會將其資料儲存至 [ Amazon Kinesis Video Streams ](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/what-is-kinesis-video.html)(KVS)。如需詳細資訊，請參閱 [使用 Amazon Chime SDK 建立媒體串流管道](create-media-stream-pipeline.md)。

您建立的管道取決於您使用的命名空間。如果您使用 `Chime` 命名空間，您只能建立媒體擷取管道。如果您使用 `ChimeSdkMediaPipelines` 命名空間，也可以建立媒體串連和媒體即時連接器管道，並使用合成功能。如果您想要遷移到 `ChimeSdkMediaPipelines` 命名空間，請參閱 [遷移至 Amazon Chime SDK 媒體管道命名空間](migrate-pipelines.md)。

# 了解作用中 Amazon Chime SDK 媒體管道的預設限制
<a name="media-pipelines-limits"></a>

下表列出每個區域中作用中媒體管道的預設限制。每種管道類型都會計入限制。如果您超過任何區域的限制，[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaCapturePipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaCapturePipeline.html)、 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaConcatenationPipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaConcatenationPipeline.html)和 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaLiveConnectorPipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaLiveConnectorPipeline.html) APIs 將擲回**資源限制超過例外**狀況。

您可以使用 AWS 主控台中的 **Service Quotas** 頁面來調整作用中管道限制，也可以聯絡[客戶支援代表](https://docs.aws.amazon.com/awssupport/latest/user/getting-started.html)。如需 Amazon Chime SDK 會議限制的詳細資訊，請參閱 [Amazon Chime SDK 的配額](meetings-sdk.md#mtg-limits)。


| 區域 | 預設作用中管道限制 | 
| --- | --- | 
| us-east-1 | 100 | 
| us-west-2 | 10 | 
| ap-northeast-1 | 10 | 
| ap-northeast-2 | 10 | 
| ap-south-1 | 10 | 
| ap-southeast-1 | 10 | 
| ap-southeast-2 | 10 | 
| ca-central-1 | 10 | 
| eu-central-1 | 10 | 
| eu-west-2 | 10 | 

# 遷移至 Amazon Chime SDK 媒體管道命名空間
<a name="migrate-pipelines"></a>

您可以使用 `ChimeSdkMediaPipelines` 命名空間來處理任何可用 AWS 區域中的媒體管道 API 端點。如果您剛開始使用 Amazon Chime SDK，請使用此命名空間。如需區域的詳細資訊，請參閱本指南[Amazon Chime SDK 的可用 AWS 區域](sdk-available-regions.md)中的 。

使用 [Amazon Chime](https://docs.aws.amazon.com/chime/latest/APIReference/API_Operations_Amazon_Chime.html) 命名空間的現有應用程式應計劃遷移到專用命名空間。

**Topics**
+ [遷移管道的原因](#pipeline-migration-reasons)
+ [遷移管道之前](#migration-prerequisites)

## 遷移管道的原因
<a name="pipeline-migration-reasons"></a>

基於下列原因，建議您遷移至 `ChimeSdkMediaPipelines` 命名空間：

**API 端點的選擇**  
Amazon Chime SDK Media Capture 命名空間是唯一可在任何區域中使用 API 端點的 API 命名空間。如需區域的詳細資訊，請參閱[Amazon Chime SDK 的可用 AWS 區域](sdk-available-regions.md)。如果您想要使用 以外的 API 端點`us-east-1`，則必須使用 `ChimeSdkMediaPipelines` 命名空間。如需目前端點的詳細資訊，請參閱本指南[API 映射](migrate-from-chm-namespace.md#name-end-map)中的 。

**更新和新的媒體管道 APIs**  
我們只會在`ChimeSdkMediaPipelines`命名空間中新增或更新媒體管道 APIs。

## 遷移管道之前
<a name="migration-prerequisites"></a>

遷移之前，請注意命名空間之間的差異。下表列出並說明它們。


| 項目 | 媒體管道命名空間 | Chime 命名空間 | 
| --- | --- | --- | 
|  命名空間名稱  |  ChimeSdkMediaPipelines  |  Chime  | 
|  區域  |  多個  |  僅限 us-east-1  | 
|  端點  |  https://media-pipelines-chime.*region*.amazonaws.com  |  https://service.chime.aws.amazon.com  | 
|  服務主體  |  mediapipelines.chime.amazonaws.com  |  chime.amazonaws.com  | 
|  API  |  僅限媒體管道APIs   |  Amazon Chime 媒體管道和其他部分的 APIs   | 
|  會議  |  `us-west-2`、 `ap-southeast-1`和 `eu-central-1`區域中的媒體管道僅適用於在 Amazon Chime SDK Meetings 命名空間中建立的會議。`us-east-1` 區域中的媒體管道可與任一命名空間中任何會議端點所建立的會議搭配使用。  |  媒體管道可與任一命名空間中任何會議端點建立的會議搭配使用。  | 
| 預設作用中媒體管道 | us-east-1 區域中為 100，us-west-2、ap-southeast-1 和 eu-central-1 區域中為 10。 | 僅限 us-east-1 中的 100。 | 
|  服務連結角色  |  AWSServiceRoleForAmazonChimeSDKMediaPipelines  |     | 
|  標籤  |  可用性  |  不適用於媒體管道 APIs。  | 
| CloudTrail 事件來源 | chime-sdk-media-pipelines.amazonaws.com | https：//chime.amazonaws.com。 | 
| 媒體即時連接器 | 可用性 |  不適用於媒體管道 APIs。  | 
| 合成 | 可用性 |  不適用於媒體管道 APIs。  | 
| 串連 | 可用性 | 不可用。 | 

下列清單提供有關 Chime 和 AWS ChimeSdkMediaPipelines 命名空間差異的詳細資訊。

**命名空間名稱**  
Amazon Chime SDK 命名空間使用`AWS.Chime`正式名稱。Amazon Chime SDK 媒體管道命名空間使用`AWS.ChimeSDKMediaPipelines`正式名稱。名稱的精確格式因平台而異。  
例如，Node.js 程式碼的這行會處理`chime`命名空間：  

```
const chimeMediaPipelines = AWS.Chime();
```
若要遷移至 Media Pipelines SDK 命名空間，請使用新的命名空間和端點區域更新該程式碼。  

```
const chimeMediaPipelines = AWS.ChimeSDKMediaPipelines({ region: "eu-central-1" });
```

**區域**  
Amazon Chime 命名空間僅處理 US-EAST-1 區域中的 API 端點。Amazon Chime SDK Media Pipelines 命名空間可處理任何區域中的 Amazon Chime SDK 媒體管道 API 端點。如需媒體管道區域的最新清單，請參閱本指南[Amazon Chime SDK 的可用 AWS 區域](sdk-available-regions.md)中的 。

**端點**  
若要修改媒體擷取管道，您必須使用您建立管道的相同端點。例如，如果您透過 eu-central-1 中的端點建立管道，則必須使用 eu-central-1 與該管道互動。如需目前端點的詳細資訊，請參閱本指南[API 映射](migrate-from-chm-namespace.md#name-end-map)中的 。

**服務主體**  
[Amazon Chime SDK 媒體管道](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Meetings.html)命名空間使用新的服務主體：`mediapipelines.chime.amazonaws.com`。如果您有授予服務存取權的 Amazon S3 儲存貯體或其他 IAM 政策，您需要更新這些政策，以授予新服務主體存取權。  
例如，當您建立媒體管道時，必須將 中列出的政策許可新增至[為 Amazon Chime SDK 媒體擷取管道建立 Amazon S3 儲存貯體](create-s3-bucket.md)新的服務主體。如需政策的詳細資訊，請參閱《IAM 使用者指南》中的 [ AWS JSON 政策元素：主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。

**API**  
Amazon Chime SDK 媒體管道命名空間僅包含建立和管理媒體管道APIs。Amazon Chime 命名空間包含媒體管道、會議和 Amazon Chime 服務其他部分的 APIs。

**會議**  
IAD 區域中的媒體管道可與任何具有任一命名空間的會議端點所建立的會議搭配使用。

**服務連結角色**  
僅適用於 Amazon Chime SDK Media Pipelines 命名空間。建立 *AWSServiceRoleForAmazonChimeSDKMediaPipelines* 角色。

**標籤**  
[Amazon Chime SDK 媒體管道](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Meetings.html)命名空間支援標籤。該角色在呼叫具有一或多個標籤的 [CreateMediaCapturePipeline](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaCapturePipeline.html) 或 [CreateMediaLiveConnectorPipeline](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaLiveConnectorPipeline.html) APIs 時，必須具有呼叫 `TagResource`操作的許可。

# 了解 Amazon Chime SDK 媒體管道的建立
<a name="create-pipeline"></a>

您可以遵循多步驟程序來建立 Amazon Chime SDK 媒體管道，也可以建立多種管道類型。下列清單概述了建立程序，並提供建立各種管道的詳細資訊連結。
+ 建立 Amazon S3 儲存貯體。您必須在與會議相同的區域中建立儲存貯 AWS 體。如需詳細資訊，請參閱 [為 Amazon Chime SDK 媒體擷取管道建立 Amazon S3 儲存貯體](create-s3-bucket.md)。
+ 建立名為 的服務連結角色`AWSServiceRoleForAmazonChimeSDKMediaPipelines`。這可讓媒體管道代表您存取會議。如需詳細資訊，請參閱 [為 Amazon Chime SDK 媒體管道建立服務連結角色](create-pipeline-role.md)。
+ 建立具有與 [Amazon Chime SDK 媒體管道 APIs ](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Media_Pipelines.html)互動足夠許可的 IAM 角色。若要建立該角色，建議您從 IAM 主控台新增 [AmazonChimeSDK](https://docs.aws.amazon.com/chime-sdk/latest/ag/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-chime-sdk) 受管政策。政策包含必要的 APIs。

  您的 IAM 角色也必須具有在所有 資源上呼叫 Amazon S3 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html) API 的許可。下列範例顯示執行此作業的典型政策。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Action": "s3:GetBucketPolicy",
              "Effect": "Allow",
              "Resource": "*"
          }
      ]
  }
  ```

------

取得這些項目後，請參閱這些主題，以取得建立管道的相關資訊。
+ [為 Amazon Chime SDK 會議建立媒體擷取管道](capture-pipe-config.md)
+ [為 Amazon Chime SDK 會議建立媒體串連管道](create-concat-pipe.md)
+ [為 Amazon Chime SDK 會議建立媒體即時連接器管道](connector-pipe-config.md)
+ [使用 Amazon Chime SDK 建立媒體串流管道](create-media-stream-pipeline.md)

# 為 Amazon Chime SDK 會議建立媒體擷取管道
<a name="capture-pipe-config"></a>

媒體擷取管道會擷取音訊、影片和內容共用串流，以及會議事件和資料訊息。所有媒體擷取管道都會將其資料儲存至您建立的 [Amazon Simple Storage Service](https://aws.amazon.com/s3/) (S3) 儲存貯體。您可以為每個 Amazon Chime SDK 會議建立一個媒體擷取管道。

下列各節說明如何建立媒體擷取管道。請按照所列順序參閱。

**Topics**
+ [為 Amazon Chime SDK 媒體擷取管道建立 Amazon S3 儲存貯體](create-s3-bucket.md)
+ [為 Amazon Chime SDK 媒體擷取管道的 Amazon S3 儲存貯體啟用伺服器端加密](sse-kms.md)
+ [使用 AWS KMS 金鑰啟用物件層級伺服器端加密](using-kms-keys-for-encryption.md)
+ [建立 Amazon Chime SDK 媒體擷取管道](create-capture-pipe.md)
+ [使用 Amazon Chime SDK 媒體擷取成品](artifacts.md)
+ [設定 Amazon Chime SDK 媒體擷取管道的音訊資料夾](configure-audio.md)
+ [設定 Amazon Chime SDK 媒體擷取管道的視訊資料夾](configure-video.md)
+ [了解 Amazon Chime SDK 媒體擷取管道的資料通道資料夾中的訊息](data-channel.md)
+ [了解 Amazon Chime SDK 媒體擷取管道的 Amazon S3 儲存貯體資料夾結構](capture-folder-structure.md)
+ [了解 Amazon Chime SDK 媒體擷取管道的會議事件檔案](meeting-events.md)
+ [了解 Amazon Chime SDK 媒體擷取管道的轉錄檔案](transcription-messages.md)
+ [串連 Amazon Chime SDK 媒體擷取管道的資料串流](concatenate-streams.md)

# 為 Amazon Chime SDK 媒體擷取管道建立 Amazon S3 儲存貯體
<a name="create-s3-bucket"></a>

您可以使用 Amazon S3 主控台的 AWS SDKs 或 AWS CLI 來建立 Amazon S3 儲存貯體。如需詳細資訊，請參閱《*Amazon Simple Storage Service (S3) 使用者指南*》中的[建立儲存貯](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)體。

媒體擷取管道的 Amazon S3 儲存貯體必須屬於與 Amazon Chime SDK 會議相同的 AWS 帳戶。此外，您必須將 `s3:PutObject`和 `s3:PutObjectAcl`許可授予 Amazon Chime SDK 服務主體 [mediapipelines.chime.amazonaws.com](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)：//。您可以使用 Amazon S3 主控台或 AWS Command Line Interface () 來執行此操作AWS CLI。Amazon S3 儲存貯體必須屬於其中一個可用的 [Amazon Chime SDK 媒體區域](https://docs.aws.amazon.com/chime-sdk/latest/dg/sdk-available-regions.html)。

**注意**  
請務必將政策新增至 IAM 使用者，以授予對儲存貯體的存取權。此外，如果您使用預設 AWS 停用的區域，則必須在該區域中具有 Amazon S3 儲存貯體。  
根據預設，AWS 會停用下列區域，且您無法在其中託管會議資源，直到您啟用它們：  
非洲 (開普敦)
亞太地區 (香港)
亞太地區 (雅加達)
歐洲 (米蘭)
Middle East (Bahrain)
如果您使用其中一個區域，則必須有 Amazon S3 儲存貯體。即使您使用 Amazon S3 APIs 與預設未封鎖且已有儲存貯體的區域進行通訊，這也適用。如需啟用封鎖區域的詳細資訊，請參閱 [AWS 一般參考中的管理 AWS 區域](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html)。 **

建立儲存貯體後，請記錄其 ARN。您可以使用它來建立媒體擷取管道。

下列範例顯示 Amazon S3 儲存貯體政策。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "AWSChimeMediaCaptureBucketPolicy",
    "Statement": [
        {
            "Sid": "AWSChimeMediaCaptureBucketPolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "mediapipelines.chime.amazonaws.com"
            },
            "Action": [ "s3:PutObject", "s3:PutObjectAcl" ],
            "Resource": "arn:aws:s3:::Bucket_Name/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                "aws:SourceArn": "arn:aws:chime:*:123456789012:*"
                }
            }
        }
    ]
}
```

------

# 為 Amazon Chime SDK 媒體擷取管道的 Amazon S3 儲存貯體啟用伺服器端加密
<a name="sse-kms"></a>

若要啟用 Amazon Simple Storage Service (Amazon S3) 儲存貯體的伺服器端加密，您可以使用以下類型的加密金鑰：
+ Amazon S3 受管金鑰
+ Key AWS Management Service (KMS) 中的客戶受管金鑰
**注意**  
Key Management Service 支援兩種類型的金鑰：客戶受管金鑰和 AWS 受管金鑰。Amazon Chime SDK 會議僅支援客戶受管金鑰。

## 使用 Amazon S3 受管金鑰
<a name="s3-keys"></a>

您可以使用 Amazon S3 主控台、CLI 或 REST API 來啟用 Amazon S3 儲存貯體的伺服器端加密。在這兩種情況下，選擇 **Amazon S3 金鑰**做為加密金鑰類型。不需要進一步的動作。當您使用 儲存貯體進行媒體擷取時，成品會在伺服器端上傳和加密。如需詳細資訊，請參閱《[Amazon S3 使用者指南》中的指定 Amazon S3 加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/specifying-s3-encryption.html)。 *Amazon S3 * 

## 使用您擁有的金鑰
<a name="customer-key"></a>

若要使用您管理的金鑰啟用加密，您需要使用客戶受管金鑰啟用 Amazon S3 儲存貯體的伺服器端加密，然後將陳述式新增至金鑰政策，以允許 Amazon Chime 使用金鑰並加密任何上傳的成品。

1. 在 KMS 中建立客戶受管金鑰。如需這麼做的相關資訊，請參閱《*Amazon S3 使用者指南*》中的[使用 AWS KMS (SSE-KMS) 指定伺服器端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/specifying-kms-encryption.html)。

1. 將陳述式新增至金鑰政策，允許 `GenerateDataKey`動作產生金鑰以供 Amazon Chime SDK 服務主體 使用`mediapipelines.chime.amazonaws.com`。

   此範例顯示典型的 陳述式。

   ```
   ...
   {
       "Sid": "MediaPipelineSSEKMS",
       "Effect": "Allow",
       "Principal": {
           "Service": "mediapipelines.chime.amazonaws.com"
       },
       "Action": "kms:GenerateDataKey",
       "Resource": "*",
       "Condition": {
           "StringEquals": {
              "aws:SourceAccount": "Account_Id"
           },
           "ArnLike": {
               "aws:SourceArn": "arn:aws:chime:*:Account_Id:*"
           }
       }
   }
   ...
   ```

1. 如果您使用媒體串連管道，請將陳述式新增至金鑰政策，`mediapipelines.chime.amazonaws.com`以允許 Amazon Chime SDK 服務主體 使用 `kms:Decrypt`動作。

1. 設定 Amazon S3 儲存貯體以使用 金鑰啟用伺服器端加密。

# 使用 AWS KMS 金鑰啟用物件層級伺服器端加密
<a name="using-kms-keys-for-encryption"></a>

媒體擷取管道和媒體串連管道可以使用 AWS Key Management Service (AWS KMS) 客戶受管金鑰，為 Amazon S3 儲存貯體中的個別物件啟用伺服器端加密 (SSE)。若要設定此項目，您必須使用 [CreateMediaCapturePipeline](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaCapturePipeline.html) API 呼叫。媒體串連管道將使用相關聯媒體擷取管道的伺服器端加密參數。

若要使用客戶受管金鑰為個別物件啟用 SSE AWS KMS （物件層級 SSE)，您必須在 [CreateMediaCapturePipeline](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaCapturePipeline.html) API 呼叫`SinkIamRoleArn`期間提供 `SseAwsKeyManagementParams`結構和 ：

1. 使用 `SseAwsKeyManagementParams` 結構中的 `AwsKmsKeyId` 參數來指定 AWS KMS 金鑰。您可以使用金鑰的 ID、ARN 或別名來指定金鑰 ID。

1. 使用 `SinkIamRoleArn` 參數指定 IAM 角色來存取 AWS KMS 金鑰和目的地 Amazon S3 儲存貯體。

1. 或者，您可以使用 `SseAwsKeyManagementParams`結構中的 `AwsKmsEncryptionContext` 參數來指定要使用的加密內容，以及增強安全性的 AWS KMS 金鑰成品。

**注意**  
`AwsKmsKeyId` 和 `SinkIamRoleArn` 參數是相互依存的。當兩者都存在且有效時，媒體擷取管道將擔任 角色，並將每個成品放入具有指定 AWS KMS 金鑰的指定 Amazon S3 儲存貯體接收器。[CreateMediaConcatenationPipeline](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaConcatenationPipeline.html) API 呼叫沒有新參數，但如果指定，將使用上述參數。如果您打算串連成品，請確定您的資源組態已如下[Configuration](#using-kms-keys-for-encryption-config)節所述進行設定，並且會隨著時間持續存在。

## Configuration
<a name="using-kms-keys-for-encryption-config"></a>

`SinkIamRoleArn` 必須有與主體相同的許可和存取權，才能將成品放入 Amazon S3 儲存貯體。如需 Amazon S3 儲存貯體中預期預設許可的詳細資訊，請參閱[為 Amazon Chime SDK 媒體擷取管道建立 Amazon S3 儲存貯體](https://docs.aws.amazon.com/chime-sdk/latest/dg/create-s3-bucket.html)。若要為個別物件啟用 SSE，您的 Amazon S3 儲存貯體必須允許使用 指定的 IAM 角色`SinkIamRoleArn`執行您從呼叫 IAM 身分預期的相同動作集。您可以將下列主體新增至 Amazon S3 儲存貯體許可政策，以達到此目的。

```
...
"Principal": {
    ...
    "AWS": "arn:aws:iam::<YOUR_ACCOUNT_ID>;:role/<SINK_IAM_ROLE_NAME>"
    ...
},
...
```

`AwsKmsKeyId` 應指向允許 執行 `SinkIamRoleArn`的金鑰`GenerateDataKey`。如果將使用媒體串連管道， AWS KMS 金鑰也應該允許使用 `Decrypt`動作。請參閱以下範例。

**注意**  
資源設定為使用萬用字元 `“*”`，在這種情況下， AWS KMS 金鑰政策表示「本身」。

```
{
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::<YOUR_ACCOUNT_ID>:role/<YOUR_CUSTOMER_ROLE_ID>"
    },
    "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
    ],
    "Resource": "*"
}
```

`SinkIamRoleArn` 角色必須具有信任關係，允許服務擔任該角色。請參閱以下範例。

```
{
    "Effect": "Allow",
    "Principal": {
        "Service": "mediapipelines.chime.amazonaws.com"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
        "StringEquals": {
            "aws:SourceAccount": "<YOUR_ACCOUNT_ID>"
        },
        "ArnLike": {
            "aws:SourceArn": "arn:aws:chime:*:<YOUR_ACCOUNT_ID>:*"
        }
    }
}
```

`SinkIamRoleArn` 應具有下列媒體擷取管道的最低許可政策。請參閱以下範例。

```
{
    "Effect": "Allow",
    "Action": "kms:GenerateDataKey",
    "Resource": "arn:aws:kms:<KMS_KEY_REGION>:<KMS_KEY_ACCOUNT_ID>:key/<MS_KEY_ID>",
    "Condition": {
        "StringEquals": {
            "aws:SourceAccount": "<YOUR_ACCOUNT_ID>"
        },
        "ArnLike": {
            "aws:SourceArn": "arn:aws:chime:*:<YOUR_ACCOUNT_ID>:*"
        }
    }
},
{
    "Effect": "Allow",
    "Action": ["s3:PutObject", "s3:PutObjectAcl"],
    "Resource": "arn:aws:s3:::<YOUR_DEDICATED_KMS_BUCKET_ID>/*",
    "Condition": {
        "StringEquals": {
            "aws:SourceAccount": "<YOUR_ACCOUNT_ID>"
        },
        "ArnLike": {
            "aws:SourceArn": "arn:aws:chime:*:<YOUR_ACCOUNT_ID>:*"
        }
    }
}
```

此外，必須允許呼叫者傳遞`SinkIamRoleArn`至 服務。如果發起人沒有此類許可，則應明確新增。請參閱以下範例。

```
{
    "Effect": "Allow",
    "Action": "iam:PassRole",
    "Resource": "<SINK_IAM_ROLE_ARN>",
    "Condition": {
        "ArnLike": {
            "iam:AssociatedResourceArn": "arn:aws:chime:*:<YOUR_ACCOUNT_ID>:media-pipeline/*"
        },
        "StringEquals": {
            "iam:PassedToService": "mediapipelines.chime.amazonaws.com"
        }
    }
}
```

## 媒體串連實作
<a name="media-concatenation-implementatoin"></a>

如果您打算在媒體擷取後使用媒體串連管道，請參閱 [建置 Amazon Chime SDK 媒體串連管道](create-concat-pipe-steps.md)以了解所需的許可。若要讓管道使用物件層級 SSE 的 AWS KMS 金鑰，必須擴展 AWS KMS 金鑰和 Amazon S3 儲存貯體的`SinkIamRoleArn`許可 （允許的動作）。請參閱以下範例。

```
...
{
    ...
    {
        ...
        "Action": ["kms:GenerateDataKey","kms:Decrypt"]
        "Resource": "arn:aws:kms:<KMS_KEY_REGION>:<KMS_KEY_ACCOUNT_ID>:key/<KMS_KEY_ID>",
        ...
    }
    ...
    {
        "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:ListBucket"],
        "Resource": "arn:aws:s3:::<YOUR_DEDICATED_KMS_BUCKET_ID>/*",
    }
    ...
}
...
```

# 建立 Amazon Chime SDK 媒體擷取管道
<a name="create-capture-pipe"></a>

建立和設定 Amazon S3 儲存貯體後，您可以建立媒體擷取管道。

**建立媒體擷取管道**
+ 呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaCapturePipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaCapturePipeline.html) API。

  使用儲存貯體 ARN 做為 `SinkArn` 參數。

成功之後，Amazon Chime SDK 會建立加入並擷取會議的出席者。

建立媒體擷取管道並設定其許可後，您可以建立媒體串連管道，將 5 秒的媒體區塊串連至單一檔案。如需詳細資訊[為 Amazon Chime SDK 會議建立媒體串連管道](create-concat-pipe.md)，請參閱本節稍後的 。

# 使用 Amazon Chime SDK 媒體擷取成品
<a name="artifacts"></a>

在 Amazon Chime SDK 會議期間，媒體擷取管道會建立下列類型的成品。
+ 音訊
+ 影片
+ 資料管道訊息
+ 會議事件
+ 轉錄訊息

管道會在 Amazon S3 儲存貯體中的一組資料夾中建立成品，而且您可以設定音訊和視訊資料夾來限制特定類型的成品。下列各節說明資料夾結構、如何設定資料夾、如何設定 Amazon S3 儲存貯體的許可，以及如何串連成品檔案。

# 設定 Amazon Chime SDK 媒體擷取管道的音訊資料夾
<a name="configure-audio"></a>

音訊資料夾包含混合音訊串流的 5 秒 MP4 檔案，這表示它們包含來自所有出席者的音訊，以及作用中發言者的影片。資料夾包含整個會議的檔案。您可以視需要將 資料夾設定為僅包含音訊成品。每個檔案名稱都包含 *yyyy-mm-dd-hour-min-seconds-milleseconds* 時間戳記。時間戳記以 UTC 為單位，並標記開始時間。您可以將 資料夾設定為僅包含音訊成品。

```
"ArtifactsConfiguration": { 
         "Audio": { 
            "MuxType": "AudioOnly"
         },
         "Content": {
            "State": "Disabled"
         },
         "Video": {
            "State": "Disabled"
         }
      }
```

# 設定 Amazon Chime SDK 媒體擷取管道的視訊資料夾
<a name="configure-video"></a>

影片資料夾包含 5 秒的 MP4 檔案，其中包含影片串流，以及 API 請求中指定的內容共用串流。每個檔案名稱都包含 <yyyy-mm-dd-hour-min-seconds-milleseconds>-<attendeeID> 時間戳記與出席者 ID。內容共用影片區塊會附加為 <yyyy-mm-dd-hour-min-seconds-milleseconds>-<attendeeID>\$1content.mp4。您可以將 資料夾設定為僅包含視訊成品。

```
"ArtifactsConfiguration": { 
         "Audio": { 
            "MuxType": "AudioOnly"
         },
         "Content": {
            "State": "Disabled"
         },
         "Video": {
            "MuxType": "VideoOnly"
            "State": "Enabled"
         }
      }
```

# 了解 Amazon Chime SDK 媒體擷取管道的資料通道資料夾中的訊息
<a name="data-channel"></a>

資料通道資料夾包含 .txt 格式的資料訊息，每個訊息都是 JSON 物件。所有組態選項都會顯示訊息。檔案名稱包含 *yyyy-mm-dd-hour-min-seconds-milleseconds* 時間戳記。此範例顯示訊息中的資料欄位。

```
{
    "Timestamp": "string", 
    "Topic": "string", 
    "Data": "string", 
    "SenderAttendeeId": "string"
}
```

# 了解 Amazon Chime SDK 媒體擷取管道的 Amazon S3 儲存貯體資料夾結構
<a name="capture-folder-structure"></a>

媒體擷取管道的 Amazon S3 儲存貯體使用此資料夾結構。

```
S3 bucket path/
  audio
  video  
  data-channel
  meeting-events
  transcription-messages
```

# 了解 Amazon Chime SDK 媒體擷取管道的會議事件檔案
<a name="meeting-events"></a>

會議事件資料夾包含 .txt 格式的會議事件，每個事件都是 JSON 物件。所有組態選項都會顯示訊息。檔案名稱包含 <yyyy-mm-dd-hour-min-seconds-milleseconds> 時間戳記。此範例顯示典型事件檔案中的欄位和資料。

```
{
    "Timestamp": "string",
    "EventType": "AttendeeJoined | AttendeeLeft | AttendeeVideoJoined | AttendeeVideoLeft | ActiveSpeaker | CaptureStarted | CaptureEnded  | AudioTrackMute | AudioTrackUnmute",
    "EventParameters": {
        # ...
    }
}
```

# 了解 Amazon Chime SDK 媒體擷取管道的轉錄檔案
<a name="transcription-messages"></a>

轉錄訊息資料夾包含 .txt 格式的轉錄檔案。不過， 資料夾只會在您啟用即時轉錄時接收檔案。如需啟用即時轉錄的詳細資訊，請參閱 [使用 Amazon Chime SDK 即時轉錄](meeting-transcription.md)。

資料夾包含所有部分和完整的轉錄訊息，每個訊息都是 JSON 物件。檔案名稱包含 <yyyy-mm-dd-hour-min-seconds-milleseconds> 時間戳記。您可以在 中查看轉錄檔案範例[處理收到的 Amazon Chime SDK 即時文字記錄事件](delivery-examples.md)。

# 串連 Amazon Chime SDK 媒體擷取管道的資料串流
<a name="concatenate-streams"></a>

**注意**  
若要自動化串連媒體擷取成品的程序，請參閱本指南[為 Amazon Chime SDK 會議建立媒體串連管道](create-concat-pipe.md)中的 。

此範例使用 ffmpeg 將視訊或音訊檔案串連至單一 mp4 檔案。首先，建立包含所有輸入檔案的 filelist.txt 檔案。使用此格式：

```
file 'input1.mp4'
file 'input2.mp4'
file 'input3.mp4'
```

接著，使用此命令來串連輸入檔案：

```
ffmpeg -f concat -i filelist.txt -c copy output.mp4
```

如需媒體串連管道的詳細資訊，請參閱本指南[為 Amazon Chime SDK 會議建立媒體串連管道](create-concat-pipe.md)中的 。

# 為 Amazon Chime SDK 會議建立媒體串連管道
<a name="create-concat-pipe"></a>

您可以使用媒體串連管道串連媒體擷取管道產生的成品 （檔案）。

媒體擷取管道會壓縮媒體串流，並將這些成品存放在 Amazon S3 儲存貯體中，以擷取會議的內容。媒體擷取管道會建立下列類型的成品：
+ 音訊
+ 影片
+ 內容共用
+ 資料頻道訊息
+ 轉錄訊息
+ 會議事件
+ 合成視訊，表示內容共用和網格中顯示為視訊圖磚的多個視訊串流。

媒體串連管道可讓您將每種類型的成品串連至單一檔案，然後將這些較大的檔案存放在 Amazon S3 儲存貯體中。您可以建立媒體串連管道，而無需等待媒體擷取事件結束，但串連管道只會在擷取管道停止時開始串連。

**注意**  
媒體擷取管道、媒體串連管道和 Amazon S3 儲存貯體必須位於相同的 AWS 帳戶中。

**Topics**
+ [Amazon Chime SDK 串連管道架構](concat-architecture.md)
+ [建置 Amazon Chime SDK 媒體串連管道](create-concat-pipe-steps.md)
+ [了解 Amazon Chime SDK 串連管道的 Amazon S3 儲存貯體資料夾結構](concat-folder-structure.md)

# Amazon Chime SDK 串連管道架構
<a name="concat-architecture"></a>

下圖顯示媒體串連管道的架構。

![\[顯示媒體串連管道架構的圖表。\]](http://docs.aws.amazon.com/zh_tw/chime-sdk/latest/dg/images/concatenation-pipe-architecture-2.png)


在圖表中，在收到[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaCapturePipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaCapturePipeline.html)請求時，媒體管道控制平面會在媒體管道資料平面中啟動媒體擷取管道。然後，資料平面會每 5 秒將擷取的區塊推送至擷取儲存貯體。收到[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaConcatenationPipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaConcatenationPipeline.html)請求時，媒體管道控制平面會等待指定的媒體擷取管道完成，然後在媒體管道資料平面中啟動媒體串連管道。然後，資料平面會讀取儲存貯體中擷取的區塊，並將串連成品推送至串連儲存貯體。

# 建置 Amazon Chime SDK 媒體串連管道
<a name="create-concat-pipe-steps"></a>

您可以遵循多步驟程序來建立 Amazon Chime SDK 媒體串連管道。下列步驟說明 程序。

1. 建立 Amazon S3 儲存貯體以用作媒體擷取管道的資料接收器，然後設定儲存貯體政策。如需有關為 Amazon S3 儲存貯體啟用伺服器端加密的資訊，請參閱本指南中的[啟用 Amazon S3 儲存貯體的伺服器端加密](https://docs.aws.amazon.com/chime-sdk/latest/dg/sse-kms.html)。如果您建立了用於媒體擷取管道的 Amazon S3 儲存貯體，則必須將 `s3:GetObject`和 `s3:ListBucket`動作新增至該儲存貯體的政策。`s3:ListBucket` 動作需要儲存貯體的許可。其他動作需要儲存貯體中物件的許可。您必須使用兩個不同的 Amazon Resource Name (ARNs) 來指定儲存貯體層級和物件層級許可。

   下列範例顯示儲存貯體政策。視需要複製並貼上此範例。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "AWSChimeMediaCaptureBucketPolicy",
       "Statement": [
           {
               "Sid": "AWSChimeMediaCaptureBucketPolicy",
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "mediapipelines.chime.amazonaws.com"
                   ]
               },
               "Action": [
                   "s3:PutObject",
                   "s3:PutObjectAcl",
                   "s3:GetObject",
                   "s3:ListBucket"
               ],
               "Resource": [
                   "arn:aws:s3:::[Bucket-Name]/*",
                   "arn:aws:s3:::[Bucket-Name]"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:SourceAccount": "123456789012"
                   },
                   "ArnLike": {
                   "aws:SourceArn": "arn:aws:chime:*:123456789012:*"
                   }
               }
           }
       ]
   }
   ```

------

1.  建立 Amazon Amazon S3 儲存貯體以用作媒體串連管道的資料接收器，然後設定儲存貯體政策。如需有關為 Amazon S3 儲存貯體啟用伺服器端加密的資訊，請參閱本指南中的[啟用 Amazon S3 儲存貯體的伺服器端加密](https://docs.aws.amazon.com/chime-sdk/latest/dg/sse-kms.html)。

   下列範例顯示 政策。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "AWSChimeMediaConcatenationBucketPolicy",
       "Statement": [
           {
               "Sid": " AWSChimeMediaConcatenationBucketPolicy ",
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "mediapipelines.chime.amazonaws.com"
                   ]
               },
               "Action": [
                   "s3:PutObject",
                   "s3:PutObjectAcl",
                   "s3:GetObject",
                   "s3:ListBucket"
               ],
               "Resource": [
                   "arn:aws:s3:::[Bucket-Name]/*",
                   "arn:aws:s3:::[Bucket-Name]"
               ],
               "Condition": {
                   "StringEquals": {
                   "aws:SourceAccount": "123456789012"
                   },
                   "ArnLike": {
                   "aws:SourceArn": "arn:aws:chime:*:123456789012:*"
                   }
               }
           }
       ]
   }
   ```

------
**注意**  
您可以使用單一 Amazon S3 儲存貯體進行媒體擷取和媒體串連管道。不過，如果您這樣做，則必須將 `s3:GetObject`和 `s3:ListBucket`許可新增至步驟 2 中顯示的媒體串連儲存貯體政策。如果您不希望串連儲存貯體政策具有這些許可，請為每個管道建立單獨的儲存貯體。

1. 使用 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaCapturePipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaCapturePipeline.html) API 建立媒體擷取管道。為此，請取得管道的 ARN。如需取得 ARN 的資訊，請參閱 [了解 Amazon Chime SDK 媒體管道的建立](create-pipeline.md)。您可以在下一個步驟中使用 ARN。

1. 使用 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaConcatenationPipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaConcatenationPipeline.html) API 建立串連管道。

   下列範例顯示請求內文。*路徑*欄位是選用的，預設為串連管道的 ID。
**注意**  
您必須使用過去 30 天內`MediaPipelineArn`建立的 。

   ```
   {
       "Sources": [
           {
               "Type": "MediaCapturePipeline",
               "MediaCapturePipelineSourceConfiguration": {
                   "MediaPipelineArn": "Media_Pipeline_Arn",  //must be <30 days old
                   "ChimeSdkMeetingConfiguration": {
                       "ArtifactsConfiguration": {
                           "Audio": {
                               "State": "Enabled"
                           },
                           "Video": {
                               "State": "Enabled | Disabled"
                           },
                           "Content": {
                               "State": "Enabled | Disabled"
                           },
                           "DataChannel": {
                               "State": "Enabled | Disabled"
                           },
                           "TranscriptionMessages": {
                               "State": "Enabled | Disabled"
                           },
                           "MeetingEvents": {
                               "State": "Enabled | Disabled"
                           },
                           "CompositedVideo": {
                               "State": "Enabled | Disabled"
                           }
                       }
                   }
               }
           }
       ],
       "Sinks": [
           {
               "Type": "S3Bucket",
               "S3BucketSinkConfiguration": {
                   "Destination": "arn:aws:s3:::[Bucket_Name]/[Path]"
               }
           }
       ]
   }
   ```

   串連會在擷取管道停止時啟動。串連管道會在完成串連後停止。

# 了解 Amazon Chime SDK 串連管道的 Amazon S3 儲存貯體資料夾結構
<a name="concat-folder-structure"></a>

媒體串連管道的 Amazon S3 儲存貯體使用此資料夾結構：

```
S3 bucket path/
  audio
  video
  composited-video
  data-channel
  meeting-events
  transcription-messages
```

**注意**  
如果您在建立媒體管道時指定字首，資料夾的路徑會變成*儲存貯體名稱*/*字首*。如果沒有字首，路徑會變成儲存*貯體名稱*/*媒體管道 ID*。您可以在 `S3BucketSinkConfiguration` 物件的 `Destination`欄位中指定字首。串連檔案名稱由媒體檔案的媒體*管道 ID*.mp4 和文字檔案的*媒體管道 ID*.txt 組成。

# 為 Amazon Chime SDK 會議建立媒體即時連接器管道
<a name="connector-pipe-config"></a>

下列各節列出並說明媒體即時連接器管道的即時傳訊通訊協定 (RTMP)、音訊和視訊設定。

**RTMP 設定**  
媒體即時連接器管道透過 TLS/SSL 連線支援 RTMP。目的地 URL 包含串流 URL 和串流金鑰。URLs 遵循以下格式：

`rtmp(s)://stream-server/stream-key`

下列範例示範如何連線至常見的串流平台。
+ **Amazon Interactive Video Service (IVS)** – rtmps：//a1b2c3d4e5f6.global-contribute.live-video.net：443/app/*IVS-stream-key*
+ **YouTube** – rtmps：//a.youtube.com/live2/*stream-key*
+ **Twitch** – rtmps：//live.twitch.tv/app/*primary-stream-key*

**重要**  
RTMPS 使用加密來協助確保未經授權的實體不會攔截串流。最佳實務是，當您需要額外的資料安全性時，請使用 RTMPS。

**音訊設定**  
媒體即時連接器管道支援下列音訊設定：
+ **轉碼器** – AAC
+ **取樣率** – 44100 Hz 或 48000 Hz。預設值為 44100Hz。
+ **頻道** – 單聲道或立體聲。預設值為單體。

**影片設定**  
媒體即時連接器管道使用 H264 編碼器。您可以在 1280x720 使用 HD，或在 1920x1080 使用 FHD。兩種解析度每秒使用 30 個影格，每兩秒使用一個關鍵影格。

**停止媒體即時連接器管道**  
作為停止媒體即時連接器管道的最佳實務，請呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_DeleteMediaPipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_DeleteMediaPipeline.html) API。在串流平台上結束串流，例如 IVS，並不會停止媒體即時連接器管道。

# 使用 Amazon Chime SDK 建立媒體串流管道
<a name="create-media-stream-pipeline"></a>

媒體串流管道會擷取會議中所有出席者的個別音訊，以及媒體串連管道所產生的混合音訊。所有媒體串流管道都會將其資料儲存至 [ Amazon Kinesis Video Streams ](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/what-is-kinesis-video.html)(KVS)。

您可以透過呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaPipelineKinesisVideoStreamPool.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaPipelineKinesisVideoStreamPool.html) API 來建立視訊串流。您可以為每個 Amazon Chime SDK 會議建立一個媒體串流管道。

**注意**  
如果會議使用選擇加入區域做為其 [MediaRegion](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_CreateMeeting.html#chimesdk-meeting-chime_CreateMeeting-request-MediaRegion)，KVS 串流必須位於相同的區域。例如，如果會議使用 `af-south-1`區域，則 KVS 串流也必須位於 中`af-south-1`。不過，如果會議使用 AWS 預設開啟的區域，KVS 串流可以在任何可用區域中，包括選擇加入區域。例如，如果會議使用 `ca-central-1`，KVS 串流可以位於 `eu-west-2`、`af-south-1`、 `us-east-1`或 Amazon Chime SDK 支援的任何其他區域中。  
若要了解會議使用 AWS 的區域，請呼叫 [GetMeeting](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_GetMeeting.html) API 並使用回應中的 [MediaRegion](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_CreateMeeting.html#chimesdk-meeting-chime_CreateMeeting-request-MediaRegion) 參數。  
如需選擇加入區域的詳細資訊，請參閱本指南[Amazon Chime SDK 的可用 AWS 區域](sdk-available-regions.md)中的 ，以及[《帳戶管理參考指南》中的指定您的帳戶可以使用 AWS 的區域](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html#rande-manage-enable.html)。 *AWS *

下列各節說明如何建立媒體串流管道。請按照所列順序參閱。

**Topics**
+ [為 Amazon Chime SDK 媒體串流管道建立 Kinesis Video Streams 集區](create-kvs-pool.md)
+ [Amazon Chime SDK 媒體串流管道 Kinesis Video Streams 集區的範例程式碼](pool-creation-code.md)
+ [建立 Amazon Chime SDK 媒體串流管道](create-stream-pipeline.md)
+ [Amazon Chime SDK 媒體串流管道的範例程式碼](pipeline-creation-code.md)
+ [針對 Amazon Chime SDK 媒體串流管道使用事件橋接通知](media-stream-event-bridge.md)
+ [使用 Amazon Chime SDK 媒體串流管道資料](media-stream-tips-tricks.md)

# 為 Amazon Chime SDK 媒體串流管道建立 Kinesis Video Streams 集區
<a name="create-kvs-pool"></a>

媒體串流管道的 Kinesis Video Streams (KVS) 集區必須屬於與 Amazon Chime SDK 會議相同的 AWS 帳戶。您可以透過呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaPipelineKinesisVideoStreamPool.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaPipelineKinesisVideoStreamPool.html) API 來建立 Kinesis Video Streams 集區。

下圖顯示媒體管道 Kinesis Video Streams 集區的架構。影像中的數字對應於下方的編號文字：

![\[圖表顯示建立 Kinesis Video Streams 集區的 API 呼叫。\]](http://docs.aws.amazon.com/zh_tw/chime-sdk/latest/dg/images/media-stream-pool-architecture.png)


在圖表中：

1. 您呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaPipelineKinesisVideoStreamPool.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaPipelineKinesisVideoStreamPool.html) API。

1. 媒體管道控制平面會代表您在帳戶中建立和管理 Kinesis Video Streams (KVS) 和集區。

KVS 集區操作是在集區中建立、更新和刪除串流的程序是非同步的。因此，Event Bridge 通知會使用 `Chime Media Pipeline Kinesis Video Pool State Change` 詳細資訊類型來傳達集區中串流的狀態。

您可以建立集區一次，並在不同的會議中重複使用。您也可以視需要建立不同的集區，並在不需要集區時將其刪除。

集區會根據並行呼叫爆量自動擴展。您可以刪除任何不需要的集區。

**注意**  
刪除集區時，您必須先等待集區完全刪除，才能刪除集區中的 KVS 串流。Event Bridge 通知會指出集區何時完全刪除。在使用集區的所有會議都結束後，就會發生這種情況。您也可以呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_GetMediaPipelineKinesisVideoStreamPool.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_GetMediaPipelineKinesisVideoStreamPool.html) API 來檢視指定 KVS 集`PoolId`區的 。  
當您叫用 Kinesis Video Streams [https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_DeleteStream.html](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_DeleteStream.html) API 時，您可以使用該命名字串來搜尋和刪除集區中的串流。您也可以呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_GetMediaPipelineKinesisVideoStreamPool.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_GetMediaPipelineKinesisVideoStreamPool.html) API 來檢視指定 KVS 集`PoolId`區的 。下一節中的範例說明如何進行。

# Amazon Chime SDK 媒體串流管道 Kinesis Video Streams 集區的範例程式碼
<a name="pool-creation-code"></a>

下列範例示範如何建立、更新、取得、列出和刪除 Kinesis Video Streams (KVS) 集區。展開每個區段以進一步了解。

## 匯入和常見變數
<a name="imports-variables"></a>

```
'''
Define imports and common variables
'''

import boto3
from uuid import uuid4
import json

client = boto3.client("chime-sdk-media-pipelines", region_name='us-east-1')
pool_name = 'MyDemoKvsPool'

def pretty_print_json(obj):
    print(json.dumps(obj, default=str, indent=4))
```

## CreateMediaPipelineKinesisVideoStreamPool
<a name="create-stream-sample"></a>

```
response = client.create_media_pipeline_kinesis_video_stream_pool(
        StreamConfiguration={
            'Region': 'us-east-1',
            'DataRetentionInHours': 24
        },
        PoolName=pool_name,
        ClientRequestToken=str(uuid4()),
        Tags=[
            {
                'Key': 'MyTagForAccessControl',
                'Value': 'SomeTagValue'
            },
        ]
)

pretty_print_json(response['KinesisVideoStreamPoolConfiguration'])
```

**輸出：**

```
{
    "PoolArn": "arn:aws:chime:us-east-1:account-ID:media-pipeline-kinesis-video-stream-pool/MyDemoKvsPool",
    "PoolName": "MyDemoKvsPool",
    "PoolId": "ChimeMediaPipelines-MyDemoKvsPool-1f4e1a69-e718-4884-bf92-8a393ac0405b",
    "PoolStatus": "CREATING",
    "StreamConfiguration": {
        "Region": "us-east-1",
        "DataRetentionInHours": 24
    },
    "CreatedTimestamp": "2023-10-13 01:26:09.979000+00:00",
    "UpdatedTimestamp": "2023-10-13 01:26:09.979000+00:00"
}
```

## GetMediaPipelineKinesisVideoStream
<a name="get-stream-sample"></a>

```
response = client.get_media_pipeline_kinesis_video_stream_pool(
        Identifier=pool_name
)

pretty_print_json(response['KinesisVideoStreamPoolConfiguration'])
```

**輸出：**

```
{
    "PoolArn": "arn:aws:chime:us-east-1:account-ID:media-pipeline-kinesis-video-stream-pool/MyDemoKvsPool",
    "PoolName": "MyDemoKvsPool",
    "PoolId": "ChimeMediaPipelines-MyDemoKvsPool-1f4e1a69-e718-4884-bf92-8a393ac0405b",
    "PoolStatus": "ACTIVE",
    "StreamConfiguration": {
        "Region": "us-east-1",
        "DataRetentionInHours": 24
    },
    "CreatedTimestamp": "2023-10-13 01:26:09.979000+00:00",
    "UpdatedTimestamp": "2023-10-13 01:26:09.979000+00:00"
}
```

## UpdateMediaPipelineKinesisVideoStream
<a name="update-stream-sample"></a>

```
response = client.update_media_pipeline_kinesis_video_stream_pool(
    Identifier=pool_name,
    StreamConfiguration={
        'DataRetentionInHours': 48
    }
)
pretty_print_json(response['KinesisVideoStreamPoolConfiguration'])
```

**輸出：**

```
{
    "PoolArn": "arn:aws:chime:us-east-1:account-ID:media-pipeline-kinesis-video-stream-pool/MyDemoKvsPool",
    "PoolName": "MyDemoKvsPool",
    "PoolId": "ChimeMediaPipelines-MyDemoKvsPool-d08c26ae-0336-4e2e-acdf-805a7d71b891",
    "PoolStatus": "UPDATING",
    "PoolSize": 40,
    "StreamConfiguration": {
        "Region": "us-east-1",
        "DataRetentionInHours": 48
    },
    "CreatedTimestamp": "2023-10-13 01:44:23.010000+00:00",
    "UpdatedTimestamp": "2023-10-13 01:44:28.486000+00:00"
}
```

## ListMediaPipelineKinesisVideoStream
<a name="list-stream-sample"></a>

```
list_of_pools = []
max_results = 100
next_token = None
while(True):
    if next_token:
        response = client.list_media_pipeline_kinesis_video_stream_pools(
            NextToken=next_token,
            MaxResults=max_results
        )
    else:
        response = client.list_media_pipeline_kinesis_video_stream_pools(
            MaxResults=max_results
        )

    list_of_pools.extend(response['KinesisVideoStreamPools'])
    next_token = response.get('NextToken')
    if not next_token:
        break
pretty_print_json(list_of_pools)
```

**輸出：**

```
[
    {
        "PoolName": "MyDemoKvsPool",
        "PoolId": "ChimeMediaPipelines-MyDemoKvsPool-6588e703-f046-4288-ba7f-0c03de76a6bb",
        "PoolArn": "arn:aws:chime:us-east-1:account-ID:media-pipeline-kinesis-video-stream-pool/MyDemoKvsPool"
    }
]
```

## DeleteMediaPipelineKinesisVideoStream
<a name="delete-stream-sample"></a>

```
client.delete_media_pipeline_kinesis_video_stream_pool(
    Identifier=pool_name
)
```

**輸出**：成功的`delete_media_pipeline_kinesis_video_stream_pool`請求沒有內文。

# 建立 Amazon Chime SDK 媒體串流管道
<a name="create-stream-pipeline"></a>

提示音媒體串流管道必須屬於與 Amazon Chime SDK 會議相同的 AWS 帳戶。您可以透過呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaStreamPipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaStreamPipeline.html) API 並指定來源和接收器來建立 Amazon Chime SDK 媒體串流管道。

下圖顯示 Amazon Chime SDK 媒體串流管道的架構。圖表中的數字對應至下方的編號文字。

![\[圖表顯示建立媒體串流集區的 API 呼叫。\]](http://docs.aws.amazon.com/zh_tw/chime-sdk/latest/dg/images/media-stream-pipe-architecture.png)


在圖表中：

1. 您呼叫 `CreateMediaStreamPipeline` API。在請求中，指定串流的來源和目的地。您要擷取個別音訊、混合音訊或兩者。在請求中包含 KVS 集區的 ARN。
   + 來源陣列包含 `SourceType`和 `SourceArn`。您必須使用 `ChimeSdkMeeting SourceType`。`SourceArn` 是 的 ARN`ChimeSdkMeeting`。
   + 接收器陣列包含 `SinkType`、`ReservedStreamCapacity`、 `SinkArn`和 `MediaStreamType`。我們僅支援 `KinesisVideoStreamPoolSinkType`。`SinkArn` 是 的 ARN`KinesisVideoStreamPool`。`MediaStreamType` 控制串流至接收器的媒體類型，可以是 `MixedAudio`或 `IndividualAudio`。 `MediaStreamType`會從 `ReservedStreamCapacity`設定為 配置的串流數目`KinesisVideoStreamPool`。
     + 如果您想要同時串流 `IndividualAudio`和 `MixedAudio`，請在`Sinks`陣列中建立兩個接收物件，一個用於 `IndividualAudio`，另一個用於 `MixedAudio`。每個接收器的 `SinkArn`( 的 ARN`KinesisVideoStreamPool`) 可能有所不同。
     + 若要僅串流個別音訊或混合音訊，請使用所需的 建立一個接收器物件`MediaStreamType`。
   + 注意下列事項：
     + 以 `KinesisVideoStreamPool`做為 叫用 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaStreamPipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaStreamPipeline.html) API 時`SinkType`， `SinkARN` 必須屬於`CreateMediaStreamPipeline`正在叫用 的控制平面區域。

       例如，如果您在 中建立媒體串流管道`us-east-1`，則必須在 `KinesisVideoStreamPool`中使用 `us-east-1`。
     + `ReservedStreamCapacity` 應在您指定 **1** 時為 `MixedAudio` `MediaStreamType`，並在您指定 **1-10**時介於 `IndividualAudio` 之間`MediaStreamType`。

1. 媒體管道資料平面會呼叫 KVS [ PutMedia ](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html) API，將個別音訊存放在屬於您指定之 KVS 集區的 KVS 串流中。

1. 媒體管道資料平面會呼叫 KVS `PutMedia` API，將混合音訊存放在屬於您指定之 KVS 集區的串流中。

**注意**  
呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaStreamPipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaStreamPipeline.html) API 之後，建置器可以使用[媒體管道事件](media-pipe-events.md)或呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_GetMediaPipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_GetMediaPipeline.html) API 來判斷管道狀態是否為 `InProgress`。  
一旦管道狀態達到 `InProgress`，媒體 - `IndividualAudio`和 的任意組合 `MixedAudio`- 串流到 KVS。  
對於`IndividualAudio`串流類型，出席者 IDs 與從 配置的 KVS 串流之間存在 1：1 映射`KinesisVideoStreamPool`。映射適用於媒體管道的生命週期。  
若要知道哪些 KVS 串流映射到出席者 ID，或指派給 MixedAudio，請使用下列其中一種技術：  
使用[事件橋接通知](media-stream-event-bridge.md)。每個通知都會提供出席者 IDs 和串流出席者音訊的 KVS ARN 等資訊。當 `IndividualAudio`或 `MixedAudio` 串流工作階段開始時，我們會傳送`chime:MediaPipelineKinesisVideoStreamStart`事件。串流工作階段會在出席者離開通話 （適用於 `IndividualAudio`) 或會議結束時結束。
使用 Kinesis Video Streams 隨每個片段傳送的持久性中繼資料。中繼資料包含與 Event Bridge 傳送內容類似的資訊。建置器需要剖析 的所有串流，`KinesisVideoStreamPool`方法是使用此解決方案將集區名稱指定為 [https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_ListStreams.html](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_ListStreams.html) Kinesis Video Streams API 中的字首。
刪除會議或叫用該媒體串流管道的 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_DeleteMediaPipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_DeleteMediaPipeline.html) API 時，就會發生媒體串流管道終止。也會傳送[事件橋接通知](media-pipe-events.md)，以指出媒體管道終止。

# Amazon Chime SDK 媒體串流管道的範例程式碼
<a name="pipeline-creation-code"></a>

下列範例示範如何為混合音訊、個別音訊和兩者建立媒體串流管道。展開每個區段以進一步了解。

## CreateMediaStreamPipeline 用於混合音訊
<a name="create-mixed-sample"></a>

```
response = client.create_media_stream_pipeline(
    Sources=[
        {
            'SourceType': 'ChimeSdkMeeting',
            'SourceArn': 'arn:aws:chime:us-east-1:account-ID:meeting/bed804cf-8cf0-4991-9b8d-d1acc2987433'
        },
    ],
    Sinks=[
        {
            'SinkArn': 'arn:aws:chime:us-east-1:account-ID:media-pipeline-kinesis-video-stream-pool/foo',
            'SinkType': 'KinesisVideoStreamPool',
            'ReservedStreamCapacity': 1,
            'MediaStreamType': 'MixedAudio'
        },
    ],
    ClientRequestToken='sample token',
    Tags=[
        {
            'Key': 'sample key',
            'Value': 'sample value'
        },
    ]
)
```

**回應：**

```
{
    'MediaStreamPipeline': {
        'MediaPipelineId': '45bc79a0-4591-4ebe-a642-d42c4e279f2d',
        'MediaPipelineArn': 'arn:aws:chime:us-east-1:account-ID:media-pipeline/45bc79a0-4591-4ebe-a642-d42c4e279f2d',
        'CreatedTimestamp': '2023-07-25T21:48:48.265Z',
        'UpdatedTimestamp': '2023-07-25T21:48:48.376Z',
        'Status': 'Initializing',
        'Sources': [
            {
                'SourceType': 'ChimeSdkMeeting',
                'SourceArn': 'arn:aws:chime:us-east-1:account-ID:meeting/bed804cf-8cf0-4991-9b8d-d1acc2987433'
            },
        ],
        'Sinks': [
            {
                'SinkArn': 'arn:aws:chime:us-east-1:account-ID:media-pipeline-kinesis-video-stream-pool/foo',
                'SinkType': 'KinesisVideoStreamPool',
                'ReservedStreamCapacity': 1,
                'MediaStreamType': 'MixedAudio'
            },
        ]
    }
}
```

## CreateMediaStreamPipeline 適用於個別音訊
<a name="create-individual-sample"></a>

```
response = client.create_media_stream_pipeline(
    Sources=[
        {
            'SourceType': 'ChimeSdkMeeting',
            'SourceArn': 'arn:aws:chime:us-east-1:account-ID:meeting/bed804cf-8cf0-4991-9b8d-d1acc2987433'
        },
    ],
    Sinks=[
        {
            'SinkArn': 'arn:aws:chime:us-east-1:account-ID:media-pipeline-kinesis-video-stream-pool/foo',
            'SinkType': 'KinesisVideoStreamPool',
            'ReservedStreamCapacity': 5,
            'MediaStreamType': 'IndividualAudio'
        },
    ],
    ClientRequestToken='sample token',
    Tags=[
        {
            'Key': 'sample key',
            'Value': 'sample value'
        },
    ]
)
```

**回應：**

```
{
    'MediaStreamPipeline': {
        'MediaPipelineId': '45bc79a0-4591-4ebe-a642-d42c4e279f2d',
        'MediaPipelineArn': 'arn:aws:chime:us-east-1:account-ID:media-pipeline/45bc79a0-4591-4ebe-a642-d42c4e279f2d',
        'CreatedTimestamp': '2023-07-25T21:48:48.265Z',
        'UpdatedTimestamp': '2023-07-25T21:48:48.376Z',
        'Status': 'Initializing',
        'Sources': [
            {
                'SourceType': 'ChimeSdkMeeting',
                'SourceArn': 'arn:aws:chime:us-east-1:account-ID:meeting/bed804cf-8cf0-4991-9b8d-d1acc2987433'
            },
        ],
        'Sinks': [
            {
                'SinkArn': 'arn:aws:chime:us-east-1:account-ID:media-pipeline-kinesis-video-stream-pool/foo',
                'SinkType': 'KinesisVideoStreamPool',
                'ReservedStreamCapacity': 5,
                'MediaStreamType': 'IndividualAudio'
            },
        ]
    }
}
```

## CreateMediaStreamPipeline 適用於混合音訊和個別音訊
<a name="create-both-sample"></a>

```
response = client.create_media_stream_pipeline(
    Sources=[
        {
            'SourceType': 'ChimeSdkMeeting',
            'SourceArn': 'arn:aws:chime:us-east-1:account-ID:meeting/bed804cf-8cf0-4991-9b8d-d1acc2987433'
        },
    ],
    Sinks=[
        {
            'SinkArn': 'arn:aws:chime:us-east-1:account-ID:media-pipeline-kinesis-video-stream-pool/foo',
            'SinkType': 'KinesisVideoStreamPool',
            'ReservedStreamCapacity': 1,
            'MediaStreamType': 'MixedAudio'
        },
        {
            'SinkArn': 'arn:aws:chime:us-east-1:account-ID:media-pipeline-kinesis-video-stream-pool/foo',
            'SinkType': 'KinesisVideoStreamPool',
            'ReservedStreamCapacity': 5,
            'MediaStreamType': 'IndividualAudio'
        },
    ],
    ClientRequestToken='sample token',
    Tags=[
        {
            'Key': 'sample key',
            'Value': 'sample value'
        },
    ]
)
```

**回應：**

```
{
    'MediaStreamPipeline': {
        'MediaPipelineId': '45bc79a0-4591-4ebe-a642-d42c4e279f2d',
        'MediaPipelineArn': 'arn:aws:chime:us-east-1:account-ID:media-pipeline/45bc79a0-4591-4ebe-a642-d42c4e279f2d',
        'CreatedTimestamp': '2023-07-25T21:48:48.265Z',
        'UpdatedTimestamp': '2023-07-25T21:48:48.376Z',
        'Status': 'Initializing',
        'Sources': [
            {
                'SourceType': 'ChimeSdkMeeting',
                'SourceArn': 'arn:aws:chime:us-east-1:account-ID:meeting/bed804cf-8cf0-4991-9b8d-d1acc2987433'
            },
        ],
        'Sinks': [
            {
                'SinkArn': 'arn:aws:chime:us-east-1:account-ID:media-pipeline-kinesis-video-stream-pool/foo',
                'SinkType': 'KinesisVideoStreamPool',
                'ReservedStreamCapacity': 1,
                'MediaStreamType': 'MixedAudio'
            },
            {
                'SinkArn': 'arn:aws:chime:us-east-1:account-ID:media-pipeline-kinesis-video-stream-pool/foo',
                'SinkType': 'KinesisVideoStreamPool',
                'ReservedStreamCapacity': 5,
                'MediaStreamType': 'IndividualAudio'
            },
        ]
    }
}
```

# 針對 Amazon Chime SDK 媒體串流管道使用事件橋接通知
<a name="media-stream-event-bridge"></a>

除了 之外[使用 Amazon Chime SDK 媒體管道事件](media-pipe-events.md)，媒體串流管道還會在啟動和停止串流至 KVS 以及視訊集區狀態變更時傳送 Event Bridge 通知。

**Topics**
+ [了解 Amazon Chime SDK 媒體串流管道事件](stream-pipe-events.md)
+ [了解 Amazon Chime SDK 媒體串流管道的 Kinesis Video Streams 集區事件](media-stream-pool-events.md)

# 了解 Amazon Chime SDK 媒體串流管道事件
<a name="stream-pipe-events"></a>

媒體串流管道會傳送下列事件。展開每個區段以進一步了解。

## Amazon Chime Media Stream Pipeline Kinesis Video Stream Start
<a name="stream-pipe-kvs-start"></a>

當媒體串流管道開始從會議接收音訊，並將該音訊串流至 KVS 時，Amazon Chime SDK 媒體管道會傳送此事件。空白 `AttendeeId`和 `ExternalUserId` 欄位表示媒體管道已將混合音訊傳送至 KVS 串流。

```
{
    "version": "0", 
    "id": "5ee6265a-0a40-104e-d8fd-a3b4bdd78483", 
    "detail-type": "Chime Media Pipeline State Change", 
    "source": "aws.chime", 
    "account": "111122223333", 
    "time": "2021-07-28T20:20:49Z", 
    "region": "us-east-1", 
    "resources": [], 
    "detail": {
        "eventType": "chime:MediaPipelineKinesisVideoStreamStart", 
        "timestamp": 1627503649251, 
        "meetingId": "1e6bf4f5-f4b5-4917-b8c9-bda45c340706", 
        "externalMeetingId": "Meeting_Id", 
        "mediaPipelineId": "e40ee45e-2ed1-408e-9156-f52b8208a491", 
        "mediaRegion": "ap-southeast-1",
        
        "attendeeId": "Attendee_Id", 
        "externalUserId": "External_User_Id",
                
        "kinesisVideoStreamArn": "arn:aws:kinesisvideo:us-east-1:123456:stream/Chime*",
        "startFragmentNumber": "1234567899444",
        "startTime": "yyyy-mm-ddThh:mm:ssZ"
                
    }
}
```

## Amazon Chime Media Stream Pipeline Kinesis Video Stream End
<a name="stream-pipe-kvs-stop"></a>

媒體管道會在串流至 KVS 結束時將此事件傳送至 Event Bridge。

```
{
    "version": "0", 
    "id": "5ee6265a-0a40-104e-d8fd-a3b4bdd78483", 
    "detail-type": "Chime Media Pipeline State Change", 
    "source": "aws.chime", 
    "account": "111122223333", 
    "time": "2021-07-28T20:20:49Z", 
    "region": "us-east-1", 
    "resources": [], 
    "detail": {
        "eventType": "chime:MediaPipelineKinesisVideoStreamEnd", 
        "timestamp": 1627503649251, 
        "meetingId": "1e6bf4f5-f4b5-4917-b8c9-bda45c340706", 
        "externalMeetingId": "Meeting_Id", 
        "mediaPipelineId": "e40ee45e-2ed1-408e-9156-f52b8208a491", 
        "mediaRegion": "ap-southeast-1",
        
        "attendeeId": "Attendee_Id", 
        "externalUserId": "External_User_Id",
                
        "kinesisVideoStreamArn": "arn:aws:kinesisvideo:us-east-1:123456:stream/Chime*",
        "startFragmentNumber": "1234567899444",
        "startTime": "yyyy-mm-ddThh:mm:ssZ",
        "endTime": "yyyy-mm-ddThh:mm:ssZ",
        "endFragmentNumber": "1234567899555"
    }
}
```

# 了解 Amazon Chime SDK 媒體串流管道的 Kinesis Video Streams 集區事件
<a name="media-stream-pool-events"></a>

當集區的狀態變更時，媒體管道會將下列事件傳送至 Event Bridge。展開每個區段以進一步了解。

## Amazon Chime Media Pipeline Kinesis Video Pool Active
<a name="kvs-pool-active"></a>

媒體管道會在 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaPipelineKinesisVideoStreamPool.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaPipelineKinesisVideoStreamPool.html) API 建立集區後傳送此事件。

```
{
    "version": "0", 
    "id": "5ee6265a-0a40-104e-d8fd-a3b4bdd78483", 
    "detail-type": "Chime Media Pipeline Kinesis Video Pool State Change", 
    "source": "aws.chime", 
    "account": "111122223333", 
    "time": "2021-07-28T20:20:49Z", 
    "region": "us-east-1", 
    "resources": [], 
    "detail": {
        "eventType": "chime:MediaPipelineKinesisVideoStreamPoolActive", 
        "timestamp": 1627503649251,
        "mediaRegion": "ap-southeast-1",
        "poolArn" : "ARN of the KVS Pool"
    }
}
```

## Amazon Chime Chime 媒體管道 Kinesis 影片集區已更新
<a name="kvs-pool-updated"></a>

媒體管道會在 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_UpdateMediaPipelineKinesisVideoStreamPool.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_UpdateMediaPipelineKinesisVideoStreamPool.html) API 更新集區後傳送此事件。

```
{
    "version": "0", 
    "id": "5ee6265a-0a40-104e-d8fd-a3b4bdd78483", 
    "detail-type": "Chime Media Pipeline Kinesis Video Pool State Change", 
    "source": "aws.chime", 
    "account": "111122223333", 
    "time": "2021-07-28T20:20:49Z", 
    "region": "us-east-1", 
    "resources": [], 
    "detail": {
        "eventType": "chime:MediaPipelineKinesisVideoStreamPoolUpdated", 
        "timestamp": 1627503649251,
        "mediaRegion": "ap-southeast-1",
        "poolArn" : "ARN of the KVS Pool"
    }
}
```

## 已刪除 Amazon Chime Media 管道 Kinesis 視訊集區
<a name="kvs-pool-deleted"></a>

當 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_DeleteMediaPipelineKinesisVideoStreamPool.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_DeleteMediaPipelineKinesisVideoStreamPool.html)刪除集區時，媒體管道會將此事件傳送至 Event Bridge。

如需刪除集區的詳細資訊，請參閱本節[為 Amazon Chime SDK 媒體串流管道建立 Kinesis Video Streams 集區](create-kvs-pool.md)中的 。

```
{
    "version": "0", 
    "id": "5ee6265a-0a40-104e-d8fd-a3b4bdd78483", 
    "detail-type": "Chime Media Pipeline Kinesis Video Pool State Change", 
    "source": "aws.chime", 
    "account": "111122223333", 
    "time": "2021-07-28T20:20:49Z", 
    "region": "us-east-1", 
    "resources": [], 
    "detail": {
        "eventType": "chime:MediaPipelineKinesisVideoStreamPoolDeleted", 
        "timestamp": 1627503649251,
        "mediaRegion": "ap-southeast-1",
        "poolArn" : "ARN of the KVS Pool"
    }
 }
```

## Amazon Chime Media 管道 Kinesis 視訊集區暫時故障
<a name="kvs-pool-temp-failure"></a>

當視訊集區暫時失敗時，媒體管道會將下列事件傳送至 Event Bridge。

```
{
    "version": "0", 
    "id": "5ee6265a-0a40-104e-d8fd-a3b4bdd78483", 
    "detail-type": "Chime Media Pipeline Kinesis Video Pool State Change", 
    "source": "aws.chime", 
    "account": "111122223333", 
    "time": "2021-07-28T20:20:49Z", 
    "region": "us-east-1", 
    "resources": [], 
    "detail": {
        "eventType": "chime:MediaPipelineKinesisVideoStreamPoolTemporaryFailure", 
        "timestamp": 1627503649251,
        "mediaRegion": "ap-southeast-1",
        "poolArn" : "ARN of the KVS Pool"
    }
 }
```

## Amazon Chime Media 管道 Kinesis 視訊集區永久故障
<a name="kvs-pool-perm-failure"></a>

當視訊集區永久失敗時，媒體管道會將下列事件傳送至 Event Bridge。

```
{
    "version": "0", 
    "id": "5ee6265a-0a40-104e-d8fd-a3b4bdd78483", 
    "detail-type": "Chime Media Pipeline Kinesis Video Pool State Change", 
    "source": "aws.chime", 
    "account": "111122223333", 
    "time": "2021-07-28T20:20:49Z", 
    "region": "us-east-1", 
    "resources": [], 
    "detail": {
        "eventType": "chime:MediaPipelineKinesisVideoStreamPoolPermanentFailure", 
        "timestamp": 1627503649251,
        "mediaRegion": "ap-southeast-1",
        "poolArn" : "ARN of the KVS Pool"
    }
}
```

如果您的 AWS 帳戶超過其 Amazon Kinesis 影片串流限制，您將會收到下列額外的媒體管道事件。

```
{
    "version": "0",
    "id": "5ee6265a-0a40-104e-d8fd-a3b4bdd78483",
    "detail-type": "Chime Media Pipeline Kinesis Video Pool State Change",
    "source": "aws.chime",
    "account": "111122223333",
    "time": "2021-07-28T20:20:49Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "eventType": "chime:MediaPipelineKinesisVideoStreamPoolStreamLimitExceeded",
        "timestamp": 1627503649251,
        "mediaRegion": "ap-southeast-1",
        "poolArn" : "ARN of the KVS Pool"
    }
}
```

# 使用 Amazon Chime SDK 媒體串流管道資料
<a name="media-stream-tips-tricks"></a>

您可以使用通知中的中繼資料來取得 KVS ARNs、片段編號和片段時間戳記。該資訊可協助您處理 KVS 串流中的音訊資料。

此外，您可以使用 KVS ARNs 搭配 KVS APIs 從串流讀取資料。根據使用案例，您可以呼叫 [https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_GetMedia.html](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_GetMedia.html)和 [https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_reader_GetMediaForFragmentList.html](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_reader_GetMediaForFragmentList.html) APIs。一般而言，`GetMediaForFragmentList`呼叫前會先呼叫 [https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_reader_ListFragments.html](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_reader_ListFragments.html) API。如需詳細資訊，請參閱 *Amazon Kinesis Video Streams FAQs*中的[從串流讀取資料](https://aws.amazon.com/kinesis/video-streams/faqs/)。

根據使用案例，建置器可以使用 Kinesis Video Streams 剖析器程式庫，進而使用 KVS [https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_GetMedia.html](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_GetMedia.html) API。

媒體串流管道會將下列會議和出席者中繼資料新增至每個片段。

```
"meetingId"
"externalMeetingId"
"attendeeId"
"externalUserId"
"sampleRate"
"channels"
```

媒體資料會以 MKV 格式儲存。所有 MKV 音訊資料都是以 AAC 編碼。如需詳細資訊，請參閱《[Kinesis Video Streams 開發人員指南》中的 Kinesis Video Streams 資料模型](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/how-data.html)。 **

# 在 Amazon Chime SDK 會議中將音訊和視訊合成為單一檢視
<a name="pipeline-compositing"></a>

Amazon Chime SDK 媒體管道支援將音訊、網路攝影機影片和內容共用影片串流合成為單一檢視。然後，您可以使用即時連接器將該單一檢視傳送至串流服務，例如 Amazon Interactive Video Service、Twitch 或 YouTube Live。合成的影片也可以擷取到 Amazon Simple Storage Service，以供儲存或進一步使用。

合成會使用名為 的預設畫面配置`GridView`，其具有下列行為。
+ 當只有網路攝影機影片處於作用中狀態時， 會以下列網格模式`GridView`組織串流：  
![\[四欄四列網格，顯示人物的輪廓。\]](http://docs.aws.amazon.com/zh_tw/chime-sdk/latest/dg/images/grid-no-content-share.png)

  網格最多可顯示 25 個網路攝影機串流，並在使用者開啟其攝影機時，依 排序圖磚。
+ `GridView` 提供兩個畫布方向， `Landscape`和 `Portrait`。橫向是預設方向，支援 FHD 的 1280x720 和 1920x1080 視訊解析度。縱向支援 FHD 的 720x1280 和 1080x1920 解析度。
+ 您可以設定視訊圖磚的順序、位置、總數、圖磚長寬比、角半徑、邊界顏色、邊界厚度和反白顏色。
+ 在會議期間，當有人共用螢幕時，網路攝影機視訊圖磚會動態轉換，以騰出空間進行內容共用。您可以使用下一節所述的其中一種配置組態，控制這些轉換和視訊圖磚的位置。

**關於配置組態**  
當有人開始內容共享時，您可以選擇如何使用下列其中一種配置組態來複合內容共享和網路攝影機影片串流。
+ `ActiveSpeakerOnlyConfiguration` 會將內容視訊全螢幕複合，作用中發言者的網路攝影機視訊重疊在角落。您可以指定邊角。
+ `PresenterOnlyConfiguration` 會將內容視訊全螢幕複合，並將主持人的網路攝影機視訊覆蓋在角落。您可以指定邊角。
+ `VerticalLayoutConfiguration` 會將內容視訊與相鄰垂直欄中的網路攝影機視訊複合。您可以在內容共用的右側或左側顯示資料欄。
+ `HorizontalLayoutConfiguration` 會將內容視訊與相鄰水平列中的網路攝影機視訊複合。您可以在內容共享上方或下方顯示資料列。

合成配置會根據內容共用是否處於作用中狀態，在 `GridView`和您選擇的配置之間自動轉換。

下列主題說明如何使用全域`GridView`設定和每個組態配置。

**Topics**
+ [在 Amazon Chime SDK 會議中設定用於合成的畫布方向](canvas-orientation.md)
+ [在 Amazon Chime SDK 會議中設定用於合成的邊界和邊角屬性](video-attribute.md)
+ [使用配置組態在 Amazon Chime SDK 會議中進行合成](compositing-layouts.md)

# 在 Amazon Chime SDK 會議中設定用於合成的畫布方向
<a name="canvas-orientation"></a>

在合成中，*畫布*包含所有影片串流。您可以指定畫布的 `Landscape`或 `Portrait`方向。橫向提供 16：9 長寬比。縱向提供 9：16 長寬比。

下圖顯示縱向方向。

![\[顯示縱向 （垂直） 視窗中兩個影片圖磚的影像。\]](http://docs.aws.amazon.com/zh_tw/chime-sdk/latest/dg/images/compositing-portrait-with-tile.png)


下列範例顯示如何使用右上角的視訊圖磚實作縱向畫布。在此範例中，作用中的發言者會出現在圖磚中。如需詳細資訊，請參閱[ActiveSpeakerOnlyConfiguration](compositing-layouts.md#active-speaker-only)

```
{
   "CompositedVideo":{
      "Layout":"GridView",
      "Resolution":"FHD",
      "GridViewConfiguration":{
         "ContentShareLayout":"ActiveSpeakerOnly",
         "ActiveSpeakerOnlyConfiguration":{
            "ActiveSpeakerPosition":"TopRight"
         }
      },
      "CanvasOrientation": "Portrait"       
   }
}
```

下圖顯示橫向方向。

![\[顯示橫向 （水平） 視窗中兩個影片圖磚的影像。\]](http://docs.aws.amazon.com/zh_tw/chime-sdk/latest/dg/images/compositing-landscape-with-tile.png)


**CanvasOrientation**  
*描述* – 方向設定，橫向或縱向。  
*允許的值* – `Landscape` \$1 `Portrait`  
*必要* – 否  
*預設* – 橫向

# 在 Amazon Chime SDK 會議中設定用於合成的邊界和邊角屬性
<a name="video-attribute"></a>

您可以視需要使用 `VideoAttribute` 參數來指定影片圖磚的邊界和邊角設定。您可以指定顏色、寬度和圓角。您也可以指定反白顏色，當有人說話時，邊界會變更為該顏色。

您的屬性設定適用於所有配置，無論內容共用為何。

下圖顯示套用邊界顏色和邊角半徑的影片圖磚。

![\[具有紅色邊界和圓角的螢幕共用和影片圖磚的影像。\]](http://docs.aws.amazon.com/zh_tw/chime-sdk/latest/dg/images/compositing-speaker-border.png)


下列範例示範如何使用每個屬性。在這種情況下，影片圖磚具有圓角和五像素半徑。圖磚具有綠色邊界，以及五個像素寬。當發言者說話時， `HighlightColor` 屬性會將邊界顏色變更為紅色。

```
{
   "CompositedVideo":{
      "Layout":"GridView",
      "Resolution":"FHD",
      "GridViewConfiguration":{
         "ContentShareLayout":"ActiveSpeakerOnly",
         "ActiveSpeakerOnlyConfiguration":{
            "ActiveSpeakerPosition":"TopRight"
         }
         "VideoAttribute": {
            "CornerRadius"   : 10,                               
            "BorderColor"    : "Green", 
            "HighlightColor" : "Red",  
            "BorderThickness": 5 
          },      
       }
   }
}
```

**VideoAttribute**  
*描述* – 指定影片圖磚邊界和圓角的設定  
*允許的值* – `BorderColor` \$1 `BorderThickness` \$1 `CornerRadius` \$1 `HighlightColor`  
*必要* – 否

**VideoAttribute.BorderColor**  
*描述* – 定義所有影片圖磚的邊界顏色  
*允許的值* – 顏色名稱，例如紅色、綠色或藍色  
*必要* – 否

**VideoAttribute.BorderThickness**  
*描述* – 定義所有影片並排的邊界厚度，以像素為單位  
*類型* – 整數  
*允許的值* – 1–20  
*必要* – 否

**VideoAttribute.CornerRadius**  
*描述* – 定義所有影片並排的邊角半徑，以像素為單位。  
*類型* – 整數  
*允許的值* – 1–20  
*必要* – 否

**VideoAttribute.HighlightColor**  
*描述* – 定義發言者或發言者說話時顯示的邊界顏色  
*允許的值* – 顏色名稱，例如紅色、綠色或藍色  
*必要* – 否

# 使用配置組態在 Amazon Chime SDK 會議中進行合成
<a name="compositing-layouts"></a>

下列主題說明如何使用不同的組態配置。配置只會在某人啟動內容共享時生效。展開每個區段以進一步了解。

## ActiveSpeakerOnlyConfiguration
<a name="active-speaker-only"></a>

`ActiveSpeakerOnlyConfiguration` 會顯示內容共用和作用中發言者的影片，這表示說話的人會出現在覆蓋內容共用串流的小型影片圖磚中。

下圖顯示喇叭圖磚的組態和可用位置。

![\[影像顯示視窗中心的大型影片圖磚，以及左上角的小型圖磚。\]](http://docs.aws.amazon.com/zh_tw/chime-sdk/latest/dg/images/compositing-active-speaker-4x.png)


下列範例示範如何以程式設計方式實作`ActiveSpeakerOnly`配置。在此情況下，簡報者圖磚會出現在左上角。

```
{
   "CompositedVideo":{
      "Layout":"GridView",
      "Resolution":"FHD",
      "GridViewConfiguration":{
         "ContentShareLayout":"ActiveSpeakerOnly",
         "ActiveSpeakerOnlyConfiguration":{
            "ActiveSpeakerPosition":"TopLeft"
         }
      }
   }
}
```

**ActiveSpeakerOnlyConfiguration**  
*描述* – `ActiveSpeakerOnly`影片圖標的組態設定  
*類型* – ActiveSpeakerOnlyConfiguration 物件  
*必要* – 否

**ActiveSpeakerOnlyConfiguration.ActiveSpeakerPosition**  
*描述* – 作用中發言者視訊圖磚的位置  
*類型* – 字串  
*有效值* – `TopLeft` \$1 `TopRight` \$1 `BottomLeft` \$1 `BottomRight`  
*必要* – 否  
*預設* – `TopRight`

## PresenterOnlyConfiguration
<a name="presenter-only"></a>

`PresenterOnlyConfiguration` 無論誰說話， 只會顯示內容共用和簡報者的影片。下圖顯示 組態。

![\[四個畫面的影像。每個畫面中間都有一個共用視窗，每個角落都有一個視訊圖標。\]](http://docs.aws.amazon.com/zh_tw/chime-sdk/latest/dg/images/compositing-presenter-only-4x.png)


下列範例顯示如何以程式設計方式實作配置，其中簡報者位於右上角。

```
{
    "CompositedVideo": {
    "Layout": "GridView",
    "Resolution": "FHD",
     "GridViewConfiguration": {
         "ContentShareLayout": "PresenterOnly",
         "PresenterOnlyConfiguration": { 
             "PresenterPosition": "TopRight"
             }
         }           
     }
}
```

**PresenterOnlyConfiguration**  
*描述* – `PresenterOnly`配置的組態設定  
*類型* – `PresenterOnlyConfiguration` 物件  
*必要* – 否

**PresenterOnlyConfiguration.PresenterPosition**  
*描述* – 簡報者影片圖磚的位置  
*類型* – 字串  
*有效值* – `TopLeft` \$1 `TopRight` \$1 `BottomLeft` \$1 `BottomRight`  
*必要* – 否  
*預設* – `TopRight`

## HorizontalLayoutConfiguration
<a name="horizontal-layout"></a>

`HorizontalLayoutConfiguration` 水平顯示內容共用和影片串流。您可以使用 `TilePosition`設定，在內容共用串流上方或下方顯示圖磚。簡報者一律會出現在左側。其他圖磚會以 指定的順序顯示`JoinSequence`。

下圖顯示內容共用串流下方的圖磚。

![\[本圖顯示下方一行中的大型中央圖磚和 4 個較小的圖磚。\]](http://docs.aws.amazon.com/zh_tw/chime-sdk/latest/dg/images/compositing-horizontal-bottom.png)


下列範例示範如何以程式設計方式實作水平配置。在此情況下，配置會依 排序圖磚`SpeakerSequence`，並將其置於畫面共用下方。配置最多允許四個圖磚，並套用 16/9 長寬比。

```
{
   "CompositedVideo":{
      "Layout":"GridView",
      "Resolution":"FHD",
      "GridViewConfiguration":{
         "ContentShareLayout":"Horizontal",
         "HorizontalLayoutConfiguration":{
            "TileOrder":"SpeakerSequence",
            "TilePosition":"Bottom",
            "TileCount":4,
            "TileAspectRatio":"16/9"
         }
      }
   }
}
```

**HorizontalLayoutConfiguration**  
*描述* – 水平配置的組態設定  
*類型* – HorizontalLayoutConfiguration 物件  
*必要* – 否

**HorizontalLayoutConfiguration.TilePosition**  
*描述* – 將圖磚放置在內容共用的上方或下方。  
*類型* - 字串  
*有效值* – `Bottom` \$1 `Top`  
*必要* – 否  
*預設* – 底部

**HorizontalLayoutConfiguration.TileOrder**  
*描述* – 使用者加入或說話時排序圖磚  
*類型* – 字串  
*有效值* – `JoinSequence` \$1 `SpeakerSequence`  
*必要* – 否  
*預設* – JoinSequence

**HorizontalLayoutConfiguration.TileCount**  
*描述* – 指定畫面共用期間保持可見的圖磚數量  
*類型* – 整數  
*有效值* – 1–10  
*必要* – 否  
*預設* – 4

**HorizontalLayoutConfiguration.TileAspectRatio**  
*描述* – 指定圖磚的長寬比  
*類型* – 整數  
*有效值* – *n***/***n*  
*必要* – 否  
*預設* – 16/9，值會套用至所有圖磚

## VerticalLayoutConfiguration
<a name="vertical-layout"></a>

`VerticalLayoutConfiguration` 會顯示內容共用和四部最近堆疊在右側的影片。簡報者一律會出現在頂端。其他出席者會以 指定的順序顯示`TileOrder`。

![\[影像顯示視窗中心的大型影片圖磚，以及堆疊在右側的 4 個較小的圖磚。\]](http://docs.aws.amazon.com/zh_tw/chime-sdk/latest/dg/images/grid-vertical.png)


下列範例示範如何以程式設計方式實作垂直配置。在此情況下，配置會依 JoinSequence 排序圖磚，並將其放置在畫面共用的右側。配置最多允許四個圖磚，並套用 16/9 長寬比。

```
{
   "CompositedVideo":{
      "Layout": "GridView",
      "Resolution": "FHD",
      "GridViewConfiguration":{
         "ContentShareLayout": "Vertical",
         "VerticalLayoutConfiguration":{
            "TileOrder": "JoinSequence",
            "TilePosition": "Right",
            "TileCount": 4,
            "TileAspectRatio": "16/9"
         }
      }
   }
}
```

**VerticalLayoutConfiguration**  
*描述* – 垂直配置的組態設定  
*類型* – VerticalLayoutConfiguration 物件  
*必要* – 否

**VerticalLayoutConfiguration.TilePosition**  
*描述* – 將圖磚放置在內容共用的右側或左側。  
*類型* – 字串  
*有效值* – `Bottom` \$1 `Top`  
*必要* – 否  
*預設* – 底部

**VerticalLayoutConfiguration.TileOrder**  
*描述* – 使用者加入或說話時排序圖磚  
*類型* – 字串  
*有效值* – `JoinSequence` \$1 `SpeakerSequence`  
*必要* – 否  
*預設* – JoinSequence

**VerticalLayoutConfiguration.TileCount**  
*描述* – 指定圖磚數量  
*類型* – 整數  
*有效值* – 1–10  
*必要* – 否  
*預設* – 4

**VerticalLayoutConfiguration.TileAspectRatio**  
*描述* – 指定圖磚的長寬比  
*類型* – 整數  
*有效值* – *n***/***n*  
*必要* – 否  
*預設* – 9/16，值會套用至所有圖磚

# 為 Amazon Chime SDK 媒體管道建立服務連結角色
<a name="create-pipeline-role"></a>

下列各節中的資訊說明如何建立服務連結角色，以授予媒體管道存取 Amazon Chime SDK 會議的權限。

**Topics**
+ [設定角色許可](#pipeline-role-permissions)
+ [建立 服務連結角色](#create-sl-role)
+ [編輯 服務連結角色](#edit-pipeline-role)
+ [刪除 服務連結角色](#delete-pipeline-role)
+ [支援服務連結角色的區域](#role-supported-regions)

## 設定角色許可
<a name="pipeline-role-permissions"></a>

媒體管道使用名為 *AWSServiceRoleForAmazonChimeSDKMediaPipelines* 的服務連結角色。此角色允許擷取管道存取 Amazon Chime SDK 會議，並代表您將指標發佈至 Amazon CloudWatch。角色信任 `mediapipelines.chime.amazonaws.com`服務。

角色許可政策允許 Amazon Chime SDK 對所有 AWS 資源完成下列動作：
+ 動作：`all AWS resources` 上的 `cloudwatch:PutMetricData`
+ 動作：`all AWS resources` 上的 `chime:CreateAttendee`
+ 動作：`all AWS resources` 上的 `chime:DeleteAttendee`
+ 動作：`all AWS resources` 上的 `chime:GetMeeting`
+ 動作：`arn:aws:kinesisvideo:*:111122223333:stream/ChimeMediaPipelines-*` 上的 `kinesisvideo:CreateStream`
+ 動作：`arn:aws:kinesisvideo:*:111122223333:stream/ChimeMediaPipelines-*` 上的 `kinesisvideo:PutMedia`
+ 動作：`arn:aws:kinesisvideo:*:111122223333:stream/ChimeMediaPipelines-*` 上的 `kinesisvideo:UpdateDataRetention`
+ 動作：`arn:aws:kinesisvideo:*:111122223333:stream/ChimeMediaPipelines-*` 上的 `kinesisvideo:DescribeStream`
+ 動作：`arn:aws:kinesisvideo:*:111122223333:stream/ChimeMediaPipelines-*` 上的 `kinesisvideo:GetDataEndpoint`
+ 動作：`arn:aws:kinesisvideo:*:111122223333:stream/*` 上的 `kinesisvideo:ListStreams`

您必須設定許可，IAM 實體 (例如使用者、群組或角色) 才能建立、編輯或刪除服務連結角色。如需許可的詳細資訊，請參閱《*IAM 使用者指南*》中的[服務連結角色許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

## 建立 服務連結角色
<a name="create-sl-role"></a>

您可以使用 IAM 主控台建立服務連結角色，以搭配 Amazon Chime SDK 媒體管道使用。您必須擁有 IAM 管理許可才能完成這些步驟。如果沒有，請聯絡系統管理員。

**建立角色**

1. 登入 AWS 管理主控台，然後開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam) 的 IAM 主控台。

1. 在 IAM 主控台的導覽窗格中，選擇**角色**，然後選擇**建立角色**。

1. 選擇 **AWS Service** 角色類型，然後選擇 **Chime SDK 媒體管道**。

   IAM 政策隨即顯示。

1. 選取政策旁的核取方塊，然後選擇**下一步：標籤**。

1. 選擇下**一步：檢閱**。

1. 視需要編輯描述，然後選擇**建立角色**。

您也可以使用 AWS CLI 或 AWS API 來建立名為 *mediapipelines.chime.amazonaws.com* 的服務連結角色。在 AWS CLI 中，執行此命令：

```
aws iam create-service-linked-role --aws-service-name mediapipelines.chime.amazonaws.com
```

如需建立角色的詳細資訊，請參閱《*IAM 使用者指南*》中的[建立服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#create-service-linked-role)。如果您刪除此角色，您可以使用相同的程序再次建立該角色。

## 編輯 服務連結角色
<a name="edit-pipeline-role"></a>

您無法編輯 *AWSServiceRoleForAmazonChimeSDKMediaPipelines* 服務連結角色。建立角色之後，您無法變更其名稱，因為其他實體可能會參考角色。不過，您可以使用 IAM 來編輯角色的描述。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[編輯服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

## 刪除 服務連結角色
<a name="delete-pipeline-role"></a>

如果不需要服務連結角色，建議您將其刪除。若要這麼做，請先刪除使用該角色的媒體管道。您可以使用 AWS CLI 或 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_DeleteMediaCapturePipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_DeleteMediaCapturePipeline.html) API 來刪除管道。

**使用 CLI 刪除管道**  
在 CLI AWS 中使用此命令來刪除您帳戶中的媒體管道。

```
aws chime-sdk-media-pipelines delete-media-capture-pipeline --media-pipeline-id Pipeline_Id
```

**使用 API 刪除管道**  
使用 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_DeleteMediaCapturePipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_DeleteMediaCapturePipeline.html) API 刪除您帳戶中的媒體管道。

**刪除角色**  
刪除管道後，您可以使用 IAM 主控台、CLI AWS 或 AWS API 來刪除角色。如需刪除角色的詳細資訊，請參閱《*IAM 使用者指南*》中的[刪除服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。

## 支援服務連結角色的區域
<a name="role-supported-regions"></a>

Amazon Chime SDK 支援在提供服務的所有 AWS 區域中使用服務連結角色。如需詳細資訊，請參閱《》中的 [Amazon Chime SDK 端點和配額](https://docs.aws.amazon.com/general/latest/gr/chime-sdk.html)*Amazon Web Services 一般參考*。

# 使用 Amazon Chime SDK 媒體管道事件
<a name="media-pipe-events"></a>

每種媒體管道都會傳送生命週期事件，您可以用來觸發通知和啟動下游工作流程。使用媒體管道事件的一些範例包括：
+ 在媒體管道完成後處理擷取的媒體。
+ 如果媒體管道發生暫時故障，請通知會議參與者。
+ 如果媒體管道永久失敗，請停止會議。

您可以將事件傳送至 Amazon EventBridge、Amazon Simple Notification Service (SNS) 和 Amazon Simple Queue Service (SQS)。如需詳細資訊，請參閱《*Amazon EventBridge 使用者指南*》中的[來自 AWS 服務的事件](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html)。

## 已建立 Amazon Chime SDK 媒體管道
<a name="media-pipeline-create"></a>

建立媒體管道時，Amazon Chime SDK 會傳送此事件。

**範例：事件資料**  
 以下是此事件的範例資料。

```
{
    "version": "0", 
    "id": "5ee6265a-0a40-104e-d8fd-a3b4bdd78483", 
    "detail-type": "Chime Media Pipeline State Change", 
    "source": "aws.chime", 
    "account": "111122223333", 
    "time": "2021-07-28T20:20:49Z", 
    "region": "us-east-1", 
    "resources": [], 
    "detail": {
        "version": "0", 
        "eventType": "chime:MediaPipelineInProgress", 
        "timestamp": 1627503649251, 
        "meetingId": "1e6bf4f5-f4b5-4917-b8c9-bda45c340706", 
        "externalMeetingId": "Meeting_Id",
        "mediaPipelineId": "e40ee45e-2ed1-408e-9156-f52b8208a491", 
        "mediaRegion": "ap-southeast-1"
    }
}
```

## 已刪除 Amazon Chime SDK 媒體管道
<a name="media-pipeline-delete"></a>

Amazon Chime SDK 會在媒體管道成功停止後傳送此事件。

**範例：事件資料**  
以下是此事件的範例資料。

```
{
    "version": "0",
    "id": "9e11e429-97fd-9532-5670-fac3f7abc05f",
    "detail-type": "Chime Media Pipeline State Change",
    "source": "aws.chime",
    "account": "365135496707",
    "time": "2021-07-28T20:21:50Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "version": "0",
        "eventType": "chime:MediaPipelineDeleted",
        "timestamp": 1627503710485,
        "meetingId": "1e6bf4f5-f4b5-4917-b8c9-bda45c340706",
        "externalMeetingId": "Meeting_Id",
        "mediaPipelineId": "e40ee45e-2ed1-408e-9156-f52b8208a491",
        "mediaRegion": "ap-southeast-1"
    }
}
```

## Amazon Chime SDK 媒體管道發生暫時故障
<a name="pipeline-temp-failure"></a>

當媒體管道發生暫時故障時，Amazon Chime SDK 會傳送此事件。

**範例：事件資料**  
以下是此事件的範例資料。

```
{
    "version": "0",
    "id": "abc141e1-fc2e-65e8-5f18-ab5130f1035a",
    "detail-type": "Chime Media Pipeline State Change",
    "source": "aws.chime",
    "account": "365135496707",
    "time": "2021-07-28T21:16:42Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "version": "0",
        "eventType": "chime:MediaPipelineTemporaryFailure",
        "timestamp": 1627507002882,
        "meetingId": "7a5434e3-724a-4bbb-9eb6-2fb209dc0706",
        "externalMeetingId": "Meeting_Id",
        "mediaPipelineId": "ebd62f4e-04a9-426d-bcb0-974c0f266400",
        "mediaRegion": "eu-south-1"
    }
}
```

## Amazon Chime SDK 媒體管道進行中
<a name="pipeline-in-progress"></a>

當媒體管道開始擷取成品時，Amazon Chime SDK 會傳送此事件。

**範例：事件資料**  
以下是此事件的範例資料。

```
{
    "version": "0",
    "id": "9e11e429-97fd-9532-5670-fac3f7abc05f",
    "detail-type": "Chime Media Pipeline State Change",
    "source": "aws.chime",
    "account": "365135496707",
    "time": "2021-07-28T20:21:50Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "version": "0",
        "eventType": "chime:MediaPipelineInProgress",
        "timestamp": 1627503710485?,
        "meetingId": "1e6bf4f5-f4b5-4917-b8c9-bda45c340706",
        "externalMeetingId": "Meeting_Id",
        "mediaPipelineId": "e40ee45e-2ed1-408e-9156-f52b8208a491",
        "mediaRegion": "ap-southeast-1"
    }
}
```

## Amazon Chime SDK 媒體管道永久故障
<a name="pipeline-perm-failure"></a>

當媒體管道永久失敗時，Amazon Chime SDK 會傳送此事件。

**範例：事件資料**  
以下是此事件的範例資料。

```
{
    "version": "0",
    "id": "9e11e429-97fd-9532-5670-fac3f7abc05f",
    "detail-type": "Chime Media Pipeline State Change",
    "source": "aws.chime",
    "account": "365135496707",
    "time": "2021-07-28T20:21:50Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "version": "0",
        "eventType": "chime:MediaPipelinePermanentFailure",
        "timestamp": 1627503710485,
        "meetingId": "1e6bf4f5-f4b5-4917-b8c9-bda45c340706",
        "externalMeetingId": "Meeting_Id",
        "mediaPipelineId": "e40ee45e-2ed1-408e-9156-f52b8208a491",
        "mediaRegion": "ap-southeast-1"
    }
}
```

# 設定 Amazon Chime SDK 媒體管道的 Amazon S3 儲存貯體許可
<a name="s3-permissions"></a>

如果您尚未建立 Amazon S3 儲存貯體，請務必在您主持會議的帳戶和區域中建立 。此外，請確定您將適當的許可授予服務。如需建立 Amazon S3 儲存貯體的詳細資訊，請參閱 [為 Amazon Chime SDK 媒體擷取管道建立 Amazon S3 儲存貯體](create-s3-bucket.md)。

# 將 Amazon Chime SDK 媒體管道事件傳送至 CloudTrail
<a name="pipeline-cloudtrail"></a>

AWS 會在您建立 AWS 帳戶時為您啟用 CloudTrail。當使用者在媒體管道 SDK 中呼叫支援的 API 時，CloudTrail 會記錄**事件歷史記錄**中該 API 的活動，以及其他 AWS 事件。您可以在 AWS 帳戶中檢視、搜尋和下載媒體管道事件。如需詳細資訊，請參閱《[CloudTrail 使用者指南》中的使用 CloudTrail 檢視事件事件歷史記錄](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)。 *CloudTrail *

若要持續記錄媒體管道事件，您可以建立*追蹤*。追蹤能讓 CloudTrail 將日誌檔案交付至 Amazon S3 儲存貯體。下列範例顯示媒體管道追蹤。資料包含呼叫 API 的使用者、用來呼叫 API 的 IAM 角色，以及時間戳記。如需使用 CloudTrail 的詳細資訊，請參閱《*Amazon Chime SDK 管理員指南*》中的[記錄和監控](https://docs.aws.amazon.com/chime-sdk/latest/ag/monitoring-overview.html)。

```
{
   "Records": [    
   {
      "eventVersion": "1.08",
      "userIdentity": {
          "type": "AssumedRole",
          "principalId": "ABCDEFGHIJKLMNOPQRSTUV:user-name",
          "arn": "arn:aws:sts::123456789101:assumed-role/role-name/user-name",
          "accountId": "109876543210",
          "accessKeyId": "ABCDEFGHIJKLMNOPQRSTUV",
          "sessionContext": {
              "sessionIssuer": {
                  "type": "Role",
                  "principalId": "ABCDEFGHIJKLMNOPQRSTUV",
                  "arn": "arn:aws:iam::109876543210:role/role-name",
                  "accountId": "012345678910",
                  "userName": "user-name"
                  },
          "webIdFederationData": {},
          "attributes": {
              "mfaAuthenticated": "false",
              "creationDate": "2022-03-08T19:34:55Z"
              }
          }
      },
      "eventTime": "2022-03-08T20:28:41Z",
     "eventSource": "chime-sdk-media-pipelines.amazonaws.com",
     "eventName": "CreateMediaCapturePipeline",
     "awsRegion": "us-east-1",
     "sourceIPAddress": "127.0.0.1",
     "userAgent": "[]/[]",
     "requestParameters": {
         "sourceType": "ChimeSdkMeeting",
         "sourceArn": "Hidden_For_Security_Reasons",
         "sinkType": "S3Bucket",
         "sinkArn": "Hidden_For_Security_Reasons",
         "chimeSdkMeetingConfiguration": {
             "artifactsConfiguration": {
                 "audio": {
                    "muxType": "AudioOnly"
                 },
            "video": {
                "state": "Enabled",
                "muxType": "VideoOnly"
                },
            "content": {
                "state": "Enabled",
                "muxType": "ContentOnly"
                }
            }
        }
      },
     "responseElements": {
        "mediaCapturePipeline": {
        "mediaPipelineId": "pipeline-uuid",
        "sourceType": "ChimeSdkMeeting",
        "sourceArn": "Hidden_For_Security_Reasons",
        "status": "Initializing",
        "sinkType": "S3Bucket",
        "sinkArn": "Hidden_For_Security_Reasons",
        "createdTimestamp": "2022-03-08T20:28:41.336Z",
        "updatedTimestamp": "2022-03-08T20:28:41.463Z",
        "chimeSdkMeetingConfiguration": {
            "artifactsConfiguration": {
                "audio": {
                    "muxType": "AudioOnly"
                },
            "video": {
                "state": "Enabled",
                 "muxType": "VideoOnly"
                 },
             "content": {
                 "state": "Enabled",
                 "muxType": "ContentOnly"
                 }
              }
            }
          }
      },
      "requestID": "request-id",
      "eventID": "event-id",
     "readOnly": false,
      "eventType": "AwsApiCall",
      "managementEvent": true,
      "eventCategory": "Management",
      "recipientAccountId": "112233445566",
      "tlsDetails": {
          "tlsVersion": "TLSv1.2",
          "clientProvidedHostHeader": "example.com"
       }
    },  
  ]
}
```

# 停止 Amazon Chime SDK 媒體管道的最佳實務
<a name="stop-pipe-best-practices"></a>

作為停止媒體管道的最佳實務，請呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_DeleteMediaPipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_DeleteMediaPipeline.html) API。API 可讓您刪除媒體擷取和媒體即時連接器管道。您也可以呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_DeleteMediaCapturePipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_DeleteMediaCapturePipeline.html) API 來刪除媒體擷取管道。會議結束時，所有媒體管道都會停止。