

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

# 使用 分析影片 AWS Command Line Interface
<a name="video-cli-commands"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 來呼叫 Amazon Rekognition Video 操作。設計模式與搭配 適用於 Java 的 AWS SDK 或其他 AWS SDKs使用 Amazon Rekognition Video API 相同。如需詳細資訊，請參閱[Amazon Rekognition Video API 概觀](video.md#video-api-overview)。下列程序說明如何使用 AWS CLI 來偵測影片中的標籤。

呼叫 `start-label-detection` 來開始偵側影片中的標籤。當 Amazon Rekognition 完成影片分析時，完成狀態會傳送到 `start-label-detection` 的 `--notification-channel` 參數中所指定的 Amazon SNS 主題。您可以透過訂閱 Amazon Simple Queue Service (Amazon SQS) 佇列到 Amazon SNS 主题來取得完成狀態。接著輪詢[接收訊息](https://docs.aws.amazon.com/cli/latest/reference/sqs/receive-message.html)，以自 Amazon SQS 佇列取得完成狀態。

呼叫 `StartLabelDetection` 時，您可以透過向 `LabelsInclusionFilter` 和/或 `LabelsExclusionFilter` 參數提供過濾參數來過濾結果。如需詳細資訊，請參閱 [偵測影片中的標籤](labels-detecting-labels-video.md)。

完成狀態通知的為 `receive-message` 回應內的 JSON 結構。您需要自回應中擷取出 JSON。如需完成狀態 JSON 的相關資訊，請參閱 [參考：影片分析結果通知](video-notification-payload.md)。如果已完整狀態 JSON 的 `Status` 欄位值為 `SUCCEEDED`，您可以呼叫 `get-label-detection` 來取得影片分析請求的結果。呼叫 `GetLabelDetection` 時，您可以使用 `SortBy` 和 `AggregateBy` 引數來排序和彙總傳回的結果。

以下程序不包含用以輪詢 Amazon SQS 佇列的程式碼。此外也不包含用於剖析自 Amazon SQS 佇列傳回的 JSON 之程式碼。如需 Java 範例，請參閱 [使用 Java 或 Python (SDK) 分析儲存於 Amazon S3 儲存貯體中的影片](video-analyzing-with-sqs.md)。

## 先決條件
<a name="video-prerequisites"></a>

若要執行此程序，您需要 AWS CLI 安裝 。如需詳細資訊，請參閱[Amazon Rekognition 入門](getting-started.md)。您使用的 AWS 帳戶必須有 Amazon Rekognition API 的存取許可。如需詳細資訊，請參閱 [Amazon Rekognition 定義的動作](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonrekognition.html#amazonrekognition-actions-as-permissions)。

**若要設定 Amazon Rekognition Video 並上傳影片**

1. 設定使用者對 Amazon Rekognition Video 的存取權限，並設定 Amazon Rekognition Video 對 Amazon SNS 的存取。如需詳細資訊，請參閱 [設定 Amazon Rekognition Video](api-video-roles.md)。

1. 將 MOV 或 MPEG-4 格式的影片上傳到 S3 儲存貯體。在開發和測試階段，我們建議使用長度不超過 30 秒的短片。

   如需指示說明，請參閱《Amazon Simple Storage Service 使用者指南》**中的[上傳物件至 Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UploadingObjectsintoAmazonS3.html)。

**若要偵測影片中的標籤**

1. 執行下列 AWS CLI 命令，開始偵測影片中的標籤。

   ```
   aws rekognition start-label-detection --video '{"S3Object":{"Bucket":"amzn-s3-demo-bucket","Name":"video-name"}}' \
    --notification-channel '{"SNSTopicArn":"TopicARN","RoleArn":"RoleARN"}' \
   --region region-name  \ 
   --features GENERAL_LABELS \
   --profile profile-name \
   --settings "{"GeneralLabels":{"LabelInclusionFilters":["Car"]}}
   ```

   更新下列的值：
   + 將 `amzn-s3-demo-bucket` 與 `videofile` 變更為您在步驟 2 中指定的 Amazon S3 儲存貯體與文檔名稱。
   + 將 `us-east-1` 變更為您正在使用的 AWS 區域。
   + 將建立 Rekognition 工作階段的行中 `profile_name` 值取代為您開發人員設定檔的名稱。
   + 將 `TopicARN` 變更為您在 [設定 Amazon Rekognition Video](api-video-roles.md) 步驟 3 建立的 Amazon SNS 主題 ARN。
   + 將 `RoleARN` 變更為您在步驟 7 建立的 [設定 Amazon Rekognition Video](api-video-roles.md) IAM 服務角色的 ARN。
   + 如有需要，可以指定 `endpoint-url`。AWS CLI 應根據提供的區域自動判斷適當的端點 URL。但是，如果您使用[私有 VPC 中](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html#what-is-privatelink)的端點，則可能需要指定 `endpoint-url`。[AWS 服務端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints)資源會列出指定端點 URL 的語法，以及每個區域的名稱和程式碼。
   + 您還可以在設定參數中包括過濾條件。例如，您可以在所需值的清單之外，邊使用 `LabelsInclusionFilter` 或 `LabelsExclusionFilter`。

    如果您在 Windows 裝置上存取 CLI，請使用雙引號而非單引號，並以反斜線 (即\$1) 替代內部雙引號，以解決您可能遇到的任何剖析器錯誤。如需範例，請參閱下列內容：

   ```
   aws rekognition start-label-detection --video "{\"S3Object\":{\"Bucket\":\"amzn-s3-demo-bucket",\"Name\":\"video-name\"}}" --notification-channel "{\"SNSTopicArn\":\"TopicARN\",\"RoleArn\":\"RoleARN\"}" \
   --region us-east-1 --features GENERAL_LABELS --settings "{\"GeneralLabels\":{\"LabelInclusionFilters\":[\"Car\"]}}" --profile profile-name
   ```

1. 請記下回應中的 `JobId` 值。回應看起來類似以下 JSON 範例。

   ```
   {
       "JobId": "547089ce5b9a8a0e7831afa655f42e5d7b5c838553f1a584bf350ennnnnnnnnn"
   }
   ```

1. 編寫程式碼來輪詢 Amazon SQS 佇列以取得完成狀態 JSON (使用[接收訊息](https://docs.aws.amazon.com/cli/latest/reference/sqs/receive-message.html))。

1. 編寫程式碼以自完成狀態 JSON 擷取 `Status` 欄位。

1. 如果 的值`Status`為 `SUCCEEDED`，請執行下列 AWS CLI 命令以顯示標籤偵測結果。

   ```
   aws rekognition get-label-detection  --job-id JobId \
   --region us-east-1 --sort-by TIMESTAMP aggregate-by TIMESTAMPS
   ```

   更新下列的值：
   + 變更 `JobId` 以符合您在步驟 2 中所記下的任務識別碼。
   + 變更 `Endpoint` 和 `us-east-1` 為 AWS 端點與您正在使用的區域。

   結果看起來類似以下 JSON 範例：

   ```
   {
       "Labels": [
           {
               "Timestamp": 0,
               "Label": {
                   "Confidence": 99.03720092773438,
                   "Name": "Speech"
               }
           },
           {
               "Timestamp": 0,
               "Label": {
                   "Confidence": 71.6698989868164,
                   "Name": "Pumpkin"
               }
           },
           {
               "Timestamp": 0,
               "Label": {
                   "Confidence": 71.6698989868164,
                   "Name": "Squash"
               }
           },
           {
               "Timestamp": 0,
               "Label": {
                   "Confidence": 71.6698989868164,
                   "Name": "Vegetable"
               }
           }, .......
   ```