使用分析視訊 AWS Command Line Interface - Amazon Rekognition

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

使用分析視訊 AWS Command Line Interface

您可以使用 AWS Command Line Interface (AWS CLI) 呼叫 Amazon Rekognition Video 操作。設計模式與將 Amazon Rekognition Video API 與 AWS SDK for Java 或其他 AWS 開發套件搭配使用相同。如需詳細資訊,請參閱 Amazon Rekognition Video API 概觀。下列程序說明如何使 AWS CLI 用偵測視訊中的標籤。

呼叫 start-label-detection 來開始偵側影片中的標籤。當 Amazon Rekognition 完成影片分析時,完成狀態會傳送到 start-label-detection--notification-channel 參數中所指定的 Amazon SNS 主題。您可以透過訂閱 Amazon Simple Queue Service (Amazon SQS) 佇列到 Amazon SNS 主题來取得完成狀態。接著輪詢接收訊息,以自 Amazon SQS 佇列取得完成狀態。

呼叫 StartLabelDetection 時,您可以透過向 LabelsInclusionFilter 和/或 LabelsExclusionFilter 參數提供過濾參數來過濾結果。如需詳細資訊,請參閱偵測影片中的標籤

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

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

必要條件

要運行此過程,你需要安 AWS CLI 裝。如需詳細資訊,請參閱 Amazon Rekognition 入門。您使用的 AWS 帳戶必須有 Amazon Rekognition API 的存取許可。如需詳細資訊,請參閱 Amazon Rekognition 定義的動作

若要設定 Amazon Rekognition Video 並上傳影片
  1. 設定使用者對 Amazon Rekognition Video 的存取權限,並設定 Amazon Rekognition Video 對 Amazon SNS 的存取。如需詳細資訊,請參閱 設定 Amazon Rekognition Video

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

    如需指示說明,請參閱《Amazon Simple Storage Service 使用者指南》中的上傳物件至 Amazon S3

若要偵測影片中的標籤
  1. 執行下列 AWS CLI 命令以開始偵測視訊中的標籤。

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

    更新下列的值:

    • bucketnamevideofile 變更為您在步驟 2 中指定的 Amazon S3 儲存貯體與文檔名稱。

    • us-east-1 變更為您正在使用的 AWS 區域。

    • 將建立 Rekognition 工作階段的行中 profile_name 值取代為您開發人員設定檔的名稱。

    • TopicARN 變更為您在 設定 Amazon Rekognition Video 步驟 3 建立的 Amazon SNS 主題 ARN。

    • RoleARN 變更為您在步驟 7 建立的 設定 Amazon Rekognition Video IAM 服務角色的 ARN。

    • 如有需要,可以指定 endpoint-url。AWS CLI 應根據提供的區域自動判斷適當的端點 URL。但是,如果您使用私有 VPC 中的端點,則可能需要指定 endpoint-urlAWS 服務端點資源會列出指定端點 URL 的語法,以及每個區域的名稱和程式碼。

    • 您還可以在設定參數中包括過濾條件。例如,您可以在所需值的清單之外,邊使用 LabelsInclusionFilterLabelsExclusionFilter

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

    aws rekognition start-label-detection --video "{\"S3Object\":{\"Bucket\":\"bucket-name\",\"Name\":\"video-name\"}}" --notification-channel "{\"SNSTopicArn\":\"TopicARN\",\"RoleArn\":\"RoleARN\"}" \ --region us-east-1 --features GENERAL_LABELS --settings "{\"GeneralLabels\":{\"LabelInclusionFilters\":[\"Car\"]}}" --profile profile-name
  2. 請記下回應中的 JobId 值。回應看起來類似以下 JSON 範例。

    { "JobId": "547089ce5b9a8a0e7831afa655f42e5d7b5c838553f1a584bf350ennnnnnnnnn" }
  3. 編寫程式碼來輪詢 Amazon SQS 佇列以取得完成狀態 JSON (使用接收訊息)。

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

  5. 如果的值StatusSUCCEEDED,請執行下列 AWS CLI 命令以顯示標籤偵測結果。

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

    更新下列的值:

    • 變更 JobId 以符合您在步驟 2 中所記下的任務識別碼。

    • 變更 Endpointus-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" } }, .......