本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Kinesis Video API Streams 和制作人库支持
Kinesis Vid APIs eo Streams 允许你创建和管理流,以及向流中读取或写入媒体数据。Kinesis Video Streams 控制台除了管理功能外,还支持直播 video-on-demand和播放。Kinesis Video Streams 还提供了一组制作者库,您可以在应用程序代码中使用这些库从媒体源提取数据并上传到您的 Kinesis 视频流。
Kinesis Video Streams API
Kinesis Video Streams APIs 提供创建和管理 Kinesis Video Streams 的功能。它还APIs提供向流读取和写入媒体数据的功能,如下所示:
-
制作人 API — Kinesis Video Streams 提供了
PutMedia
API将媒体数据写入 Kinesis 视频流的功能。在PutMedia
请求中,创建者将发送一个媒体片段流。片段 是一系列独立帧。属于某个片段的帧不依赖其他片段中的任何帧。有关更多信息,请参阅 PutMedia。当片段到达时,Kinesis Video Streams 会按递增顺序分配一个唯一的片段编号。它还将每个片段的制作方和服务器端时间戳存储为 Kinesis Video Streams 特有的元数据。
-
消费者 APIs-消费者可以使用以下内容APIs从流中获取数据:
-
GetMedia
-使用它时API,消费者必须识别起始片段。API然后按片段添加到流中的顺序返回片段(按片段数递增顺序)。片段中的媒体数据被打包成结构化格式,例如 Matroska () MKV。有关更多信息,请参阅 GetMedia。 注意
GetMedia
了解片段所在位置 (存档到数据存储中或实时可用)。例如,如果GetMedia
确定已存档正在启动的片段,则它会开始从数据存储返回片段。当它必须返回尚未存档的新片段时,会GetMedia
切换到从内存流缓冲区读取片段。这是一个持续使用者的示例,它按照流提取片段的顺序处理片段。
GetMedia
使视频处理应用程序能够先失败或落后,然后保持同步,而无需执行其他操作。通过使用GetMedia
,应用程序可以处理已存档到数据存储中的数据,并且在应用程序保持同步时,GetMedia
仍会在其到达时实时提供媒体数据。 -
GetMediaFromFragmentList
(和ListFragments
) - 批处理应用程序被视为离线使用者。离线消费者可以选择通过组合ListFragments
和来明确提取特定的媒体片段或视频范围GetMediaFromFragmentList
APIs。ListFragments
并GetMediaFromFragmentList
使应用程序能够识别特定时间范围或片段范围内的视频片段,然后按顺序或并行获取这些片段进行处理。此方法适用于MapReduce
应用程序套件,该套件必须并行快速处理大量数据。例如,假设使用者需要处理一天的视频片段。使用者将执行以下操作:
-
通过调用
ListFragments
API并指定时间范围来选择所需的片段集合,从而获取片段列表。API返回指定时间范围内所有片段的元数据。元数据提供诸如片段编号、制作方和服务器端时间戳等信息。
-
获取片段元数据列表并按任意顺序检索片段。例如,要处理当天的所有片段,消费者可以选择将列表拆分为子列表,让工作程序(例如,多个 Amazon EC2 实例)使用并行提取片段
GetMediaFromFragmentList
,然后并行处理它们。
-
-
下图显示了这些API调用期间片段和区块的数据流。
当创建者发送 PutMedia
请求时,它会在负载中发送媒体元数据,然后发送一系列媒体数据片段。收到数据后,Kinesis Video Streams 将传入的媒体数据存储为 Kinesis Video Streams 数据块。每个数据块均包含以下内容:
-
媒体元数据的副本
-
片段
-
Kinesis Video Streams 特有的元数据;例如,片段编号以及服务器端和制作人端的时间戳
当用户请求媒体元数据时,Kinesis Video Streams 会返回一个区块流,从您在请求中指定的片段编号开始。
如果您为流启用数据持久性,则在收到流中的片段后,Kinesis Video Streams 还会将该片段的副本保存到数据存储中。
端点发现模式
控制平面 REST APIs
要访问 Kinesis Video Streams 控制RESTAPIs平面,请使用 Kinesis Video Streams 服务端点。
数据平面 REST APIs
Kinesis Video Streams 使用蜂窝架构构建,可确保更好的扩展和流量隔离特性。由于每个流都映射到某个区域中的特定单元格,因此您的应用程序必须使用您的数据流已映射到的正确单元格专用端点。访问数据平面时 RESTAPIs,您需要自己管理和映射正确的端点。这个过程,即端点发现模式,如下所述:
-
端点发现模式从调用其中一个
GetEndpoints
操作开始。这些操作属于控制平面。如果您正在检索Amazon Kinesis Video Streams或Amazon Kinesis Video Streams 存档媒体服务的终端节点,请使用GetDataEndpoint。
如果您正在检索Amazon Kinesis Video、或 Kinesis 视频信号的终端节点亚马逊 Kinesis 视频网络存储 RTC,请使用。GetSignalingChannelEndpoint
缓存并重用端点。
如果缓存的端点不再起作用,请重新调用
GetEndpoints
以刷新终端节点。
制作人库
创建 Kinesis 视频流后,就可以开始向该流发送数据了。在您的应用程序代码中,您可以使用这些库从媒体源提取数据并上传到您的 Kinesis 视频流。有关可用创建者库的更多信息,请参阅 上传到 Kinesis Video Streams。