步骤 5:设置流式传输软件 - Amazon Interactive Video Service

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

步骤 5:设置流式传输软件

您可以通过以下方式(低延迟)流式传输到 Amazon IVS:

  • 支持 RTMPS 的原生 IVS 广播 SDK。我们推荐采用此方法,尤其是在生产场景中。

  • Amazon IVS 控制台 — 适用于测试流。

  • 其他流式传输软件 — 下面描述了两个示例,即开放广播软件(OBS)FFmpeg。它们都像 Amazon IVS 一样支持 RTMPS 和 RTMP。RTMPS 通过使用已加密 TLS 流实现高安全性。您可以使用任何支持 RTMPS 或 RTMP 的流式传输软件。

键编码器设置为关键帧间隔(2 秒)和分辨率/比特率/帧速率(相互关联)。有关编码器设置的更多信息,请参阅:

备注:

  • Amazon IVS 流的最长持续时间为 48 小时。之后,流将终止,流传输会话将断开连接。成功重新连接(自动或手动)将启动新流。

  • 如果您的编码器停止发送数据(例如,出现临时网络问题),Amazon IVS 将等待 30 秒钟。如果在此期间未收到直播数据,Amazon IVS 将断开连接。

使用 Amazon IVS 广播开发工具包进行流传输

要从 iOS 或 Android 应用程序中进行广播,您可以使用 Amazon IVS 广播开发工具包。广播开发工具包利用 Amazon IVS 架构,并将实现 Amazon IVS 的持续改进和新功能。作为本机移动广播开发工具包,它旨在最大限度地减少对应用程序以及用户有权访问应用程序所在设备的性能影响。

要从 … 广播 您可以使用 … 注意事项
您的 Android 或 iOS 应用程序 Amazon IVS Android 或 iOS 广播 SDK 作为本机移动广播开发工具包,它旨在最大限度地减少对应用程序以及用户有权访问应用程序所在设备的性能影响。
一个 Web 环境 Amazon IVS Web 广播 SDK 作为一种 Web 广播 SDK,Amazon IVS Web 广播 SDK 让您能够使用 WebRTC 从 Web 环境进行广播。它提供跨浏览器和跨平台支持。

有关更多信息,请参阅 IVS 广播 SDK(低延迟流式传输)

使用 Amazon IVS 控制台进行流式传输

  1. 打开 Amazon IVS 控制台

    (您还可通过 Amazon 管理控制台访问 Amazon IVS 控制台。)

  2. 在导航窗格中,选择通道。(如果导航窗格已折叠,请选择汉堡图标以将其展开。)

  3. 选择您要广播的通道,以转至该通道的详细信息页面。

  4. 选择广播选项卡。(这些选项卡在常规配置部分下。)

  5. 系统将提示您授予 IVS 控制台访问您摄像头和麦克风的权限;允许这些权限。

  6. 广播选项卡的底部,使用下拉框为麦克风和摄像头选择输入设备。

  7. 要开始流式传输,请选择开始广播

  8. 要查看实时流,请转至播放选项卡。

    注意:启动流后,预计会有短暂的延迟(通常不到 30 秒),然后才能在“播放”选项卡中查看。

您可以使用此功能同时向多个通道广播。

注意:从控制台进行流式传输会消耗资源,并且您将产生实时视频输入费用。要了解更多信息,请参阅 IVS 定价页面上的实时视频输入费用

通过 OBS Studio 进行流传输

(OBS Studio) 是一个免费的开源软件套件,用于录制和实时流传输。OBS 提供实时源和设备捕获、场景合成、编码、录制和流传输。

按照以下步骤让 OBS Studio 快速设置并运行。

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

  2. 运行 OBS Studio 自动配置向导,其在首次加载 OBS Studio 时会显示。执行以下步骤并接受默认值。

  3. Stream Information(流信息)中,从 Service(服务)下拉列表中选择 Custom...(自定义……),然后输入 Server(Ingest server) [服务器(提取服务器)] 和 Stream Key(流密钥)。

    如果您使用 Amazon IVS 控制台创建了通道:

    • 您在 OBS 中输入的 Server(服务器)是控制台中的 Ingest server(提取服务器):

      rtmps://a1b2c3d4e5f6.global-contribute.live-video.net:443/app/

    • 您在 OBS 中输入的 Stream key(流密钥)是控制台中的 Stream key(流密钥):

      sk_us-west-2_abcd1234efgh5678ijkl

    如果您使用 Amazon CLI 创建了通道:

    • 您在 OBS 中输入的 Server(服务器)是以下四个选项的组合:

      • 提取协议:rtmps://(注意:如果您为不安全的提取流式传输创建了通道,请指定 rtmp://

      • CLI 响应中的提取终端节点

        a1b2c3d4e5f6.global-contribute.live-video.net

      • 端口:443

      • 路径:/app/

      完整条目为:

      rtmps://a1b2c3d4e5f6.global-contribute.live-video.net:443/app/

    • 您在 OBS 中输入的 Stream key(流密钥)是 CLI 响应的 streamKey value(流密钥值):

      sk_us-west-2_abcd1234efgh5678ijkl

  4. 有关视频输出分辨率比特率的信息,请参阅《Amazon IVS 流传输配置》中的通道类型。如果 OBS 向导选择的任一值超过了 Amazon IVS 允许的值,则应手动调整这些值以避免与 Amazon IVS 连接失败。向导完成后:

    1. 要调整视频分辨率,请使用 Settings > Video > Output (Scaled) Resolution [设置 > 视频 > 输出(缩放)分辨率]。

    2. 要调整视频比特率,请使用 Settings > Output > Streaming > Video Bitrate(设置 > 输出 > 流传输 > 视频比特率)。

  5. 我们建议使用 2 秒的 Keyframe Interval(关键帧间隔),以提高流稳定性并避免查看者播放时缓冲。向导完成后,转到 Settings > Output > Output Mode(设置 > 输出 > 输出模式),选择 Advanced(高级),然后在 Streaming(流传输)选项卡上,确保 Keyframe Interval(关键帧间隔)为 2。

  6. 在 OBS Studio 主窗口中,选择 Start Streaming(开始流传输)。

有关使用 OBS Studio 进行流传输的更多信息,请参阅 OBS Studio 快速入门

稍后,您可以手动修改 OBS 设置:

  1. 选择 Settings (设置) > Stream (流)

  2. 从下拉列表中选择 Custom (自定义)

  3. 粘贴至 Server (服务器) 和/或 Stream Key (流密钥)

您可以随时再次运行向导:选择 Tools (工具) > Auto-Configuration Wizard (自动配置向导)

(可选)在 Settings (设置) > General (常规) 中,启用本地录制以保存实时流以供日后使用。如前所述,广播与亚马逊云科技之间或亚马逊云科技内部出现网络问题可能会在录制流时导致一些数据丢失。在这些情况下,Amazon IVS 将实时流优先于录制。通过流传输工具进行本地录制可提供冗余。

建议定期检查 OBS Studio 更新,并更新到最新版本。(例如,如果出现“无法连接到服务器”错误,则可能是使用了不支持 RTMPS 的旧版 OBS Studio。)

使用 FFmpeg 对录制的视频进行流传输

按照以下步骤进行操作:

  1. 下载并安装 FFmpeg:https://www.ffmpeg.org/download.html

  2. $VIDEO_FILEPATH 设置为要进行流传输的 MP4 视频的位置:

    VIDEO_FILEPATH=/home/test/my_video.mp4
  3. 设置STREAM_KEY为你的 StreamKey

    STREAM_KEY=sk_us-west-2_abcd1234efgh5678ijkl
  4. INGEST_ENDPOINT 设置为您的 ingestEndpoint(Amazon CLI 中):

    INGEST_ENDPOINT=a1b2c3d4e5f6.global-contribute.live-video.net
  5. 使用以下终端命令开始流传输(显示在一行中):

    ffmpeg -re -stream_loop -1 -i $VIDEO_FILEPATH -r 30 -c:v libx264 -pix_fmt yuv420p -profile:v main -preset veryfast -x264opts "nal-hrd=cbr:no-scenecut" -minrate 3000 -maxrate 3000 -g 60 -c:a aac -b:a 160k -ac 2 -ar 44100 -f flv rtmps://$INGEST_ENDPOINT:443/app/$STREAM_KEY

    请注意,以上命令是一个示例。对于生产流传输,请根据您的需求调整参数。