将网络摄像头视频流式传输到AWS Kinesis?

时间:2018-03-30 13:08:52

标签: java aws-sdk amazon-rekognition facial-identification

我知道这可能是一个相对普遍的问题,但我正试图看看如何指出正确的方向......

我正在尝试使用AWS Rekognition构建一个实时面部识别应用程序。我对API非常熟悉,并使用上传到S3的静态图像来执行面部识别。但是,我正在尝试找到一种将实时数据流式传输到Rekognition的方法。在阅读了亚马逊提供的各种文章和文档后,我发现了这个过程,但似乎无法克服一个障碍。

根据文档,我可以使用Kinesis来实现这一目标。看起来非常简单:创建Kinesis视频流,并通过Rekognition处理流。制作人将流数据生成到Kinesis流中,我是金色的。

我遇到的问题是制片人。我发现AWS有一个Java Producer库(https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk-javaapi.html)。太好了......看起来很简单,但现在我如何使用该生产者从我的网络摄像头捕获流,并将字节发送给Kinesis? AWS提供的示例代码实际上使用了目录中的静态图像,没有代码可以将其与实际的实时源(如网络摄像头)集成。

理想情况下,我可以将相机作为输入源加载并开始流式传输。但我似乎无法找到有关如何执行此操作的任何文档。

非常感谢任何帮助或方向。

2 个答案:

答案 0 :(得分:3)

您可以使用GStreamer sample app使用网络摄像头或连接到本机的任何相机作为输入,将视频摄取到Kinesis视频流中。目前,示例应用程序可以在Mac,Ubuntu或Raspberry Pi中执行。您还可以使用Android sample app从Android设备中提取视频。

另外,对于AWS Rekognition与Kinesis Video Streams的集成,请查看Consumer Parser库中发布的sample。此示例显示如何摄取视频文件(您可以使用上面的GStreamer示例应用程序替换实时生成器),检索数据,解析MKV,解码H264帧,与Rekognition JSON输出集成并在视频中检测到的脸部上绘制边界框帧。

答案 1 :(得分:3)

目前,要将AWS Rekogniton与直播摄像头配合使用,您必须按照此处的说明设置AWS kinesis视频流和AWS kinesis数据流: https://docs.aws.amazon.com/rekognition/latest/dg/recognize-faces-in-a-video-stream.html

之后,您必须使用API​​:PutMedia将实时流帧发送到AWS Kinesis视频流。然后AWS Rekognition将此作为输入,在处理之后,输出将发送到AWS Kinesis数据流。因此,您将从AWS Kinesis数据流中获取结果。

所有步骤都非常简单,但您可能会遇到PutMedia API的问题。现在,我找不到任何文档来实现它,但您可以使用此源代码作为参考。它使用MediaSource而不是PutMedia从您的webcam / usb_cam创建实时流媒体视频。您可以从它开始并进行一些更改以使用PutMedia而不是MediaSource。 https://github.com/backdoorcodr/amazon-kinesis-video-streams-producer-sdk-java

我正在做同样的事情,但这需要时间因为我只是一个java新手。 希望它可以提供帮助。