

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

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

chime 媒体流管道必须与 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_cn/chime-sdk/latest/dg/images/media-stream-pipe-architecture.png)


在图中：

1. 您调用 `CreateMediaStreamPipeline` API。在请求中，指定流的来源和接收器。是否想要捕获单个音频和/或混合音频。请求中包含 KVS 池的 ARN。
   + 来源数组由 `SourceType` 和 `SourceArn` 组成。您必须使用 `ChimeSdkMeeting SourceType`。`SourceArn` 是 `ChimeSdkMeeting` 的 ARN。
   + 接收器数组由 `SinkType`、`SinkArn`、`ReservedStreamCapacity` 和 `MediaStreamType` 组成。我们仅支持 `KinesisVideoStreamPoolSinkType`。`SinkArn` 是 `KinesisVideoStreamPool` 的 ARN。`MediaStreamType` 控制流式传输到接收器的媒体类型，`MixedAudio` 或 `IndividualAudio`。`ReservedStreamCapacity` 设置为 `KinesisVideoStreamPool` 的 `MediaStreamType` 分配的流数量。
     + 如果要同时流式传输 `IndividualAudio` 和 `MixedAudio`，则在 `Sinks` 数组中创建两个接收器对象，一个用于 `IndividualAudio`，另一个用于 `MixedAudio`。`SinkArn`（`KinesisVideoStreamPool` 的 ARN）可能因每个接收器的不同而有所不同。
     + 要仅流式传输单个音频或混合音频，创建一个包含所需 `MediaStreamType` 的接收器对象。
   + 注意以下几点：
     + 使用 `KinesisVideoStreamPool` 作为 `SinkType` 调用 [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 时，`SinkARN` 必须属于正在调用的 `CreateMediaStreamPipeline` 所在的控制面板区域。

       例如，如果您在 `us-east-1` 中创建媒体流管道，则必须使用 `us-east-1` 中的 `KinesisVideoStreamPool`。
     + `ReservedStreamCapacity` 应在您指定 `MixedAudio` `MediaStreamType` 时为 **1**，并且在指定 `IndividualAudio` `MediaStreamType` 时介于 **1-10** 之间。

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 或为其分配了哪个 KVS 直播 MixedAudio，请使用以下方法之一：  
使用[事件总线通知](media-stream-event-bridge.md)。每条通知都提供诸如与会者 IDs 以及直播与会者音频的 KVS ARN 之类的信息。当 `IndividualAudio` 或 `MixedAudio` 流会话开始时，我们会发送一个 `chime:MediaPipelineKinesisVideoStreamStart` 事件。当与会者离开调用（针对 `IndividualAudio`）或会议结束时，流会话就会结束。
使用 Kinesis Video Streams 随每个片段发送的持久性元数据。元数据包含与事件总线发送的内容相似的信息。生成器需要通过此解决方案在 [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 中将池名称指定为前缀来解析 `KinesisVideoStreamPool` 的所有流。
删除会议时或为媒体流管道调用 [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)以指示媒体管道终止。