本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
示例:解析和渲染 Kinesis Video Streams 片段
使用解析器库进行直播包含一个名为的演示应用程序KinesisVideoRendererExample
,用于演示解析和渲染 Amazon Kinesis 视频流片段。该示例用于JCodec
该示例说明了如何执行以下操作:
-
使用从 Kinesis 视频流中检索帧
GetMedia
API并渲染该流以供观看。 -
在自定义应用程序中查看直播的视频内容,而不是使用 Kinesis Video Streams 控制台。
您还可以使用此示例中的类来查看未编码为 H.264 的 Kinesis 视频流内容,例如在显示之前不需要解码JPEG的文件流。
以下过程说明了如何设置和使用渲染器演示应用程序。
先决条件
要检查和使用渲染器示例库,您必须满足以下条件:
运行渲染器示例
-
创建一个目录,然后从 GitHub存储库中克隆示例源代码。
git clone https://github.com/aws/amazon-kinesis-video-streams-parser-library
-
打开你正在使用IDE的 Java(例如 Eclipse 或 Intelli
J IDEA ),然后导入你下载的 Apache Maven 项目: -
在 Eclipse 中:选择 File、Import、Maven、Existing Maven Projects。导航到
kinesis-video-streams-parser-lib
目录。 -
在 IntelliJ Idea 中:选择 Import。导航到下载的程序包的根目录中的
pom.xml
文件。注意
如果 IntelliJ 找不到您的依赖项,则可能需要执行以下操作:
-
干净生成:选择 File (文件)、Settings (设置)、Build, Execution, Deployment (生成、执行、部署)、Compiler (编译器)。确认已选中 “重建时清除输出目录”,然后选择 “构建,生成项目”。
-
重新导入项目:打开该项目的上下文菜单(右键单击),选择 Maven、重新导入。
-
有关更多信息,请参阅相关IDE文档。
-
-
在你的 Java IDE 中,打开
src/test/java/com.amazonaws.kinesisvideo.parser/examples/KinesisVideoRendererExampleTest
。 -
从该文件中删除
@Ignore
指令。 -
使用您的 Kinesis 视频流的名称更新该
.stream
参数。 -
运行
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 的实例。 BufferedImageBufferedImage
的示例,请参阅读取/加载图像