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

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

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

使用解析器库进行直播包含一个名为的演示应用程序KinesisVideoRendererExample,用于演示解析和渲染 Amazon Kinesis 视频流片段。该示例用于JCodec解码使用应用程序摄取的 H.264 编码帧。示例:Kinesis Video Streams SDK GStreamer 制作人插件-kvssink使用对帧进行解码后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. 打开你正在使用IDE的 Java(例如 Eclipse 或 Intelli J 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片段解析成帧

然后,该示例使用以下命令检索并解析流中的MKV片段:GetMediaWorker

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 的示例,请参阅读取/加载图像