python - 使用 Python 解析和渲染 Kinesis Video Streams 并获取输入帧的图像表示

标签 python amazon-web-services parsing amazon-kinesis payload

我设置了一个管道,在其中将视频实时流式传输到 Kinesis Video Stream (KVS),后者将帧发送到 Amazon Rekognition 进行人脸识别,后者进一步将它们发送到 Kinesis Data Stream (KDS)。最后,KDS 将结果发送给 lambda。

对于已经进行人脸识别的框架,我得到以下格式的JSON:https://docs.aws.amazon.com/rekognition/latest/dg/streaming-video-kinesis-output-reference.html

我的目标是: 使用这个 JSON,我想以某种方式获取 KVS 记录的帧的图像表示。

我尝试过什么:

此 JSON 为我提供了片段编号。

我使用这个片段编号并调用 get_media_for_fragment_list

上面的调用返回一个名为Payload的键作为响应。

我一直在尝试以某种方式将此有效负载渲染为图像。

但是,我每次都无法执行此操作,因为我不知道如何理解此有效负载并对其进行解码。

以下是代码片段。

    def getFrameFromFragment(fragment):
         client = boto3.client('kinesis-video-archived-media',endpoint_url=data_endpoint_for_kvs)
         response = client.get_media_for_fragment_list(
             StreamName='kvs1',
             Fragments=[
                fragment,
             ]
         )
         payload = response['Payload']
         print(payload.read())

如何使用此负载来获取图像?

我知道 Java 中存在解析器:https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-renderer.html

但是,我想知道 Python 中的解决方案。

如果我的问题陈述错误或没有意义,请随时向我询问有关此问题的更多信息。

感谢您的帮助。 :)

最佳答案

GetMedia 的响应是 MKV 封装格式的流。首先,您需要使用一些从 MKV 格式(https://github.com/vi/mkvparse 或类似格式)中提取帧的 Python 库。接下来,您的流可能会被编码。例如 H264。如果您需要的话,您还需要解码帧以获得图像的实际位图。似乎很少有基于软件的解码器可用于 Python:https://github.com/DaWelter/h264decoder

不过我对这些项目并不熟悉。

关于python - 使用 Python 解析和渲染 Kinesis Video Streams 并获取输入帧的图像表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60912980/

相关文章:

python - 将记事本中的数据导入到python编辑器中

node.js - 如何配置AWS EC2实例中的Nodejs以接受来自客户端的HTTPS请求

ruby - 错误 : undefined method "each" for String when running elastic-mapreduce specifying distributed cache file

javascript - 在 Node.js 中使用 JavaScript 从 JSON 对象获取和设置文本内容

xml - python解析xml并获取root下每个子元素的属性值

python - 使 matplotlib 按钮小部件在按下时启动,而不是在释放时启动

python - python中有没有一个函数可以保存多个不同名称的csv文件?

Python - 在提取数据之前计算 JSON 元素

c++ - 如何将 '+' 转换为 +,将 '*' 转换为 *,等等

amazon-web-services - AWS ECS 503 服务在部署时暂时不可用