Amazon IVS 流传输配置 - Amazon Interactive Video Service

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

Amazon IVS 流传输配置

开发人员使用 Amazon Interactive Video Service (IVS) 可轻松地向全球观众提供低延迟的视频。借助 Amazon IVS,主播只需生成视频流,然后将视频流发送到 Amazon IVS 即可。Amazon IVS 使用 Amazon IVS 播放器处理视频(提取和转码),传送给向观众并播放。

适用于实时流传输的解决方案有很多。无论您有一个工作室,配备了多台摄像头、视觉切换台、图形合成和各种混音设备,还是计划从智能手机上开始制作第一个视频流,都需要处理一些相同的概念和编码参数。

本文档介绍了如何配置视频编码器以流传输到 Amazon IVS。本文档的受众是希望在其应用程序中构建流传输功能的开发人员。

请注意,IVS 低延迟直播不支持纯音频输入。

先决条件

请按照 IVS 低延迟流式传输入门 中的步骤创建通道并设置流传输。在此过程中,会分配一个通道 ARN (Amazon Resource Name) 和流密钥,以及用于提取和播放流的 URL。您需要将流传输应用程序指向提取 URL。

阅读此文档之前,您应熟悉以下内容:

降低延迟

Amazon IVS 低延迟流传输与大多数流传输应用程序兼容,只需对流传输应用程序配置进行少量更改。为了尽可能降低延迟,您必须使用 Amazon IVS 播放器;不支持第三方 HLS 视频播放器。请参阅 Amazon IVS 播放器开发工具包文档。

要为低延迟流传输准备流传输应用程序,请执行以下操作。(注意:并非所有这些选项都可用于每个流传输应用程序。)

  • 在视频编码器上,设置IDR/Keyframe为 2 秒的间隔(或 1 秒,以获得更低的 end-to-end 延迟)。

    IDR/Keyframe直接影响直播启动的时间和相关 EventBridge 事件(直播开始和录制开始)的延迟。如果 IDR/Keyframe 为 2 秒,则流启动延迟将大约为 6-7 秒。如果 IDR/Keyframe 为 1 秒,则流启动延迟将大约为 3-4 秒。仅在初始流启动延迟期之后,您的视频才可供观众观看,并自动录制到 Amazon S3。

    更短的关键帧间隔(1 秒)存在 QoS 权衡。这可能会导致 Amazon IVS 播放器的自适应比特率流式处理 (ABR) 更频繁地切换分辨率;分段大小越小,因此 ABR 检查越频繁。由于提高了分辨率切换和/或观众的网络无法足够快速地下载分段,缓冲可能会增加。决定使用 1 秒还是 2 秒关键帧间隔时,评估这些权衡。

    避免将 IDR/Keyframe 设置为高于 5 秒的值。直播流启动延迟不仅会比使用 1 或 2 秒时长,而且 IVS 也无法保证为播放生成的每个片段都以 IDR/keyframe 开头。当观看者开始播放或更改渲染时,不以 IDR/keyframe 开头的片段可能会导致解码错误或视觉失真。

  • 如果适用,请在 x264 配置中将编码器设置为零延迟调整。

  • 确保缓冲区大小 (VBV) 不超过流的平均比特率 (kilobits-per-second)。

避免使用第三方流传输/转发服务

强烈建议不要使用第三方服务将内容重新流传输或转发到 Amazon IVS。这将导致额外的延迟。为了降低延迟,请直接流传输到 Amazon IVS。

编码器设置

流摄取:编解码器、RTMPS 和端口 443

编解码器:Amazon IVS 视频支持 H.264,音频支持 AAC (LC)。

Amazon IVS 支持流传输软件和硬件中最常用的安全提取协议 RTMPS(基于 TLS/SSL 连接的实时消息传输协议)。Amazon IVS 流传输和播放需要使用 TLS 1.2 或更高版本。

您的视频编码器必须通过与出站端口 443/TCP 关联的 RTMPS 协议连接到 Amazon IVS 提取。为确保这一点,请指定 IVS 摄取服务器,其中包含路径中的端口:

rtmps://<IVS-ingest-server>/<IVS-stream-key>

例如:

rtmps://a1b2c3d4e5f6.global-contribute.live-video.net:443/app/<IVS-stream-key>

也可以将 IVS 通道配置为允许不安全的 RTMP 提取,但我们建议使用 RTMPS,除非是在需要 RTMP 的特定且经过验证的使用场景。流式传输 RTMP 时,务必将协议设置为 rtmp:// 并删除 :443 端口。例如:

rtmp://a1b2c3d4e5f6.global-contribute.live-video.net/app/<IVS-stream-key>

分辨率/比特率/FPS

直播的分辨率在很大程度上决定了其比特率和帧速率(frames-per-second或 FPS)。请使用以下建议准则。请注意,下面显示的分辨率是横向(水平 x 垂直),反转即为纵向。

可接受的质量 (SD) 480p (852x480) 优质 (HD) 720p (1280x720) 高品质(全高清)1080p (1920x1080)
比特率 高达 1500 Kbps 高达 4500 Kbps 高达 8500 Kbps
FPS 30 30 或 60 30 或 60
关键帧间隔 2 秒 2 秒 2 秒

比特率、FPS 和分辨率都是相互关联的。最佳值取决于具体情况,并且可能很复杂,因此难以确定。最佳建议是从上述值开始试验(如需要)。目标是在流传输过程中视频组件清晰流畅地运行,并在可用带宽内保持良好的分辨率。提高帧率和/或分辨率可提高整体视频质量,但这必然受带宽的限制。

Amazon IVS 可支持高达 60 FPS 的帧率(包括欧洲 PAL 25 和 50 标准帧率)。只要带宽足够,帧率越高,质量越好。根据应用的不同,低帧率也可以接受;例如,安全摄像头。

通道类型

通道类型决定可接受的分辨率和比特率。如果您超过支持的输入分辨率或比特率,则直播流可能会立即断开连接

有四种通道类型:STANDARDADVANCED_SDADVANCED_HD,以及 BASIC。创建通道时,默认类型为 STANDARD

根据通道类型,视频可能为已转码已转码多路复用

  • STANDARD 和 ADVANCED 通道的视频已转码;从原始输入中生成多种品质,以根据观众的设备和网络情况自动为他们提供最佳体验。转码可在各种下载速度范围内实现更高的播放质量。

  • BASIC 通道的视频已转码多路复用:Amazon IVS 将原始输入传送给查看器。

所有已转码通道都有已转码预设,用于确定生成哪些渲染。可以把它们想象成 ABR 阶梯。它们允许您在可用的下载带宽和视频质量之间进行权衡,以优化观看体验。

  • STANDARD 通道有一个默认的转码预设。

  • ADVANCED 通道有两个可选的转码预设:

    • 受限的带宽传输对每个质量级别使用比 STANDARD 低的比特率。如果您的下载带宽较低和/或视频内容简单(例如,讲话者头部特写),则请使用它。

    • 较高的带宽传输对每个质量级别使用较高的比特率。如果您有较高的下载带宽和/或复杂的视频内容(例如闪光灯和快速场景切换),则请使用它。这是默认模式。

标准通道

STANDARD 通道已转码。生成的最高视频分辨率为全高清,1080p。这是默认通道类型。

  • 转码预设:有一个默认的转码预设阶梯。

  • 音频:对于 360p 及以下的渲染,音频会进行转码。对于其他渲染,将传递原始音频。

输入分辨率和最大比特率 阶梯详情

在 8.5Mbps 下为 1080p 60 帧

  1. 在源码率下为 1080p 60 帧

  2. 在 3.4Mbps 下为 720p 60 帧

  3. 在 1.4Mbps 下为 480p 30 帧

  4. 在 0.63Mbps 下为 360p 30 帧

  5. 在 0.23Mbps 下为 160p 30 帧

在 8.5Mbps 下为 1080p 30 帧

  1. 在源码率下为 1080p 30 帧

  2. 在 2.4Mbps 下为 720p 30 帧

  3. 在 1.4Mbps 下为 480p 30 帧

  4. 在 0.63Mbps 下为 360p 30 帧

  5. 在 0.23Mbps 下为 160p 30 帧

在 8.5Mbps 下为低于 1080p 60 帧且大于 720p 60 帧

  1. 源传递

  2. 在 3.4Mbps 下为 720p 60 帧

  3. 在 1.4Mbps 下为 480p 30 帧

  4. 在 0.63Mbps 下为 360p 30 帧

  5. 在 0.23Mbps 下为 160p 30 帧

在 8.5Mbps 下为低于 1080p 30 帧且大于 720p 30 帧

  1. 源传递

  2. 在 2.4Mbps 下为 720p 30 帧

  3. 在 1.4Mbps 下为 480p 30 帧

  4. 在 0.63Mbps 下为 360p 30 帧

  5. 在 0.23Mbps 下为 160p 30 帧

在 8.5Mbps 下为 720p 60 帧

  1. 在 3.4Mbps 下为 720p 60 帧

  2. 在 1.4Mbps 下为 480p 30 帧

  3. 在 0.63Mbps 下为 360p 30 帧

  4. 在 0.23Mbps 下为 160p 30 帧

在 8.5Mbps 下为 720p 30 帧

  1. 在 2.4Mbps 下为 720p 30 帧

  2. 在 1.4Mbps 下为 480p 30 帧

  3. 在 0.63Mbps 下为 360p 30 帧

  4. 在 0.23Mbps 下为 160p 30 帧

在 8.5Mbps 下为小于 720p 30 帧/60 帧且大于或等于 480p 30 帧/60 帧

  1. 在 1.4Mbps 下为 480p 30 帧

  2. 在 0.63Mbps 下为 360p 30 帧

  3. 在 0.23Mbps 下为 160p 30 帧

高级高清通道

ADVANCED-HD 通道已转码。制作的最高视频分辨率为高清,720p。

  • 转码预设:有两个可选择的转码预设阶梯。

  • 音频:对于 360p 及以下的渲染,音频会进行转码。对于其他渲染,将传递原始音频。

输入分辨率和最大比特率 阶梯详情

在 8.5Mbps 下为 720p 60 帧至 1080p 60 帧

转码预设:更高的带宽传输(默认):

  1. 在 3Mbps 下为 720p 60 帧

  2. 在 1.3Mbps 下为 480p 30 帧

  3. 在 0.7Mbps 下为 360p 30 帧

  4. 在 0.27Mbps 下为 160p 30 帧

  5. 在 0.08Mbps 下仅限音频

转码预设:带宽传输受限:

  1. 在 2.2Mbps 下为 720p 60 帧

  2. 在 0.8Mbps 下为 480p 30 帧

  3. 在 0.4Mbps 下为 360p 30 帧

  4. 在 0.22Mbps 下为 160p 30 帧

  5. 在 0.08Mbps 下仅限音频

在 8.5Mbps 下为 720p 30 帧至 1080p 30 帧

转码预设:更高的带宽传输(默认):

  1. 在 2.3Mbps 下为 720p 30 帧

  2. 在 1.3Mbps 下为 480p 30 帧

  3. 在 0.7Mbps 下为 360p 30 帧

  4. 在 0.27Mbps 下为 160p 30 帧

  5. 在 0.08Mbps 下仅限音频

转码预设:带宽传输受限:

  1. 在 1.9Mbps 下为 720p 30 帧

  2. 在 0.8Mbps 下为 480p 30 帧

  3. 在 0.4Mbps 下为 360p 30 帧

  4. 在 0.22Mbps 下为 160p 30 帧

  5. 在 0.08Mbps 下仅限音频

在 8.5Mbps 下为低于 720p 30 帧/60 帧且大于 480p 30 帧/60 帧

转码预设:更高的带宽传输(默认):

  1. 以 2.3Mbps 的速度进行源转码

  2. 在 1.3Mbps 下为 480p 30 帧

  3. 在 0.7Mbps 下为 360p 30 帧

  4. 在 0.27Mbps 下为 160p 30 帧

  5. 在 0.08Mbps 下仅限音频

转码预设:带宽传输受限:

  1. 以 1.9Mbps 的速度进行源转码

  2. 在 0.8Mbps 下为 480p 30 帧

  3. 在 0.4Mbps 下为 360p 30 帧

  4. 在 0.22Mbps 下为 160p 30 帧

  5. 在 0.08Mbps 下仅限音频

在 8.5Mbps 下为 480p 30 帧/60 帧

转码预设:更高的带宽传输(默认):

  1. 在 1.3Mbps 下为 480p 30 帧

  2. 在 0.7Mbps 下为 360p 30 帧

  3. 在 0.27Mbps 下为 160p 30 帧

  4. 在 0.08Mbps 下仅限音频

转码预设:带宽传输受限:

  1. 在 0.8Mbps 下为 480p 30 帧

  2. 在 0.4Mbps 下为 360p 30 帧

  3. 在 0.22Mbps 下为 160p 30 帧

  4. 在 0.08Mbps 下仅限音频

高级标清通道

ADVANCED-SD 通道已转码。可用的渲染以输入质量为上限,没有向上转换。

  • 转码预设:有两个可选择的转码预设阶梯。

  • 音频:音频已转码。

输入分辨率和最大比特率 阶梯详情

在 8.5Mbps 下为 480p 30 帧/60 帧至 1080p 30 帧/60 帧

转码预设:更高的带宽传输(默认):

  1. 在 1.3Mbps 下为 480p 30 帧

  2. 在 0.7Mbps 下为 360p 30 帧

  3. 在 0.27Mbps 下为 160p 30 帧

  4. 在 0.08Mbps 下仅限音频

转码预设:带宽传输受限:

  1. 在 0.8Mbps 下为 480p 30 帧

  2. 在 0.4Mbps 下为 360p 30 帧

  3. 在 0.22Mbps 下为 160p 30 帧

  4. 在 0.08Mbps 下仅限音频

基本通道

BASIC 通道已转码多路复用。生成了一份渲染。

  • 转码预设:不适用

  • 音频:音频已转码。

输入分辨率和最大比特率 阶梯详情

大于 480p 30 帧/60 帧且小于或等于 1080p 30 帧/60 帧,带宽为 3.5Mbps

源编码参数(无阶梯)

在 1.5Mbps 下为 480p 30 帧/60 帧

源编码参数(无阶梯)

视频设置

我们建议使用以下设置。这些设置适用于大多数 H.264 视频编码软件或硬件 API。

  • 在视频编码器上,设置IDR/Keyframe为 2 秒的间隔(或 1 秒,以获得更低的 end-to-end 延迟)。

  • H.264 级别:主要

  • 场景变化:关闭(首选)

  • 色度子样本:YUV420P

  • CABAC:首选

  • ColorSpace: BT.709(为了最大限度地提高高清电视和电脑显示器的兼容性,建议使用)。Amazon IVS 视频转码支持 ColorSpace直通;高级用户可以使用其他 ColorSpace 视频和全方位视频。

音频设置

我们支持以下设置:

  • 编解码器:AAC (LC)

  • 比特率:96 Kbps 至 320 Kbps

  • 采样率:44.1 Khz 或 48 Khz(最好与您的生产音频流相匹配)

  • 通道:最大 2 个 – 立体声(支持 1:单声道或 2:立体声音频通道)

使用 CBR,而不是 VBR

始终使用 CBR(常量 BitRate),而不是 VBR(变量 BitRate)作为编码器的速率控制方法。CBR 更适合于固定带宽特性的网络,为客户端设备提供更可预测、更稳定的视频播放。使用恒定比特率,观众可轻松选择其连接随着时间的推移能够处理的质量级别。

根据场景的复杂程度,VBR 可能会导致比特率峰值,这可能会造成视频到达 Amazon IVS 之前帧丢弃和/或在客户端播放器中进行缓冲。

我们强烈建议只使用 CBR。如果您使用 VBR,流将更容易受到缓冲和播放不流畅的影响。

使用渐进式信号

使用渐进式信号流;在制作流程和/或编码中避免任何隔行视频。渐进式流信号可生成更好的播放质量,一次显示整个帧,可避免在显示隔行信号时产生的任何运动失真。

网络要求

须拥有稳定的互联网连接,保持足够的、持续的上传流。不稳定的互联网连接可能会导致观众的视频流卡顿和滞后。

使用有线连接。 WiFi 而且,由于 QoS/Packet-Queue 优先级不佳,LTE 连接可能参差不齐或受到干扰或延迟。尽可能使用硬连线的连接来传输视频流。

计划分配的带宽比所需的最小带宽多 50%。多出的带宽是为了补偿视频比特流编码时的比特率波动。

使用专用的互联网 VLAN 对计算机进行编码。编码器使用单独的网络,可防止潜在的破坏性影响,包括:流量污染、带宽瓶颈和不利的安全因素。

隐藏式字幕

IVS 支持隐藏式字幕。如果主播想要为观众提供字幕,必须通过视频编码器以接受的格式传输字幕数据,要么将其嵌入到视频流中,或者与视频流一起传输。

Amazon IVS 接受线路 21 CEA-708/EIA-608 格式的字幕(也称为 608 over 708)。您可以使用以下方法之一传输字幕:

  • CEA-708/EIA-608 嵌入到基础视频流中,如 ATSC A/72 (SEI user_data) 中所述。这种格式在电视广播编码器中很常见。

  • CEA-708/EIA-608 通过 RTMPS 脚本/amf0 标签传输。 onCaptionInfo 这种格式在互联网广播编码器和媒体服务器(如 Elemental Technologies 和 Wowza)中很常见。Amazon IVS 播放器软件开发工具包仅支持一种语言;不支持多轨道字幕播放。

注意:Amazon IVS 播放器软件开发工具包仅在 CC1 NTSC 字段 1 中支持字幕数据。不支持多轨道字幕回放。

通过 RTMPS 传输时,有效负载须包含一个具有两个元素对的 ECMA 数组:

  • 名为 type 的字符串,包含字符 708

  • 名为 data 的字符串,其中包含以 base64 编码的 CEA-708/EIA-608 有效负载。

例如:

00000000 12 00 00 69 00 00 00 00 00 00 00 02 00 0d 6f 6e |...i..........on| 00000010 43 61 70 74 69 6f 6e 49 6e 66 6f 08 00 00 00 02 |CaptionInfo.....| 00000020 00 04 74 79 70 65 02 00 03 37 30 38 00 04 64 61 |..type...708..da| 00000030 74 61 02 00 3c 74 51 41 78 52 30 45 35 4e 41 4e |ta..<tQAxR0E5NAN| 00000040 4c 41 50 79 55 72 76 79 55 49 50 79 52 51 50 7a |LAPyUrvyUIPyRQPz| 00000050 49 35 66 7a 73 37 50 7a 76 4c 50 77 67 56 50 7a |I5fzs7PzvLPwgVPz| 00000060 33 36 66 7a 30 34 2f 78 6f 67 50 79 55 4c 2f 38 |36fz04/xogPyUL/8| 00000070 3d 00 00 09 00 00 00 74 |=......t|

如果使用 Elemental 视频编码器,请按如下方式进行设置:

  • 将字幕嵌入设置为“capture 608 Field 1”。

  • 在输出组中嵌入字幕onCaptionInfo作为 RTMPS 标签。

有关更多信息,请参阅博客文章添加隐藏式字幕到 Amazon IVS 实时流

使用 FFmpeg 的流

FFmpeg 是一个免费的开源项目,包括一个庞大的软件库,用于处理视频、音频以及其他多媒体文件和流。它可与许多操作系统和设备配合使用。

请参阅 FFmpeg 网站,了解如何安装 FFmpeg 以及其他相关信息。使用最新的静态构建(不编译)。

安装后,为 FFmpeg 选择音频/视频输入源。您可以查找可用的内容,如下所示:

ffmpeg -list_devices true -f dshow -i dummy.

有关更多信息,请单击此处。根据可用的内容和针对的捕获方法,您应该能够直接从选定的设备捕获视频/音频(嵌入式),并使用 FFmpeg 对信号进行编码。例如:

  • 网络摄像头 – 要捕获 Logitech C920 网络摄像头的输出,请执行以下操作:

    ffmpeg -f dshow -video_size 1920x1080 -framerate 30 -i video="HD Pro Webcam C920":audio="Microphone (HD Pro Webcam C920)" -c:v libx264 -b:v 6000K -maxrate 6000K -pix_fmt yuv420p -r 30 -s 1920x1080 -profile:v main -preset veryfast -g 120 -x264opts "nal-hrd=cbr:no-scenecut” -acodec aac -ab 160k -ar 44100 -f flv rtmps://<IVS-ingest-server>/<IVS-stream-key>
  • 视频文件 – FFmpeg 适用于多种视频文件格式和捕捉卡。以下是基于 MP4 输入的流传输示例:

    ffmpeg -re -i input.mp4 -c:v libx264 -b:v 6000K -maxrate 6000K -pix_fmt yuv420p -s 1920x1080 -profile:v main -preset veryfast -force_key_frames expr:gte(t,n_forced*2) -x264opts "nal-hrd=cbr:no-scenecut” -acodec aac -ab 160k -ar 44100 -f flv rtmps://<IVS-ingest-server>/app/<IVS-stream-key>

有关 <IVS-ingest-server><IVS-stream-key> 输入内容的更多信息,请参阅 IVS 低延迟流式传输入门 中有关设置实时流传输的信息。例如:

  • 提取服务器:rtmps://jds34ksdg3las.global-contribute.live-video.net/app/

  • 流密钥:sk_us-west-2_abcd1234efgh5678ijkl

使用 Amazon IVS 广播 SDK 的流

Amazon IVS 广播 SDK 适用于使用 Amazon IVS 构建 Android、iOS 或 Web 应用程序的开发人员。请参阅《Amazon IVS 用户指南》中的广播开发工具包文档,在此处了解如何开始。包含适用于 Android、iOS 和 Web 流式传输指南的子页面。您可以使用广播 SDK 自定义比特率、帧率和分辨率。

测试视频流

请务必验证您的视频流是否正常工作。

Amazon IVS 控制台中导航到视频流,观察正在流传输的内容并管理实时流。