Kinesis Video Streams 支持 API 和制作人库 - Amazon Kinesis Video Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Kinesis Video Streams 支持 API 和制作人库

Kinesis Video Streams 提供了 API,供您创建和管理流,以及从流中读取或写入媒体数据。Kinesis Video Streams 控制台除了管理功能外,还支持直播 video-on-demand和播放。Kinesis Video Streams 还提供了一组制作者库,您可以在应用程序代码中使用这些库从媒体源提取数据并上传到您的 Kinesis 视频流。

Kinesis Video Streams API

Kinesis Video Streams 提供用于创建和管理 Kinesis Video Streams 的 API。它还提供了用于在流中读取和写入媒体数据的 API,如下所示:

  • 制作人 API — Kinesis Video Streams 提供了PutMedia一种将媒体数据写入 Kinesis 视频流的 API。在 PutMedia 请求中,创建者将发送一个媒体片段流。片段 是一系列独立帧。属于某个片段的帧不依赖其他片段中的任何帧。有关更多信息,请参阅 PutMedia

    当片段到达时,Kinesis Video Streams 会按递增顺序分配一个唯一的片段编号。它还将每个片段的制作方和服务器端时间戳存储为 Kinesis Video Streams 特有的元数据。

  • 消费者 API — 消费者可以使用以下 API 从流中获取数据:

    • GetMedia - 在使用此 API 时,使用者必须标识正在启动的片段。之后,API 将按照将片段添加到流中的顺序返回片段 (按照片段号的递增顺序)。片段中的媒体数据将打包成一个结构化格式,例如 Matroska (MKV)。有关更多信息,请参阅 GetMedia

      注意

      GetMedia 了解片段所在位置 (存档到数据存储中或实时可用)。例如,如果 GetMedia 确定已存档正在启动的片段,则它会开始从数据存储返回片段。当它必须返回尚未存档的新片段时,会GetMedia切换到从内存流缓冲区读取片段。

      这是一个持续使用者的示例,它按照流提取片段的顺序处理片段。

      GetMedia 使视频处理应用程序能够先失败或落后,然后保持同步,而无需执行其他操作。通过使用 GetMedia,应用程序可以处理已存档到数据存储中的数据,并且在应用程序保持同步时,GetMedia 仍会在其到达时实时提供媒体数据。

    • GetMediaFromFragmentList (和 ListFragments) - 批处理应用程序被视为离线使用者。离线使用者可能选择通过将 ListFragmentsGetMediaFromFragmentList API 组合使用,来明确提取视频的特定媒体片段或范围。ListFragmentsGetMediaFromFragmentList 使应用程序能够标识特定时间范围或片段范围的视频片段,然后按顺序或并行提取这些片段以进行处理。此方法适用于 MapReduce 应用程序套件,该套件必须并行快速处理大量数据。

      例如,假设使用者需要处理一天的视频片段。使用者将执行以下操作:

      1. 通过调用 ListFragments API 并指定时间范围以获取片段列表,从而选择所需的片段集合。

        API 将返回指定时间范围的所有片段中的元数据。元数据提供诸如片段编号、制作方和服务器端时间戳等信息。

      2. 获取片段元数据列表并按任意顺序检索片段。例如,要处理当天的所有片段,使用者可以选择将列表拆分为子列表,让工作人员(例如,多个 Amazon EC2 实例)使用并行提取片段GetMediaFromFragmentList,然后并行处理它们。

下图显示了这些 API 调用期间片段和数据块的数据流。

显示 API 调用期间片段和数据块的数据流的图

当创建者发送 PutMedia 请求时,它会在负载中发送媒体元数据,然后发送一系列媒体数据片段。收到数据后,Kinesis Video Streams 将传入的媒体数据存储为 Kinesis Video Streams 数据块。每个数据块均包含以下内容:

  • 媒体元数据的副本

  • 片段

  • Kinesis Video Streams 特有的元数据;例如,片段编号以及服务器端和制作人端的时间戳

当用户请求媒体元数据时,Kinesis Video Streams 会返回一个区块流,从您在请求中指定的片段编号开始。

如果您为流启用数据持久性,则在收到流中的片段后,Kinesis Video Streams 还会将该片段的副本保存到数据存储中。

端点发现模式

控制平面 REST API

要访问 Kinesis Video Streams 控制平面 REST API,请使用 Kinesis Video Streams 服务端点。

数据平面 REST API

Kinesis Video Streams 使用蜂窝架构构建,可确保更好的扩展和流量隔离特性。由于每个流都映射到某个区域中的特定单元格,因此您的应用程序必须使用您的数据流已映射到的正确单元格专用端点。访问 Data Plane REST API 时,您需要自己管理和映射正确的端点。这个过程,即端点发现模式,如下所述:

  1. 端点发现模式从调用其中一个GetEndpoints操作开始。这些操作属于控制平面。

    1. 如果您正在检索Amazon Kinesis Video StreamsAmazon Kinesis Video Streams 存档媒体服务的终端节点,请使用GetDataEndpoint

    2. 如果您正在检索Amazon Kinesis Video、或 Kinesis 视频信号的终端节点Amazon Kinesis Kinesis WebRTC,请使用。GetSignalingChannelEndpoint

  2. 缓存并重用端点。

  3. 如果缓存的端点不再起作用,请重新调用GetEndpoints以刷新终端节点。

制作人库

创建 Kinesis 视频流后,就可以开始向该流发送数据了。在您的应用程序代码中,您可以使用这些库从媒体源提取数据并上传到您的 Kinesis 视频流。有关可用创建者库的更多信息,请参阅 Kinesis 视频直播制作人库