AWS Command Line Interface を使用したビデオの分析 - Amazon Rekognition

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Command Line Interface を使用したビデオの分析

AWS Command Line Interface (AWS CLI) を使用して、Amazon Rekognition Video オペレーションを呼び出せます。デザインパターンは、AWS SDK for Java または他の AWS SDK で Amazon Rekognition Video API を使用する場合と同じです。詳細については、「Amazon Rekognition Video API の概要」を参照してください。以下の手順は、AWS CLI を使用してビデオ内のラベルを検出する方法を示しています。

ビデオ内のラベルの検出を開始するには、start-label-detection を呼び出します。Amazon Rekognition によるビデオの分析が完了すると、--notification-channelstart-label-detection パラメータで指定されている Amazon SNS トピックに完了ステータスが送信されます。Amazon Simple Queue Service (Amazon SQS) キューを Amazon SNS トピックにサブスクライブすることで、完了ステータスを取得できます。次に [receive-message] をポーリングして Amazon SQS キューから完了ステータスを取得します。

StartLabelDetection を呼び出すときは、LabelsInclusionFilter および/または LabelsExclusionFilter 引数にフィルター引数を指定して結果をフィルタリングできます。詳細については、ビデオ内のラベルの検出を参照してください。

完了ステータスの通知は、receive-message 応答内の JSON 構造です。この JSON を応答から抽出する必要があります。完了ステータス JSON については、「リファレンス: ビデオ分析結果の通知」を参照してください。JSON 完了ステータスの Status フィールドの値が SUCCEEDED の場合、get-label-detection を呼び出すことでビデオ分析リクエストの結果を取得できます。GetLabelDetection を呼び出すときは、SortBy および AggregateBy 引数を使用して返された結果をソートして集計できます。

以下の手順には、Amazon SQS キューをポーリングするコードは含まれていません。また、Amazon SQS キューから返される JSON を解析するコードも含まれていません。Java での例については、「Java または Python を使用した、Amazon S3 バケットに保存されたビデオの分析 (SDK)」を参照してください。

前提条件

以下の手順を実行するには、AWS CLI をインストールしている必要があります。詳細については、「Amazon Rekognition の開始方法」を参照してください。使用する AWS アカウントには、Amazon Rekognition API に対するアクセス許可が必要です。詳細については、[Amazon Rekognition によって定義されるアクション] を参照してください。

Amazon Rekognition Video を設定してビデオをアップロードするには
  1. Amazon Rekognition Video へのユーザーアクセスを設定し、Amazon SNS への Amazon Rekognition Video アクセスを設定します。詳細については、「Amazon Rekognition Video の設定」を参照してください。

  2. S3 バケットに MOV あるいは MPEG-4 形式のビデオファイルをアップロードします。開発やテストには、長さが 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 を、Amazon Rekognition Video の設定 のステップ 7 で作成した IAM サービスロールの ARN に変更します。

    • 必要に応じて、endpoint-url を指定できます。AWS CLI は、指定されたリージョンに基づいて適切なエンドポイント URL を自動的に決定します。ただし、[プライベート VPC の] エンドポイントを使用している場合は、endpoint-url の指定が必要となる場合があります。[AWS サービスエンドポイント] リソースに、エンドポイント URL を指定するための構文、および各リージョンの名前とコードが記載されています。

    • 設定パラメータにフィルター条件を含めることもできます。例えば、目的の値のリストと共に LabelsInclusionFilter または LabelsExclusionFilter を使用できます。

    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 を取得するコードを書き込みます ([receive-message] を使用)。

  4. 完了ステータス JSON から Status フィールドを抽出するコードを記述します。

  5. Status の値が SUCCEEDED の場合、以下の 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" } }, .......