

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

# 流视频问题排查
<a name="streaming-video-troubleshooting"></a>

本主题提供有关将 Amazon Rekognition Video 与流视频结合使用的问题排查信息。

**Topics**
+ [我不知道我的流处理器是否已成功创建](#ts-streaming-video-create-sp)
+ [我不知道我是否已正确配置我的流处理器](#ts-configured-sp)
+ [我的流处理器未返回结果](#ts-streaming-video-no-results-from-sp)
+ [我的流处理器的状态为 FAILED](#ts-failed-state)
+ [我的流处理器未返回预期结果](#w2aac27c79c27c15)

## 我不知道我的流处理器是否已成功创建
<a name="ts-streaming-video-create-sp"></a>

使用以下 AWS CLI 命令获取流处理器及其当前状态的列表。

```
aws rekognition list-stream-processors
```

您可以使用以下 AWS CLI 命令获取更多详细信息。将 `stream-processor-name` 替换为所需流处理器的名称。

```
aws rekognition describe-stream-processor --name stream-processor-name
```

## 我不知道我是否已正确配置我的流处理器
<a name="ts-configured-sp"></a>

如果您的代码未输出来自 Amazon Rekognition Video 的分析结果，则您的流处理器可能未正确配置。请执行以下操作来确认您的流处理器已正确配置并能够生成结果。

**确定您的解决方案是否已正确配置**

1. 运行以下命令来确认您的流处理器处于正在运行状态。将 `stream-processor-name` 更改为您的流处理器的名称。如果 `Status` 的值为 `RUNNING`，则表示流处理器正在运行。如果状态为 `RUNNING` 并且您未获得结果，请参阅 [我的流处理器未返回结果](#ts-streaming-video-no-results-from-sp)。如果状态为 `FAILED`，请参阅[我的流处理器的状态为 FAILED](#ts-failed-state)。

   ```
   aws rekognition describe-stream-processor --name stream-processor-name
   ```

1. 如果您的流处理器正在运行，请运行以下 Bash 或 PowerShell 命令从输出 Kinesis 数据流中读取数据。

   **Bash**

   ```
   SHARD_ITERATOR=$(aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name kinesis-data-stream-name --query 'ShardIterator')
                           aws kinesis get-records --shard-iterator $SHARD_ITERATOR
   ```

   **PowerShell**

   ```
   aws kinesis get-records --shard-iterator ((aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name kinesis-data-stream-name).split('"')[4])
   ```

1. 使用 Base64 解码网站上的[解码工具](https://www.base64decode.org/)将输出解码为人类可读的字符串。有关更多信息，请参阅[步骤 3：获取记录](https://docs.aws.amazon.com/streams/latest/dev/fundamental-stream.html#get-records)。

1. 如果命令有效，并且您在 Kinesis 数据流看到人脸检测结果，则表示您的解决方案已正确配置。如果命令失败，请查看其他问题排查建议并参阅[允许 Amazon Rekognition Video 访问您的资源](api-streaming-video-roles.md)。

或者，您可以使用 “kinesis-process-record” AWS Lambda 蓝图将来自 Kinesis 数据流的消息记录到以 CloudWatch 实现持续可视化。这会产生 AWS Lambda 和 CloudWatch的额外成本。

## 我的流处理器未返回结果
<a name="ts-streaming-video-no-results-from-sp"></a>

出于以下几个原因，您的流处理器可能不会返回结果。

### 原因 1：您的流处理器未正确配置
<a name="w2aac27c79c27c11b5"></a>

您的流处理器可能未进行正确配置。有关更多信息，请参阅 [我不知道我是否已正确配置我的流处理器](#ts-configured-sp)。

### 原因 2：您的流处理器未处于 RUNNING 状态
<a name="w2aac27c79c27c11b7"></a>

**排查流处理器状态的问题**

1. 使用以下 AWS CLI 命令检查流处理器的状态。

   ```
   aws rekognition describe-stream-processor --name stream-processor-name
   ```

1. 如果 `Status` 的值为 `STOPPED`，则使用以下命令启动您的流处理器：

   ```
   aws rekognition start-stream-processor --name stream-processor-name
   ```

1. 如果 `Status` 的值为 `FAILED`，请参阅[我的流处理器的状态为 FAILED](#ts-failed-state)。

1. 如果 `Status` 的值为 `STARTING`，则等待 2 分钟，然后重复步骤 1 以检查状态。如果 Status 的值仍为 `STARTING`，请执行以下操作：

   1. 使用以下命令删除流处理器。

      ```
      aws rekognition delete-stream-processor --name stream-processor-name
      ```

   1. 使用相同配置创建新的流处理器。有关更多信息，请参阅 [使用流视频事件](streaming-video.md)。

   1. 如果您仍然遇到问题，请联系 Su AWS pport。

1. 如果 `Status` 的值为 `RUNNING`，请参阅[原因 3：Kinesis 视频流中没有有效数据](#ts-no-data)。

### 原因 3：Kinesis 视频流中没有有效数据
<a name="ts-no-data"></a>

**检查 Kinesis 视频流中是否有有效数据**

1. 登录并打开 Amazon Kinesis Video Streams 控制台 [https://console.aws.amazon.com/kinesisvideo/](https://console.aws.amazon.com/kinesisvideo/)，网址为。 AWS 管理控制台

1. 选择作为 Amazon Rekognition 流处理器输入的 Kinesis 视频流。

1. 如果预览表明**流上无数据**，则 Amazon Rekognition Video 的输入流中没有要处理的任何数据。

有关使用 Kinesis 视频流生成视频的信息，请参阅 [Kinesis 视频流创建者库](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk.html)。

## 我的流处理器的状态为 FAILED
<a name="ts-failed-state"></a>

您可以使用以下 AWS CLI 命令检查流处理器的状态。

```
aws rekognition describe-stream-processor --name stream-processor-name
```

如果 Status 的值为 FAILED，则查看以下错误消息的问题排查信息。

### 错误：“（对角色的访问被拒绝）”
<a name="w2aac27c79c27c13b9"></a>

流处理器所用的 IAM 角色不存在或 Amazon Rekognition Video 无权代入该角色。

**排查对 IAM 角色的访问权限问题**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在左侧导航窗格中，选择**角色**并确认该角色存在。

1. 如果该角色存在，请检查该角色是否具有*AmazonRekognitionServiceRole*权限策略。

1. 如果该角色不存在或没有相应的权限，请参阅 [允许 Amazon Rekognition Video 访问您的资源](api-streaming-video-roles.md)。

1. 使用以下 AWS CLI 命令启动流处理器。

   ```
   aws rekognition start-stream-processor --name stream-processor-name
   ```

### 错误：“对 Kinesis 视频的访问被拒绝*或* 对 Kinesis 数据的访问被拒绝”
<a name="w2aac27c79c27c13c11"></a>

该角色无权访问 Kinesis Video Streams API 操作 `GetMedia` 和 `GetDataEndpoint`。此外，它可能无权访问 Kinesis Data Streams API 操作 `PutRecord` 和 `PutRecords`。

**排查 API 权限问题**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 打开该角色并确保它已附加以下权限策略。

1. 如果缺少任何权限，请更新该策略。有关更多信息，请参阅 [允许 Amazon Rekognition Video 访问您的资源](api-streaming-video-roles.md)。

### 错误：“直播*input-video-stream-name*不存在”
<a name="w2aac27c79c27c13c13"></a>

针对流处理器的 Kinesis 视频流输入不存在或未正确配置。

**排查 Kinesis 视频流问题**

1. 使用以下命令确认该流存在。

   ```
   aws kinesisvideo list-streams
   ```

1. 如果该流存在，请检查以下各项。
   + Amazon 资源名称 (ARN) 与流处理器的输入流的 ARN 相同。
   + Kinesis 视频流必须位于与流处理器相同的区域中。

   如果流处理器配置不正确，请使用以下 AWS CLI 命令将其删除。

   ```
   aws rekognition delete-stream-processor --name stream-processor-name
   ```

1. 使用预期的 Kinesis 视频流创建新的流处理器。有关更多信息，请参阅 [创建 Amazon Rekognition Video 人脸搜索流处理器](rekognition-video-stream-processor-search-faces.md#streaming-video-creating-stream-processor)。

### 错误：“找不到集合”
<a name="w2aac27c79c27c13c15"></a>

流处理器用于人脸匹配的 Amazon Rekognition 集合不存在或使用的是错误集合。

**确认集合**

1. 使用以下 AWS CLI 命令来确定所需的集合是否存在。切换`region`到你运行流处理器的 AWS 区域。

   ```
   aws rekognition list-collections --region region
   ```

   如果所需的集合不存在，则创建新的集合并添加人脸信息。有关更多信息，请参阅 [在集合中搜索人脸](collections.md)。

1. 在您调用 [CreateStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html) 时，请检查 `CollectionId` 输入参数的值是否正确。

1. 使用以下 AWS CLI 命令启动流处理器。

   ```
   aws rekognition start-stream-processor --name stream-processor-name
   ```

### 错误：“找*account-id*不到账号*output-kinesis-data-stream-name*下的直播”
<a name="w2aac27c79c27c13c17"></a>

流处理器使用的输出 Kinesis 数据流在您的区域中不存在 AWS 账户 或与您的流处理器不在同一个 AWS 区域。

**排查 Kinesis 数据流问题**

1. 使用以下 AWS CLI 命令确定 Kinesis 数据流是否存在。切换`region`到您使用流媒体处理器的 AWS 区域。

   ```
   aws kinesis list-streams --region region
   ```

1. 如果 Kinesis 数据流存在，请检查 Kinesis 数据流名称是否与流处理器所用的输出流的名称相同。

1. 如果 Kinesis 数据流不存在，则它可能存在于其他 AWS 区域。Kinesis 数据流必须位于与流处理器相同的区域中。

1. 如有必要，请创建一个新的 Kinesis 数据流。

   1. 使用与流处理器所用的名称相同的名称创建 Kinesis 数据流。有关更多信息，请参阅[步骤 1：创建数据流](https://docs.aws.amazon.com/streams/latest/dev/learning-kinesis-module-one-create-stream.html)。

   1. 使用以下 AWS CLI 命令启动流处理器。

      ```
      aws rekognition start-stream-processor --name stream-processor-name
      ```

## 我的流处理器未返回预期结果
<a name="w2aac27c79c27c15"></a>

如果您的流处理器未返回预期的人脸匹配，请使用以下信息。
+ [在集合中搜索人脸](collections.md)
+ [针对摄像机设置（流视频）的建议](recommendations-camera-streaming-video.md)