使用分析视频 AWS Command Line Interface - Amazon Rekognition

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

使用分析视频 AWS Command Line Interface

你可以使用 AWS Command Line Interface (AWS CLI) 调用 Amazon Rekognition Video 操作。设计模式与将亚马逊 Rekognition Video 与之搭API配使用相同。 AWS SDK for Java AWS SDKs有关更多信息,请参阅 亚马逊 Rekognition Video 概述 API。以下过程说明如何使用 AWS CLI 来检测视频中的标签。

您可通过调用 start-label-detection 开始检测视频中的标签。当 Amazon Rekognition 完成对视频的分析后,完成状态将发送到参数中指定的SNS亚马逊主题。--notification-channel start-label-detection您可以通过将亚马逊简单队列服务 (AmazonSQS) 队列订阅亚马逊SNS主题来获取完成状态。然后,您可以轮询接收消息,从 Ama SQS zon 队列中获取完成状态。

调用 StartLabelDetection 时,您可以通过向 LabelsInclusionFilter 和/或 LabelsExclusionFilter 参数提供过滤参数来筛选结果。有关更多信息,请参阅 检测视频中的标签

完成状态通知是receive-message响应中的一个JSON结构。你需要JSON从响应中提取。有关完成状态的信息JSON,请参见参考:视频分析结果通知。如果已完成状态Status字段的值JSON为SUCCEEDED,则可以通过调用获取视频分析请求的结果get-label-detection。调用 GetLabelDetection 时,您可以使用 SortByAggregateBy 参数对返回的结果进行排序和汇总。

以下过程不包括轮询 Amazon SQS 队列的代码。此外,它们不包含用于解析从 Amazon SQS 队列返回JSON的代码的代码。有关 Java 示例,请参阅使用 Java 或 Python 分析存储在亚马逊 S3 存储桶中的视频 (SDK)

先决条件

要运行此过程,你需要 AWS CLI 安装。有关更多信息,请参阅 Amazon Rekognition 入门。您使用的AWS账户必须拥有亚马逊 Rek API ognition 的访问权限。有关更多信息,请参阅 Amazon Rekognition 定义的操作

配置 Amazon Rekognition Video 并上传视频
  1. 配置用户对亚马逊 Rekognition Video 的访问权限并配置亚马逊 Rekognition Video 对亚马逊的访问权限。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为您在ARN的步骤 3 中创建的 Amazon SNS 主题配置 Amazon Rekognition Video

    • 更改RoleARN为您在ARN的步骤 7 中创建的IAM服务角色配置 Amazon Rekognition Video

    • 如果需要,您可以指定 endpoint-url。AWSCLI应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. 编写代码以从完成状态中提取Status字段JSON。

  5. 如果的值StatusSUCCEEDED,则运行以下 AWS CLI 命令以显示标签检测结果。

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

    更新以下值:

    • JobId 更改得与您在步骤 2 中记下的任务标识符匹配。

    • us-east-1Endpoint和更改为您正在使用的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" } }, .......