IVS 服务器端合成入门 - Amazon IVS

IVS 服务器端合成入门

本文档将引导您完成 IVS 服务器端合成入门所涉及的步骤。

先决条件

要使用服务器端合成,您必须有一个包含活跃发布者的舞台,并使用 IVS 频道和/或 S3 存储桶作为合成目标。下面,我们将介绍一种可能的工作流程,它使用 EventBridge 事件来开始合成,当参与者发布时,该合成将舞台广播到 IVS 频道。或者,您可以根据自己的应用程序逻辑开始和停止合成。请参阅合成录制以获得另一个示例,它展示了如何使用服务器端合成将舞台直接录制到 S3 存储桶。

  1. 创建 IVS 频道。请参阅 Amazon IVS 低延迟直播功能入门

  2. 为每个发布者创建 IVS 舞台和参与者令牌。

  3. 创建 EncoderConfiguration

  4. 加入舞台并发布到该舞台。(请参阅实时流式广播 SDK 指南的“发布和订阅”部分:WebAndroidiOS。)

  5. 当您收到参与者发布的 EventBridge 事件时,使用所需的布局配置调用 StartComposition

  6. 等待几秒钟,然后在频道回放中观看合成视图。

服务器端合成工作流程,在参与者发布时使用 EventBridge 事件开始合成。

注意:发布者参与者在舞台上处于非活动状态 60 秒后,合成执行自动关闭。此时,合成终止,并转换到 STOPPED 状态。合成处于 STOPPED 状态几分钟后将自动删除。

CLI 说明

使用 Amazon CLI 是一个高级选项,需要先在计算机上下载并配置 CLI。有关详细信息,请参阅 Amazon 命令行界面用户指南

现在,您可以使用 CLI 创建和管理资源。合成端点位于 ivs-realtime 命名空间下。

创建 EncoderConfiguration 资源

EncoderConfiguration 是一个对象,允许您自定义生成的视频的格式(高度、宽度、比特率和其他流式传输参数)。每次调用合成端点时,您都可以重复使用 EncoderConfiguration,如下一步中所述。

下面的命令创建 EncoderConfiguration 资源,用于配置服务器端视频合成参数,例如视频比特率、帧速率和分辨率:

aws ivs-realtime create-encoder-configuration --name "MyEncoderConfig" --video "bitrate=2500000,height=720,width=1280,framerate=30"

响应如下:

{ "encoderConfiguration": { "arn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/9W59OBY2M8s4", "name": "MyEncoderConfig", "tags": {}, "video": { "bitrate": 2500000, "framerate": 30, "height": 720, "width": 1280 } } }

开始合成

使用上面响应中提供的 EncoderConfiguration ARN,创建您的合成资源:

网格布局示例

aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/9W59OBY2M8s4"}}]' --layout '{"grid":{"featuredParticipantAttribute":"isFeatured","videoFillMode":"COVER","gridGap":0}}'

PiP 布局示例

aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/DEkQHWPVaOwO"}}]' --layout '{"pip":{"pipParticipantAttribute":"isPip","pipOffset":10,"pipPosition":"TOP_RIGHT"}}'

注意:您可以使用此工具更轻松地根据您选择的布局生成 --layout 配置。

响应将显示该合成使用 STARTING 状态创建。一旦合成开始发布合成,状态就会转换为 ACTIVE。(您可以通过调用 ListCompositions 或 GetComposition 端点来查看状态。)

合成处于 ACTIVE 后,可以使用 ListCompositions 在 IVS 频道上看到 IVS 舞台的合成视图:

aws ivs-realtime list-compositions

响应如下:

{ "compositions": [ { "arn": "arn:aws:ivs:us-east-1:927810967299:composition/YVoaXkKdEdRP", "destinations": [ { "id": "bD9rRoN91fHU", "startTime": "2023-09-21T15:38:39+00:00", "state": "ACTIVE" } ], "stageArn": "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik", "startTime": "2023-09-21T15:38:37+00:00", "state": "ACTIVE", "tags": {} } ] }

注意:您需要让发布者参与者主动发布到舞台上,以使合成保持活动状态。有关更多信息,请参阅实时流式广播 SDK 指南的“发布和订阅”部分:WebAndroidiOS。您必须为每位参与者创建不同的舞台令牌。