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 指南
-
下载并安装此软件:https://obsproject.com/download
。 -
单击设置。在设置面板的流部分,从服务下拉列表中选择自定义。
-
对于服务器,请输入暂存区的 RTMP 或 RTMPS 端点。
-
在流密钥中,输入来自摄取配置的
streamKey。 -
如常配置视频设置,但有一些限制:
-
IVS 实时直播功能支持高达 720p 的输入,速度为 8.5 Mbps。如果超出这些限制,则流将断开连接。
-
建议在输出面板中将关键帧间隔设置为 1s 或 2s。较低的关键帧间隔可以让观众更快地开始视频播放。还建议将 CPU 使用率预设设置为 veryfast,将调谐设置为 zerolatency,以实现最低延迟。
-
由于 OBS 不支持联播,因此建议将比特率保持在 2.5 Mbps 以下。这样,使用较低带宽连接的观众也能观看。
-
禁用 B 帧,因为带有 B 帧的流将自动断开连接。请执行以下操作之一:
-
在 x264 选项中,输入
bframes=0 sliced-threads=0。 -
如果可以选择 B 帧,则将其设置为 0(例如,对于 NVENC)。
-
注意:RTMP 流必须同时包含音频和视频轨道,否则会被断开。
-
-
选择开始直播
重要提示:如果编码器的最大比特率设置为 8.5 Mbps,则发布者偶尔会从会话中消失。这是因为最大比特率设置只是一个目标,而编码器偶尔会超出目标值。为防止这种情况,请将编码器的最大比特率设置得更低;例如设置为 6 Mbps。
E-RTMP 多轨道视频
IVS 支持 E-RTMP(增强型实时消息协议)的多轨道视频功能,允许将单个 RTMP 流中多种质量的视频发布到 IVS 暂存区。这支持自适应比特率流,因此订阅用户可以自动以网络连接的最佳质量观看。
摄取后,不同质量的视频会作为联播层传送给订阅用户。要配置订阅用户接收的层,请参阅实时直播功能广播 SDK 指南中的“联播分层编码”部分:Android、iOS 和 Web。
有关示例代码,请参阅 GitHub 上的 aws-samples/sample-amazon-ivs-multitrack-video
下图说明了多轨道视频发布的工作原理:
OBS 指南
-
下载并安装 OBS Studio:
-
Windows:从 OBS Studio 30.2 开始支持多轨道视频。
-
macOS:从 OBS Studio 31.1 测试版(仅限 Apple Silicon)开始,支持多轨道视频。
-
-
单击设置。在设置面板的流部分,从服务下拉列表中选择 Amazon IVS。
-
对于服务器,将设置保留为自动。
-
在流密钥中,输入来自摄取配置的
streamKey。 -
在多轨道视频部分下,选中启用多轨道视频。
-
在视频面板中,设置所需的基础(画布分辨率)和输出(缩放)分辨率。IVS 实时直播功能支持高达 720p 的输入。如果超出此限制,则流将断开连接。
启用多轨道视频后,视频轨道数量、比特率和关键帧间隔等设置将根据设备的功能自动配置。
-
选择开始流式传输。
使用 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 私有摄取。