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

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

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

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

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

  • 其他流媒体软件和硬件编码器:您可以使用任何支持 RTMP、RTMPS 或 SRT 协议的流媒体编码器。下面介绍了几个使用开放广播软件(OBS)和带有 RTMPS 和 SRT 的 FFmpeg 的示例。RTMPS 通过使用已加密 TLS 流实现高安全性。

键编码器设置为关键帧间隔(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 定价页面上的实时视频输入费用

使用 RTMPS 通过 OBS Studio 进行直播

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

按照以下步骤快速设置并运行 OBS Studio v30.2 或更高版本:

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

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

  3. 直播信息中,从服务下拉列表中选择 Amazon IVS,然后输入直播密钥

    如果您使用了 Amazon IVS 控制台创建通道,则您在 OBS 中输入的直播密钥是控制台中的直播密钥sk_us-west-2_abcd1234efgh5678ijkl

    如果您使用了 AWS CLI 创建通道,则您在 OBS 中输入的直播密钥是 CLI 响应中的 streamKey 值sk_us-west-2_abcd1234efgh5678ijkl

    如果您的 IVS 通道配置为多轨道视频输入,请选择启用多轨道视频。(可选)配置最大视频轨道最大直播带宽设置,这些设置用于限制自动配置的直播设置。

  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. 从下拉列表中选择 Amazon IVS

  3. 粘贴直播密钥

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

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

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

使用 SRT 通过 OBS Studio 进行直播

按照以下步骤快速设置并运行安全可靠传输协议:

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

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

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

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

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

      • 提取协议:srt://

      • CLI 响应中来自 srt 结构的端点

        a1b2c3d4e5f6.srt.live-video.net

      • 端口:9000

      • 一个 streamid,是 CLI 响应中的 streamKey 值

        sk_us-west-2_abcd1234efgh5678ijkl

      • 密码,用于加密内容。仅在未启用不安全摄取时才使用此选项。

        ZU5A3yrjGAkghUNDr0c5NXBhsPrjlmtcKMNBluh7oImwJQ3ijeyClvMKxlpPcGAMziICJ

      完整条目为:

      srt://a1b2c3d4e5f6.srt.live-video.net:9000?streamid=sk_us-west-2_abcd1234efgh5678ijkl&passphrase=ZU5A3yrjGAkghUNDr0c5NXBhsPrjlmtcKMNBluh7oImwJQ3ijeyClvMKxlpPcGAMziICJ

    • 您在 OBS 中输入的直播密钥对于 SRT 协议将保持为空。

  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 设置:

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

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

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

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

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

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

使用 RTMPS 通过 FFmpeg 直播录制的视频

按照以下步骤进行操作:

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

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

    VIDEO_FILEPATH=/home/test/my_video.mp4
  3. STREAM_KEY 设置为您的流密钥

    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

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

使用 SRT 通过 FFmpeg 直播录制的视频

  1. 下载并安装 FFmpeg:https://www.ffmpeg.org/download.html。如果您使用的是旧版/编译版本的 FFmpeg,请使用 --enable-libsrt 标志构建一个新版本。

  2. 验证 SRT 是否可以在 FFmpeg 中使用:运行以下命令并确保输出中包含 libsrt。如果输出中没有 libsrt,请重建或获取支持 SRT 的较新版本的 FFmpeg。

    ffmpeg -version | grep enable-libsrt
  3. $VIDEO_FILEPATH 设置为要进行流传输的 MP4 视频的位置:

    VIDEO_FILEPATH=/home/test/my_video.mp4
  4. STREAM_KEY 设置为您的流密钥

    STREAM_KEY=sk_us-west-2_abcd1234efgh5678ijkl
  5. INGEST_ENDPOINT 设置为您的端点(从 srt 对象下的 Amazon CLI 中):

    INGEST_ENDPOINT=a1b2c3d4e5f6.srt.live-video.net
  6. PASSPHRASE 设置为您的密码(从 srt 对象下的 Amazon CLI 中)。仅当通道未启用不安全摄取时,才使用密码。

    PASSPHRASE=ZU5A3yrjGAkghUNDr0c5NXBhsPrjlmtcKMNBluh7oImwJQ3ijeyClvMKxlpPcGAMziICJ
  7. 使用以下终端命令开始流传输(显示在一行中):

    ffmpeg -re -i $VIDEO_FILEPATH -c copy -f mpegts "srt://$INGEST_ENDPOINT:9000?streamid=$STREAM_KEY&passphrase=$PASSPHRASE”