

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

# 调用流视频事件的标签检测操作
<a name="streaming-labels-detection"></a>

Amazon Rekognition Video 可以检测流视频中的人员或相关物体，并在检测到时通知您。创建标签检测流处理器时，请选择您希望 Amazon Rekognition Video 检测哪些标签。这些标签可以是人员、包裹和宠物，也可以是人员、包裹、宠物。仅选择要检测的特定标签。这样，只有相关的标签才能创建通知。您可以配置选项来确定何时存储视频信息，然后根据帧中检测到的标签进行其他处理。

设置资源后，检测流视频中标签的过程如下所示：

1. 创建流处理器

1. 启动流处理器

1. 如果检测到感兴趣的物体，则当每个感兴趣的物体首次出现时，您都会收到 Amazon SNS 通知。

1. `MaxDurationInSeconds` 中指定的时间结束后，流处理器将停止。

1. 您会收到包含事件摘要的最终 Amazon SNS 通知。

1. Amazon Rekognition Video 将详细会话摘要发布到 S3 存储桶。

**Topics**
+ [创建 Amazon Rekognition Video 标签检测流处理器](#streaming-video-create-labels-stream-processor)
+ [启动 Amazon Rekognition Video 标签检测流处理器](#streaming-video-start-labels-stream-processor)
+ [分析标签检测结果](#streaming-video-labels-stream-processor-results)

## 创建 Amazon Rekognition Video 标签检测流处理器
<a name="streaming-video-create-labels-stream-processor"></a>

在分析流媒体视频之前，您需要先创建一个 Amazon Rekognition Video 流处理器 ()。[CreateStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html)

如果您想创建一个流处理器来检测感兴趣的标签和人员，请提供 Kinesis 视频流（`Input`）、Amazon S3 存储桶信息（`Output`）和 Amazon SNS 主题 ARN（`StreamProcessorNotificationChannel`）作为输入。您还可以提供 KMS 密钥 ID 来加密发送到 S3 存储桶的数据。您可以指定在 `Settings` 中要检测的内容，例如人员、包裹和人员，或宠物、人员、包裹。您还可以指定希望 Amazon Rekognition 用 `RegionsOfInterest` 监控帧中的哪个位置。以下是 `CreateStreamProcessor` 请求的 JSON 示例。

```
{
  "DataSharingPreference": { "OptIn":TRUE
  },
  "Input": {
    "KinesisVideoStream": {
      "Arn": "arn:aws:kinesisvideo:us-east-1:nnnnnnnnnnnn:stream/muh_video_stream/nnnnnnnnnnnnn"
    }
  },
  "KmsKeyId": "muhkey",
  "Name": "muh-default_stream_processor",
  "Output": {
    "S3Destination": {
      "Bucket": "s3bucket",
      "KeyPrefix": "s3prefix"
    }
  },
  "NotificationChannel": {
    "SNSTopicArn": "arn:aws:sns:us-east-2:nnnnnnnnnnnn:MyTopic"
  },
  "RoleArn": "arn:aws:iam::nnnnnnnnn:role/Admin",
  "Settings": {
    "ConnectedHome": {
      "Labels": [
        "PET"
      ]
    "MinConfidence": 80
    }
  },
  "RegionsOfInterest": [
    {
      "BoundingBox": {
        "Top": 0.11,
        "Left": 0.22,
        "Width": 0.33,
        "Height": 0.44
      }
    },
    {
      "Polygon": [
        {
          "X": 0.11,
          "Y": 0.11
        },
        {
          "X": 0.22,
          "Y": 0.22
        },
        {
          "X": 0.33,
          "Y": 0.33
        }
      ]
    }
  ]
}
```

请注意，当您为流处理器指定 `ConnectedHomeSettings` 时，您可以更改 `MinConfidence` 值。`MinConfidence` 是一个介于 0 到 100 之间的数值，表示算法对其预测的确定程度。例如，置信度为 90 的`person`通知表示算法完全确定视频中出现了该人员。置信度值为 10 表示可能有人。您可以将 `MinConfidence` 值设置为介于 0 和 100 之间的所需值，具体取决于您希望收到通知的频率。例如，如果您只想在 Rekognition 绝对确定视频帧中有包裹时才收到通知，那么可以将 `MinConfidence` 设置为 90。

默认情况下，将 `MinConfidence ` 设置为 50。如果要优化算法以获得更高的精确度，则可以将 `MinConfidence` 设置为高于 50。这样，您收到的通知就会减少，但每条通知都更加可靠。如果您想优化算法以提高查全率，则可以将 `MinConfidence` 设置为低于 50 以接收更多通知。

## 启动 Amazon Rekognition Video 标签检测流处理器
<a name="streaming-video-start-labels-stream-processor"></a>

您可使用在 `CreateStreamProcessor` 中指定的流处理器名称来调用 [StartStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StartStreamProcessor.html)，由此开始分析流视频。在标签检测流处理器上运行 `StartStreamProcessor` 操作时，需要输入启动和停止信息来确定处理时间。

启动流处理器时，标签检测流处理器的状态会以下列方式发生变化：

1. 当您调用 `StartStreamProcessor` 时，标签检测流处理器状态从 `STOPPED` 或 `FAILED` 变为 `STARTING`。

1. 当标签检测流处理器运行时，它会停留在 `STARTING` 中。

1. 标签检测流处理器运行完毕后，状态变为 `STOPPED` 或 `FAILED`。

`StartSelector` 指定了 Kinesis 流中开始处理的起点。您可以使用 KVS Producer 时间戳或 KVS 片段编号。有关更多信息，请参阅[片段](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_reader_Fragment.html)。

**注意**  
如果您使用 KVS Producer 时间戳，则必须以毫秒为单位输入时间。

`StopSelector` 指定何时停止处理该流。您可以指定处理视频的最长时间。默认持续时间最长为 10 秒。请注意，实际处理时间可能会比最大持续时间长一点，具体取决于单个 KVS 片段的大小。如果片段末尾已达到或超过最大持续时间，则处理时间将停止。

以下是 `StartStreamProcessor` 请求的 JSON 示例。

```
{
   "Name": "string",
   "StartSelector": {
     "KVSStreamStartSelector": { 
         "KVSProducerTimestamp": 1655930623123
      },
        "StopSelector": {
            "MaxDurationInSeconds": 11
      }
   }
}
```

如果流处理器成功启动，则会返回 HTTP 200 响应。包含一个空的 JSON 正文。

## 分析标签检测结果
<a name="streaming-video-labels-stream-processor-results"></a>

Amazon Rekognition Video 可以通过三种方式发布来自标签检测流处理器的通知：针对对象检测事件的亚马逊 SNS 通知、用于摘要 end-of-session的 Amazon SNS 通知以及详细的 Amazon S3 存储桶报告。
+ Amazon SNS 发送的对象检测事件通知。

  如果在视频流中检测到标签，您将收到有关对象检测事件的 Amazon SNS 通知。当在视频流中首次检测到感兴趣的物体或人员时，Amazon Rekognition 会发布通知。通知包括检测到的标签类型、置信度以及主角图片链接等信息。它们还包括被检测到的人或物体的裁剪图像和检测时间戳。通知格式如下：

  ```
  {"Subject": "Rekognition Stream Processing Event",
      "Message": {    
          "inputInformation": {
              "kinesisVideo": {
                  "streamArn": string
              }
          },
          "eventNamespace": {
              "type": "LABEL_DETECTED"
          },
          "labels": [{
              "id": string,
              "name": "PERSON" | "PET" | "PACKAGE",
              "frameImageUri": string,
              "croppedImageUri": string,
              "videoMapping": {
                  "kinesisVideoMapping": {
                      "fragmentNumber": string,
                      "serverTimestamp": number,
                      "producerTimestamp": number,
                      "frameOffsetMillis": number
                  }
              },
              "boundingBox": {
                  "left": number,
                  "top": number,
                  "height": number,
                  "width": number
              }
          }],
          "eventId": string,
          "tags": {
              [string]: string
          },
          "sessionId": string,
          "startStreamProcessorRequest": object
      }
  }
  ```
+ 亚马逊 SNS 摘要。 end-of-session

  当流处理会话结束时，您还会收到 Amazon SNS 通知。此通知列出了会话的元数据。它包括诸如处理流的持续时间等详细信息。通知格式如下：

  ```
  {"Subject": "Rekognition Stream Processing Event",
      "Message": {
          "inputInformation": {
              "kinesisVideo": {
                  "streamArn": string,
                  "processedVideoDurationMillis": number
              }
          },
          "eventNamespace": {
              "type": "STREAM_PROCESSING_COMPLETE"
          },
          "streamProcessingResults": {
              "message": string
          },
          "eventId": string,
          "tags": {
              [string]: string
          },
          "sessionId": string,
          "startStreamProcessorRequest": object
      }
  }
  ```
+ Amazon S3 存储桶报告。

  Amazon Rekognition Video 会将视频分析操作的详细推理结果发布到 `CreateStreamProcessor` 操作中提供的 Amazon S3 存储桶中。这些结果包括首次检测到感兴趣的物体或人员的图像帧。

  这些帧在 S3 中可用，路径如下：StreamProcessorName/ ObjectKeyPrefixSessionId/*service\$1determined\$1unique\$1path*。在此路径中，**LabelKeyPrefix**是客户提供的可选参数，**StreamProcessorName**是流处理器资源的名称，**SessionId**也是流处理会话的唯一 ID。根据您的情况进行更换。