读取流视频分析结果 - Amazon Rekognition

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

读取流视频分析结果

您可使用 Amazon Kinesis Data Streams 客户端库来使用已发送到 Amazon Kinesis Data Streams 输出流的分析结果。有关更多信息,请参阅从 Kinesis 数据流读取数据。Amazon Rekognition Video 将每个分析过的帧的 JSON 帧记录放入 Kinesis 输出流。Amazon Rekognition Video 不会分析通过 Kinesis 视频流传递给它的每一帧。

已发送到 Kinesis 数据流的帧记录包含以下信息:该帧位于哪个 Kinesis 视频流片段中、该帧位于片段中的哪个位置以及在该帧中识别的人脸。它还包含流处理器的状态信息。有关更多信息,请参阅 参考:Kinesis 人脸识别记录

Amazon Kinesis Video Streams 解析器库包含使用 Amazon Rekognition Video 结果并将其与原始 Kinesis 视频流集成的示例测试。有关更多信息,请参阅 在本地使用 Kinesis 视频流显示 Rekognition 结果

Amazon Rekognition Video 将 Amazon Rekognition Video 的分析信息流式传输到 Kinesis 数据流。以下是单个记录的 JSON 示例。

{ "InputInformation": { "KinesisVideo": { "StreamArn": "arn:aws:kinesisvideo:us-west-2:nnnnnnnnnnnn:stream/stream-name", "FragmentNumber": "91343852333289682796718532614445757584843717598", "ServerTimestamp": 1510552593.455, "ProducerTimestamp": 1510552593.193, "FrameOffsetInSeconds": 2 } }, "StreamProcessorInformation": { "Status": "RUNNING" }, "FaceSearchResponse": [ { "DetectedFace": { "BoundingBox": { "Height": 0.075, "Width": 0.05625, "Left": 0.428125, "Top": 0.40833333 }, "Confidence": 99.975174, "Landmarks": [ { "X": 0.4452057, "Y": 0.4395594, "Type": "eyeLeft" }, { "X": 0.46340984, "Y": 0.43744427, "Type": "eyeRight" }, { "X": 0.45960626, "Y": 0.4526856, "Type": "nose" }, { "X": 0.44958648, "Y": 0.4696949, "Type": "mouthLeft" }, { "X": 0.46409217, "Y": 0.46704912, "Type": "mouthRight" } ], "Pose": { "Pitch": 2.9691637, "Roll": -6.8904796, "Yaw": 23.84388 }, "Quality": { "Brightness": 40.592964, "Sharpness": 96.09616 } }, "MatchedFaces": [ { "Similarity": 88.863960, "Face": { "BoundingBox": { "Height": 0.557692, "Width": 0.749838, "Left": 0.103426, "Top": 0.206731 }, "FaceId": "ed1b560f-d6af-5158-989a-ff586c931545", "Confidence": 99.999201, "ImageId": "70e09693-2114-57e1-807c-50b6d61fa4dc", "ExternalImageId": "matchedImage.jpeg" } } ] } ] }

在 JSON 示例中,请注意以下内容:

  • InputInformation— 有关用于将视频流式传输到亚马逊 Rekognition Video 的 Kinesis 视频流的信息。有关更多信息,请参阅 InputInformation

  • StreamProcessorInformation— 亚马逊 Rekognition Video 流处理器的状态信息。Status 字段的唯一可能值为 RUNNING。有关更多信息,请参阅 StreamProcessorInformation

  • FaceSearchResponse— 包含有关流视频中与输入集合中的人脸匹配的人脸的信息。 FaceSearchResponse包含一个DetectedFace对象,即在分析的视频帧中检测到的人脸。对于每个检测到的人脸,数组 MatchedFaces 包含一组在输入集合中找到的匹配的人脸对象 (MatchedFace) 以及一个相似度得分。

将 Kinesis 视频流映射到 Kinesis 数据流

您可能希望将 Kinesis 视频流帧映射到发送至 Kinesis 数据流的分析帧。例如,在流视频显示期间,您可能希望在识别出的人脸周围显示方框。边界框的坐标将作为 Kinesis 人脸识别记录的一部分发送给 Kinesis 数据流。为了正确显示边界框,您需要将随 Kinesis 人脸识别记录发送的时间信息映射到源 Kinesis 视频流中相应的帧。

将 Kinesis 视频流映射到 Kinesis 数据流所用的方法取决于流式处理的是实时媒体(如实时流视频)还是存档媒体(如存储的视频)。

流式处理实时媒体时的映射

将 Kinesis 视频流帧映射到 Kinesis 数据流帧中
  1. PutMedia操作FragmentTimeCodeType的输入参数设置为RELATIVE

  2. 调用 PutMedia 将实时媒体传输到 Kinesis 视频流中。

  3. 如果从 Kinesis 数据流接收 Kinesis 人脸识别记录,请存储 KinesisVideo 字段的 ProducerTimestampFrameOffsetInSeconds 值。

  4. 同时添加 ProducerTimestampFrameOffsetInSeconds 字段值,计算与 Kinesis 视频流帧对应的时间戳。

流式处理存档媒体时的映射

将 Kinesis 视频流帧映射到 Kinesis 数据流帧中
  1. 致电PutMedia将存档的媒体传输到 Kinesis 视频流中。

  2. 如果您从 PutMedia 操作的响应中接收到 Acknowledgement 对象,请存储 Payload 字段的 FragmentNumber 字段值。FragmentNumber 是 MKV 集群的片段编号。

  3. 如果从 Kinesis 数据流接收 Kinesis 人脸识别记录,请存储 KinesisVideo 字段的 FrameOffsetInSeconds 字段值。

  4. 使用步骤 2 和步骤 3 中存储的 FrameOffsetInSecondsFragmentNumber 值计算映射。FrameOffsetInSeconds 是发送至 Amazon Kinesis Data Streams 的具有特定 FragmentNumber 的片段中的偏移。有关获取已知片段编号的视频帧的更多信息,请参阅 Amazon Kinesis Video Streams 存档媒体