IVS RTMP 发布 | 实时直播功能 - Amazon IVS

IVS RTMP 发布 | 实时直播功能

本文档概述使用 RTMP 发布到 IVS 暂存区的过程。有关各种摄取选项的其他详细信息,请参阅流摄取文档

先决条件

创建舞台

要创建暂存区,请使用以下命令:

aws ivs-realtime create-stage --name "test-stage"

有关详细信息,包括响应,请参阅 CreateStage

重要提示:请注意响应中的 endpoints 字段,其列出了 RTMP 和 RTMPS 端点。设置 RTMP 编码器时需要这些端点。

创建摄取配置

要使用 RTMPS 发布到暂存区,必须先创建摄取配置并将其与您的暂存区相关联。当您发布到暂存区时(使用摄取配置中的流密钥和暂存区中的 RTMP 端点),媒体将以参与者身份发布到暂存区。您可以选择指定 userId 和自定义 attributes,其将与连接到暂存区的参与者相关联。

aws ivs-realtime create-ingest-configuration \ --name 'test' \ --stage-arn arn:aws:ivs:us-east-1:123456789012:stage/8faHz1SQp0ik \ --user-id '123' \ --ingest-protocol 'RTMPS'

有关详细信息,包括响应,请参阅 CreateIngestConfiguration

创建摄取配置时,您可以预先将其与特定暂存区 ARN 相关联。如果没有此关联,则流密钥将无法使用。此外,摄取配置(包括 stageArn 字段)可以通过 UpdateIngestConfiguration 操作进行更新,这样您就可以在不同的舞台重复使用相同的配置。

注意:摄取配置 insecureIngest 字段默认为 false,需要使用 RTMPS。RTMP 连接将被拒绝。如果必须使用 RTMP,则请将 insecureIngest 设置为 true。我们建议使用 RTMPS,除非是在需要 RTMP 的特定且经过验证的使用场景。

RTMP 单轨道视频

下面我们介绍如何使用 OBS Studio;但是,您可以使用符合 IVS 媒体规范的任何 RTMP 编码器。

OBS 指南

  1. 下载并安装此软件:https://obsproject.com/download

  2. 单击设置。在设置面板的部分,从服务下拉列表中选择自定义

  3. 对于服务器,请输入暂存区的 RTMP 或 RTMPS 端点。

  4. 流密钥中,输入来自摄取配置的 streamKey

  5. 如常配置视频设置,但有一些限制:

    1. IVS 实时直播功能支持高达 720p 的输入,速度为 8.5 Mbps。如果超出这些限制,则流将断开连接。

    2. 建议在输出面板中将关键帧间隔设置为 1s 或 2s。较低的关键帧间隔可以让观众更快地开始视频播放。还建议将 CPU 使用率预设设置为 veryfast,将调谐设置为 zerolatency,以实现最低延迟。

    3. 由于 OBS 不支持联播,因此建议将比特率保持在 2.5 Mbps 以下。这样,使用较低带宽连接的观众也能观看。

    4. 禁用 B 帧,因为带有 B 帧的流将自动断开连接。请执行以下操作之一:

      • 在 x264 选项中,输入 bframes=0 sliced-threads=0

      • 如果可以选择 B 帧,则将其设置为 0(例如,对于 NVENC)。

    注意:RTMP 流必须同时包含音频和视频轨道,否则会被断开。

  6. 选择开始直播

重要提示:如果编码器的最大比特率设置为 8.5 Mbps,则发布者偶尔会从会话中消失。这是因为最大比特率设置只是一个目标,而编码器偶尔会超出目标值。为防止这种情况,请将编码器的最大比特率设置得更低;例如设置为 6 Mbps。

E-RTMP 多轨道视频

IVS 支持 E-RTMP(增强型实时消息协议)的多轨道视频功能,允许将单个 RTMP 流中多种质量的视频发布到 IVS 暂存区。这支持自适应比特率流,因此订阅用户可以自动以网络连接的最佳质量观看。

摄取后,不同质量的视频会作为联播层传送给订阅用户。要配置订阅用户接收的层,请参阅实时直播功能广播 SDK 指南中的“联播分层编码”部分:AndroidiOSWeb

有关示例代码,请参阅 GitHub 上的 aws-samples/sample-amazon-ivs-multitrack-video

下图说明了多轨道视频发布的工作原理:

将多轨道视频发布到暂存区。”

OBS 指南

  1. 下载并安装 OBS Studio:

    1. Windows:从 OBS Studio 30.2 开始支持多轨道视频。

    2. macOS:从 OBS Studio 31.1 测试版(仅限 Apple Silicon)开始,支持多轨道视频。

    3. 下载地址:https://obsproject.com/download

  2. 单击设置。在设置面板的部分,从服务下拉列表中选择 Amazon IVS

  3. 对于服务器,将设置保留为自动

  4. 流密钥中,输入来自摄取配置的 streamKey

  5. 多轨道视频部分下,选中启用多轨道视频

  6. 视频面板中,设置所需的基础(画布分辨率)输出(缩放)分辨率。IVS 实时直播功能支持高达 720p 的输入。如果超出此限制,则流将断开连接。

    启用多轨道视频后,视频轨道数量、比特率和关键帧间隔等设置将根据设备的功能自动配置。

  7. 选择开始流式传输

使用 FFFmpeg 发布

您可以使用 FFmpeg 将实时视频和音频发布到通过 RTMP 传输的 IVS 实时流媒体中。FFmpeg 是一个免费的开源项目,包括一个全面的软件库和工具,用于处理视频、音频以及其他多媒体内容。

以下示例命令发布包含颜色图案和色调的流:

ffmpeg \ -re \ -f lavfi -i testsrc=d=300:s=1280x720:r=60,format=yuv420p \ -f lavfi -i sine=f=440:b=4:d=300 \ -c:v libx264 \ -b:v 2500k \ -g 60 -bf 0 \ -profile:v baseline \ -preset veryfast \ -tune zerolatency \ -x264opts sliced-threads=0 \ -c:a aac \ -ac 2 \ -b:a 160k \ -ar 48000 \ -f flv \ rtmps://$INGEST_ENDPOINT/app/$STREAM_KEY

在示例中,用 IVS 控制台或 API 中您自己的值替换 $INGEST_ENDPOINT$STREAM_KEY

此配置符合 IVS 实时流媒体的支持的媒体规范,包括 H.264 视频(基准配置文件、无 B 帧、无切片线程)和 AAC 音频。

私有摄取到舞台

您可以使用接口 VPC 端点将 RTMP(S) 和 E-RTMP(S) 流从 Amazon VPC 内的资源或从 Direct Connect 发布到舞台。这样就可以在您的 VPC 和 IVS 之间建立私有连接,确保摄取流量位于 AWS 网络内。要为 IVS 设置和配置接口 VPC 端点,请参阅《IVS 低延迟直播用户指南》中的 IVS 私有摄取