

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 串流影片故障診斷
<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)
+ [我的串流處理器狀態是失敗](#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`，請參閱[我的串流處理器狀態是失敗](#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 Decode 網站上的[解碼工具](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`，請參閱 [我的串流處理器狀態是失敗](#ts-failed-state)。

1. 若 `Status` 的值為 `STARTING`，請等待 2 分鐘並重複步驟 1 以檢查狀態。如果狀態的值仍為 `STARTING`，請執行以下專案：

   1. 使用以下命令刪除串流處理器。

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

   1. 使用相同組態建立新的串流處理器。如需詳細資訊，請參閱[處理串流影片事件](streaming-video.md)。

   1. 如果您仍然有問題，請聯絡 AWS Support。

1. 若 `Status` 的值為 `RUNNING`，請參閱 [原因 3：在 Kinesis 中沒有作用中的資料](#ts-no-data)。

### 原因 3：在 Kinesis 中沒有作用中的資料
<a name="ts-no-data"></a>

**檢查 Kinesis 影片串流中是否有作用中的資料**

1. 登入 AWS 管理主控台，然後開啟位於 https：//[https://console.aws.amazon.com/kinesisvideo/](https://console.aws.amazon.com/kinesisvideo/) 的 Amazon Kinesis Video Streams 主控台。

1. 選取作為 Amazon Rekognition 串流處理器輸入的 Kinesis 影片串流。

1. 如果預覽顯示為**無串流資料**，則在輸入串流中沒有可供 Amazon Rekognition Video 處理的資料。

如需使用 Kinesis Video Streams 產生影片的資訊，請參閱 [Kinesis 影片串流生成器程式庫](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk.html)。

## 我的串流處理器狀態是失敗
<a name="ts-failed-state"></a>

您可以使用下列 AWS CLI 命令來檢查串流處理器的狀態。

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

如果狀態的值為失敗，請查看以下錯誤訊息的故障診斷資訊。

### 錯誤：「 角色存取遭拒」
<a name="w2aac27c79c27c13b9"></a>

由串流處理器使用的 IAM 角色不存在或 Amazon Rekognition Video 未具有擔任角色的許可。

**故障診斷 IAM 角色的存取**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在左側導覽窗格中，請選擇 **Roles (角色)** 並確認角色存在。

1. 若角色存在，請確認角色具有 *AmazonRekognitionServiceRole* 許可政策。

1. 若該角色不存在或未具有正確的許可，請參閱[讓 Amazon Rekognition Video 有權存取您的資源](api-streaming-video-roles.md)。

1. 使用以下 AWS CLI 命令啟動串流處理器。

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

### 錯誤：「存取 Kinesis Video 遭拒*或*存取 Kinesis Data 遭拒。」
<a name="w2aac27c79c27c13c11"></a>

該角色無法存取 API 操作 `GetMedia` 和 `GetDataEndpoint`。該角色可能也無法存取 Kinesis Data Streams API 操作 `PutRecord` 和 `PutRecords`。

**故障診斷 API 許可**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 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 Resource Name (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
   ```

### 錯誤：「找不到*帳戶 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)