를 사용하여 비디오를 분석합니다. 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와 함께 사용하는 것과 동일합니다. AWS SDK for Java 자세한 정보는 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 주제를 구독하면 됩니다. 그런 다음 receive-message를 폴링하여 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으로 Amazon S3 버킷에 저장된 비디오 분석(SDK) 단원을 참조하십시오.

필수 조건

이 절차를 실행하려면 소프트웨어를 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의 값을 개발자 프로필의 이름으로 대체합니다.

    • TopicARNAmazon Rekognition Video 구성의 3단계에서 생성한 Amazon SNS 주제의 ARN으로 변경합니다.

    • RoleARNAmazon Rekognition Video 구성의 7단계에서 생성한 IAM 서비스 역할의 ARN으로 변경합니다.

    • 필요한 경우 endpoint-url을 지정할 수 있습니다. AWS CLI는 제공된 리전을 기반으로 적절한 엔드포인트 URL을 자동으로 결정할 것입니다. 하지만 프라이빗 VPC의 엔드포인트를 사용하는 경우에는 endpoint-url을 지정해야 할 수 있습니다. AWS Service 엔드포인트 리소스에는 엔드포인트 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" } }, .......