

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

# 读取流视频分析结果
<a name="streaming-video-kinesis-output"></a>

**注意**  
新客户不再可以使用流媒体视频和批量图像分析。有关更多信息，请参阅 [亚马逊 Rekognition 功能可用性变更](rekognition-availability-changes.md)。  
**此更改不会影响其他 Amazon Rekognition 功能的可用性。**

您可使用 Amazon Kinesis Data Streams 客户端库来使用已发送到 Amazon Kinesis Data Streams 输出流的分析结果。有关更多信息，请参阅[从 Kinesis 数据流读取数据](https://docs.aws.amazon.com/streams/latest/dev/building-consumers.html)。Amazon Rekognition Video 将每个分析过的帧的 JSON 帧记录放入 Kinesis 输出流。Amazon Rekognition Video 不会分析通过 Kinesis 视频流传递给它的每一帧。

已发送到 Kinesis 数据流的帧记录包含以下信息：该帧位于哪个 Kinesis 视频流片段中、该帧位于片段中的哪个位置以及在该帧中识别的人脸。它还包含流处理器的状态信息。有关更多信息，请参阅 [了解 Kinesis 人脸识别 JSON 帧记录](streaming-video-kinesis-output-reference.md)。

Amazon Kinesis Video Streams 解析器库包含使用 Amazon Rekognition Video 结果并将其与原始 Kinesis 视频流集成的示例测试。有关更多信息，请参阅 [在本地使用 Kinesis 视频流显示 Rekognition 结果](displaying-rekognition-results-locally.md)。

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](streaming-video-kinesis-output-reference.md#streaming-video-kinesis-output-reference-inputinformation)。
+ **StreamProcessorInformation**— 亚马逊 Rekognition Video 流处理器的状态信息。`Status` 字段的唯一可能值为 RUNNING。有关更多信息，请参阅 [StreamProcessorInformation](streaming-video-kinesis-output-reference-streamprocessorinformation.md)。
+ **FaceSearchResponse**— 包含有关流视频中与输入集合中的人脸匹配的人脸的信息。 [FaceSearchResponse](streaming-video-kinesis-output-reference.md#streaming-video-kinesis-output-reference-facesearchresponse)包含一个[DetectedFace](streaming-video-kinesis-output-reference.md#streaming-video-kinesis-output-reference-detectedface)对象，即在分析的视频帧中检测到的人脸。对于每个检测到的人脸，数组 `MatchedFaces` 包含一组在输入集合中找到的匹配的人脸对象 ([MatchedFace](streaming-video-kinesis-output-reference.md#streaming-video-kinesis-output-reference-facematch)) 以及一个相似度得分。

## 将 Kinesis 视频流映射到 Kinesis 数据流
<a name="mapping-streams"></a>

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

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

### 流式处理实时媒体时的映射
<a name="mapping-streaming-video"></a>

**将 Kinesis 视频流帧映射到 Kinesis 数据流帧中**

1. 将[PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html)操作`FragmentTimeCodeType`的输入参数设置为`RELATIVE`。

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

1. 如果从 Kinesis 数据流接收 Kinesis 人脸识别记录，请存储 [KinesisVideo](streaming-video-kinesis-output-reference.md#streaming-video-kinesis-output-reference-kinesisvideostreams-kinesisvideo) 字段的 `ProducerTimestamp` 和 `FrameOffsetInSeconds` 值。

1. 同时添加 `ProducerTimestamp` 和 `FrameOffsetInSeconds` 字段值，计算与 Kinesis 视频流帧对应的时间戳。

### 流式处理存档媒体时的映射
<a name="map-stored-video"></a>

**将 Kinesis 视频流帧映射到 Kinesis 数据流帧中**

1. 致电[PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html)将存档的媒体传输到 Kinesis 视频流中。

1. 如果您从 `PutMedia` 操作的响应中接收到 `Acknowledgement` 对象，请存储 [Payload](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html#API_dataplane_PutMedia_ResponseSyntax) 字段的 `FragmentNumber` 字段值。`FragmentNumber` 是 MKV 集群的片段编号。

1. 如果从 Kinesis 数据流接收 Kinesis 人脸识别记录，请存储 [KinesisVideo](streaming-video-kinesis-output-reference.md#streaming-video-kinesis-output-reference-kinesisvideostreams-kinesisvideo) 字段的 `FrameOffsetInSeconds` 字段值。

1. 使用步骤 2 和步骤 3 中存储的 `FrameOffsetInSeconds` 和 `FragmentNumber` 值计算映射。`FrameOffsetInSeconds` 是发送至 Amazon Kinesis Data Streams 的具有特定 `FragmentNumber` 的片段中的偏移。有关获取已知片段编号的视频帧的更多信息，请参阅 [Amazon Kinesis Video Streams 存档媒体](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_Operations_Amazon_Kinesis_Video_Streams_Archived_Media.html)。