Kinesis 视频直播限制 - Amazon Kinesis Video Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Kinesis 视频直播限制

Kinesis 视频直播有以下限制:

重要

以下限制要么是软限制[s],可以通过提交支持票进行升级,也可以硬升级[h],无法增加。您将在下表中的单个限制旁边看到 [s] 和 [h]。

控制平面 API 限制

下一节介绍控制平面 API 的限制。TPS 代表每秒交易数

当达到账户级或资源级请求限制时,ClientLimitExceededException被抛出来了。

控制平面 API 限制
API 账户限额:申请 账户限制:直播 流级别限制 相关例外情况和注意事项
CreateStream 50 TPS [s] 在美国东部(弗吉尼亚北部)和美国西部(俄勒冈)区域,每个账户 10000 个直播。在所有其他支持的区域中,每个账户 5000 个直播。
注意

可将此限制提高至每个账户 100,000 个(或更多个)流。通过以下网址登录 Amazon Web Services Management Console:https://console.amazonaws.cn/,并提交服务限制提高案例让 Kinesis Video Streams 请求提高此限制 。

设备、CLI、SDK 驱动的访问和控制台均可调用此 API。如果流尚不存在,则只有一个 API 调用会成功。
DeleteEdgeConfiguration 10 TPS [h] 不适用 1 TPS [h]
DeleteStream 50 TPS [h] 不适用 5 TPS [h]
DescribeEdgeConfiguration 50 TPS [h] 不适用 5 TPS [h]
DescribeImageGenerationConfiguration 50 TPS [h] 不适用 5 TPS [h]
DescribeNotificationConfiguration 50 TPS [h] 不适用 5 TPS [h]
DescribeStream 300 TPS [h] 不适用 5 TPS [h]
GetDataEndpoint 300 TPS [h] 不适用 5 TPS [h] 每 45 分钟调用一次,旨在刷新大多数 PutMedia/GetMedia 使用案例的流令牌。如果应用程序在失败时重新加载缓存数据终端节点,那么这些终端节点是安全的。
ListEdgeAgentConfigurations 50 TPS [h] 不适用 不适用
ListStreams 50 TPS [h] 不适用
ListTagsForStream 50 TPS [h] 不适用 5 TPS [h]
StartEdgeConfigurationUpdate 10 TPS [h] 不适用 1 TPS [h]
TagStream 50 TPS [h] 不适用 5 TPS [h]
UntagStream 50 TPS [h] 不适用 5 TPS [h]
UpdateDataRetention 50 TPS [h] 不适用 5 TPS [h]
UpdateImageGenerationConfiguration 50 TPS [h] 不适用 5 TPS [h]
UpdateNotificationConfiguration 50 TPS [h] 不适用 5 TPS [h]
UpdateStream 50 TPS [h] 不适用 5 TPS [h]

媒体和存档媒体 API 限制

以下部分介绍媒体和存档媒体 API 的限制。

当达到账户级或资源级请求限制时,ClientLimitExceededException被抛出来了。

达到连接级别限制时,会引发 ConnectionLimitExceededException

达到片段级别限制时,会引发以下错误或确认:

  • 为低于最低持续时间的片段返回 MIN_FRAGMENT_DURATION_REACHED 确认。

  • 会为高于最高持续时间的片段返回 MAX_FRAGMENT_DURATION_REACHED 确认。

  • 会为高于最大数据大小的片段返回 MAX_FRAGMENT_SIZE 确认。

  • 如果在 GetMediaForFragmentList 操作中达到片段限制,则会引发 FragmentLimitExceeded 异常。

数据平面 API 限制
API 流级别限制 连接级别限制 带宽限制 片段级别限制 相关例外情况和注意事项
PutMedia 5 TPS [h] 1 [s] 12.5 MB/秒或 100 Mbps [s]
  • 最小片段持续时间:1 秒 [h]

  • 最大片段持续时间:20 秒 [h]

  • 最大片段大小:50 MB [h]

  • 轨道的最大数量:3 [s]

  • 每秒最多发送 5 个片段 [h]

典型 PutMedia 请求包含几秒钟的数据,因而导致每个流较低的 TPS。如果有多个超出限制的并发连接,则接受最后一个连接。
getHLSStreamingSession网址 25 TPS [h] 不适用 不适用 不适用
GetDashStreamingSession网址 25 TPS [h] 不适用 不适用 不适用
GetMedia 5 TPS [h] 3 [s] 25 MB/秒或 200 Mbps [s] 每秒最多发送 5 个片段 [h]

一个独特的消费客户端需要的 TPS 不应超过两三个,因为建立连接后,应用程序应持续读取。

如果典型片段约为 5 MB,则此限制意味着每个 Kinesis 视频流约为 75 Mbps。此类流将具有流的最大传入比特率 2 倍的传出比特率。

GetMediaForFragmentList 不适用 5 [s] 25 MB/秒或 200 Mbps [s] 最大片段数:1000 [h] 五个基于片段的消费应用程序可以同时调用GetMediaForFragmentList。后续连接将被拒绝。
GetClip 不适用 不适用 100 MB 大小限制 [h] 最大片段数:200 [h]
GetImages 不适用 不适用 100 MB [h] 不适用

每个请求的最大图像数为 100 [h]。

注意

的最小值SamplingInterval为 200 毫秒 (ms),即每秒 5 张图像。

视频播放协议 API 限制
API 会话级别限制 片段级别限制
GetDashManifestPlaylist 5 TPS [h] 每个播放列表的最大片段数:5000 [h]
getHLSMasterPlaylist 5 TPS [h] 不适用
getHLSMediaPlaylist 5 TPS [h] 每个播放列表的最大片段数:5000 [h]
获取 MP4InitFragment 5 TPS [h] 不适用
获取 MP4MediaFragment 20 TPS [h] 不适用
GetTSFragment 20 TPS [h] 不适用

片段元数据和片段媒体配额

Kinesis 视频直播用于访问存档媒体的 API根据请求的片段数量而不是 API 调用次数进行限制。API 受片段元数据数量和请求的片段媒体数量的速率限制。片段元数据和片段媒体配额适用于每个流。换句话说,对一个流中的片段元数据或媒体的请求不适用于另一个流的配额。但是,在给定流中,每个配额在多个 API 之间共享。这意味着,对于给定的流,来自不同 API 的片段请求会消耗相同的配额。当超过流的片段元数据或片段媒体配额时,API 会返回ClientLimitExceededException。下表显示了 API 是如何使用这两种类型的配额的。对于这些表中的第二列,假设如果一个流的配额为 N,则意味着 API 在该流的配额类型中有 N 个积分可供消耗。这个GetClipAPI 出现在两个表中。

片段元数据配额消耗
API 每次请求消耗的配额积分数 共享配额 (N)
ListFragments 的价值MaxResults参数 每个直播每秒 10000 个配额积分 [h]
GetClip 生成的片段中的片段数
GetHLSMediaPlaylist 的价值MaxMediaPlaylistFragmentResults参数
GetDASHManifest 的价值MaxManifestFragmentResults参数
GetImages 值为 400 + 请求的最大图像数
片段媒体配额消耗
API 每次请求消耗的配额积分数 共享配额 (N)
GetMediaForFragmentList 片段参数中的片段数 每个直播每秒 500 个配额积分 [h]
GetClip 生成的片段中的片段数
GetMP4MediaFragment 1
GetTSFragment 1
GetImages 请求的最大图像数

例如,如果配额为每秒 500 个片段媒体,则支持特定流的以下调用模式:

  • 每秒 5 个请求发送到GetClip每个片段有 100 个片段。

  • 每秒 100 个请求发送到GetClip每个片段有 5 个片段。

  • 每秒 2 个请求发送到GetClip每个片段有 100 个片段每秒 3 个请求GetMediaForFragmentList在每个片段中。

  • 每秒 400 个请求发送到GetMP4MediaFragment并且每秒 100 个请求发送到GetTSFragment

这些配额对每个直播可以支持的 HLS 和 MPEG-DASH 会话数量有重要影响。媒体播放器在给定时间可以使用的 HLS 和 DASH 会话数量没有限制。因此,重要的是播放应用程序不允许同时使用过多的会话。以下两个示例描述了如何确定可以支持的并发播放会话的数量:

示例 1:直播

在直播场景中,HLS 带有 1 秒时长片段、音频和视频轨道,以及MaxMediaPlaylistFragmentResults设置为五,媒体播放器通常会拨打两次电话GetHLSMediaPlaylist每秒。一次电话是为了获取最新的视频元数据,另一次是针对相应的音频元数据。这两个调用各消耗五个片段元数据配额点。它还打了两次电话GetMP4MediaFragment每秒:一次呼叫获取最新视频,另一次呼叫相应音频。每次调用都消耗一个片段媒体令牌,因此总共消耗两个令牌。

在这种情况下,最多可支持 250 个并发播放会话。在 250 个会话中,此场景每秒消耗 2,500 个片段元数据配额点(远低于 10,000 个配额),每秒消耗 500 个片段媒体配额点。

示例 2:点播播放

在使用 MPEG-DASH 对过去事件的点播播放场景中,音频和视频曲目以及MaxManifestFragmentResults设置为 1,000,媒体播放器通常会呼叫GetDASHManifest在会话开始时一次(消耗 1,000 个片段元数据配额点)然后调用GetMP4MediaFragment以每秒 5 次的速率(消耗 5 个片段媒体配额点),直到加载完所有分段。在这种情况下,每秒最多可以启动 10 个新会话(正好是每秒 10,000 个片段元数据配额),最多可以有 100 个会话以每秒 5 的速率主动加载片段媒体(正好是每秒 500 个片段媒体的配额)。

你可以使用ArchivedFragmentsConsumed.MetadataArchivedFragmentsConsumed.Media分别监控片段元数据和片段媒体配额点的消耗情况。有关监控的信息,请参见监控亚马逊 Kinesis 视频直播