创建 Amazon Chime SDK 媒体流管道 - Amazon Chime SDK

创建 Amazon Chime SDK 媒体流管道

Chime 媒体流管道必须与 Amazon Chime SDK 会议属于同一个 AWS 账户。您可以通过调用 CreateMediaStreamPipeline API 并指定来源和接收器来创建 Amazon Chime SDK 媒体流管道。

下图显示 Amazon Chime SDK 媒体流管道的架构。图表中的数字对应于以下带编号的文本。

显示创建媒体流池的 API 调用的图表。

在图中:

  1. 您调用 CreateMediaStreamPipeline API。在请求中,指定流的来源和接收器。是否想要捕获单个音频和/或混合音频。请求中包含 KVS 池的 ARN。

    • 来源数组由 SourceTypeSourceArn 组成。您必须使用 ChimeSdkMeeting SourceTypeSourceArnChimeSdkMeeting 的 ARN。

    • 接收器数组由 SinkTypeSinkArnReservedStreamCapacityMediaStreamType 组成。我们仅支持 KinesisVideoStreamPoolSinkTypeSinkArnKinesisVideoStreamPool 的 ARN。MediaStreamType 控制流式传输到接收器的媒体类型,MixedAudioIndividualAudioReservedStreamCapacity 设置为 KinesisVideoStreamPoolMediaStreamType 分配的流数量。

      • 如果要同时流式传输 IndividualAudioMixedAudio,则在 Sinks 数组中创建两个接收器对象,一个用于 IndividualAudio,另一个用于 MixedAudioSinkArnKinesisVideoStreamPool 的 ARN)可能因每个接收器的不同而有所不同。

      • 要仅流式传输单个音频或混合音频,创建一个包含所需 MediaStreamType 的接收器对象。

    • 注意以下几点:

      • 使用 KinesisVideoStreamPool 作为 SinkType 调用 CreateMediaStreamPipeline API 时,SinkARN 必须属于正在调用的 CreateMediaStreamPipeline 所在的控制面板区域。

        例如,如果您在 us-east-1 中创建媒体流管道,则必须使用 us-east-1 中的 KinesisVideoStreamPool

      • ReservedStreamCapacity 应在您指定 MixedAudio MediaStreamType 时为 1,并且在指定 IndividualAudio MediaStreamType 时介于 1-10 之间。

  2. 媒体管道数据面板调用 KVS PutMedia API 将单个音频存储在属于您指定 KVS 池的 KVS 流中。

  3. 媒体管道数据面板调用 KVS PutMedia API 将混合音频存储在属于您指定 KVS 池的流中。

注意

调用 CreateMediaStreamPipeline API 后,生成器可以使用媒体管道事件或调用 GetMediaPipeline API 确定管道状态是否为 InProgress

管道状态达到 InProgress 后,媒体(IndividualAudioMixedAudio 的任意组合)就会流式传输到 KVS。

对于 IndividualAudio 流类型,与会者 ID 和从 KinesisVideoStreamPool 中分配的 KVS 流之间存在 1:1 映射。此映射适用于媒体管道的整个生命周期。

要了解哪个 KVS 流映射至与会者 ID,或者哪个 KVS 流被分配至 MixedAudio,使用以下方法之一:

  • 使用事件总线通知。每条通知提供诸如与会者 ID 以及流式传输至与会者音频的 KVS ARN 之类的信息。当 IndividualAudioMixedAudio 流会话开始时,我们会发送一个 chime:MediaPipelineKinesisVideoStreamStart 事件。当与会者离开调用(针对 IndividualAudio)或会议结束时,流会话就会结束。

  • 使用 Kinesis Video Streams 随每个片段发送的持久性元数据。元数据包含与事件总线发送的内容相似的信息。生成器需要通过此解决方案在 ListStreams Kinesis Video Streams API 中将池名称指定为前缀来解析 KinesisVideoStreamPool 的所有流。

删除会议时或为媒体流管道调用 DeleteMediaPipeline API 时,该媒体流管道就会终止。此外,还会发送事件总线通知以指示媒体管道终止。