示例:解析和渲染 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 Producer SDK gStreamer 插件-kvssink 应用程序提取的 H.264 编码的帧。在使用 JCodec 对帧进行解码后,将使用 JFrame 渲染可见的图像。

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

  • 使用 GetMedia API 从 Kinesis 视频流中检索帧并渲染该视频流以供观看。

  • 在自定义应用程序中查看直播的视频内容,而不是使用 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. 使用您的 Kinesis 视频流的名称更新该.stream参数。

  6. 运行 KinesisVideoRendererExample 测试。

工作方式

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

发送 MKV 数据

该示例从rendering_example_video.mkv文件中发送示例 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 的示例,请参阅读取/加载图像