示例:解析和渲染 Kinesis Video Streams 片段 - Amazon Kinesis Video Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

示例:解析和渲染 Kinesis Video Streams 片段

这个视频流解析器库包含一个名为的演示应用程序KinesisVideoRendererExample演示了如何解析和渲染 Amazon Kinesis 视频流片段。该示例使用 JCodec 解码使用 示例:Kinesis Video Streams 制作者 SDK gStream 应用程序提取的 H.264 编码的帧。在使用 JCodec 对帧进行解码后,将使用 JFrame 渲染可见的图像。

该示例说明了如何执行以下操作:

  • 使用从 Kinesis 视频流中检索帧GetMediaAPI 并渲染直播以供观看。

  • 在自定义应用程序中查看直播的视频内容,而不是使用 Kinesis Video Streams 控制台。

您还可以使用本示例中的类来查看未编码为 H.264 的 Kinesis 视频流内容,例如在显示之前不需要解码的 JPEG 文件流。

以下过程说明了如何设置和使用渲染器演示应用程序。

先决条件

要检查和使用渲染器示例库,您必须满足以下条件:

运行渲染器示例

  1. 创建一个目录,然后从中克隆示例源代码GitHub存储库。

    git clone https://github.com/aws/amazon-kinesis-video-streams-parser-library
  2. 打开您正使用的 Java IDE (例如,EclipseIntelliJ IDEA),并导入您下载的 Apache Maven 项目:

    • 在 Eclipse 中:选择 FileImportMavenExisting Maven Projects。导航到 kinesis-video-streams-parser-lib目录。

    • 在 IntelliJ Idea 中:选择 Import。导航到下载的程序包的根目录中的 pom.xml 文件。

      注意

      如果 IntelliJ 找不到您的依赖项,则可能需要执行以下操作:

      • 干净生成:选择 File (文件)Settings (设置)Build, Execution, Deployment (生成、执行、部署)Compiler (编译器)。验证一下重建时清除输出目录被选中,然后选择构建生成项目

      • 重新导入项目:打开该项目的上下文菜单(右键单击),选择 Maven重新导入

    有关更多信息,请参阅相关的 IDE 文档。

  3. 从您的 Java IDE 中,打开 src/test/java/com.amazonaws.kinesisvideo.parser/examples/KinesisVideoRendererExampleTest

  4. 从该文件中删除 @Ignore 指令。

  5. 更新.stream带有您的 Kinesis 视频流名称的参数。

  6. 运行 KinesisVideoRendererExample 测试。

工作方式

该示例应用程序说明了如何执行以下操作:

发送 MKV 数据

该示例从发送示例 MKV 数据rendering_example_video.mkv文件,使用PutMedia将视频数据发送到名为的流render-example-stream

该应用程序创建一个 PutMediaWorker

PutMediaWorker putMediaWorker = PutMediaWorker.create(getRegion(), getCredentialsProvider(), getStreamName(), inputStream, streamOps.amazonKinesisVideo); executorService.submit(putMediaWorker);

有关 PutMediaWorker 类的信息,请参阅视频流解析器库文档中的 打电话 PutMedia

将 MKV 片段解析为框架

然后,该示例使用 GetMediaWorker 从流中检索和解析 MKV 片段:

GetMediaWorker getMediaWorker = GetMediaWorker.create(getRegion(), getCredentialsProvider(), getStreamName(), new StartSelector().withStartSelectorType(StartSelectorType.EARLIEST), streamOps.amazonKinesisVideo, getMediaProcessingArgumentsLocal.getFrameVisitor()); executorService.submit(getMediaWorker);

有关 GetMediaWorker 类的更多信息,请参阅视频流解析器库文档中的 打电话 GetMedia

解码和显示框架

然后,该示例使用 JFrame 解码并显示帧。

以下代码示例来自于 KinesisVideoFrameViewer 类,该类扩展了 JFrame

public void setImage(BufferedImage bufferedImage) { image = bufferedImage; repaint(); }

图像显示为的实例java.awt.image。BufferedImage。有关说明如何使用 BufferedImage 的示例,请参阅读取/加载图像