Análisis de un vídeo con la AWS Command Line Interface
Puede usar AWS Command Line Interface (AWS CLI) para llamar a las operaciones de Amazon Rekognition Video. El patrón de diseño es el mismo que con la API de Amazon Rekognition Video con AWS SDK for Java u otros AWS SDK. Para obtener más información, consulte Descripción general de la API de Amazon Rekognition Video. Los siguientes procedimientos muestran cómo utilizar la AWS CLI para detectar etiquetas en un vídeo.
Comienza la detección de etiquetas en un vídeo llamando a start-label-detection
. Cuando Amazon Rekognition termina de analizar el vídeo, el estado de realización se envía al tema de Amazon SNS que se ha especificado en el parámetro --notification-channel
de start-label-detection
. Puede obtener el estado de realización suscribiendo una cola de Amazon Simple Queue Service (Amazon SQS) al tema de Amazon SNS. A continuación, sondee receive-message para obtener el estado de realización de la cola de Amazon SQS.
Al llamar a StartLabelDetection
, puede filtrar los resultados proporcionando argumentos de filtrado a los argumentos LabelsInclusionFilter
y/o LabelsExclusionFilter
. Para obtener más información, consulte Detección de etiquetas en un vídeo.
La notificación del estado de realización es una estructura de JSON dentro de la respuesta receive-message
. Tiene que extraer el JSON de la respuesta. Para obtener más información acerca del JSON del estado de realización, consulte Referencia: notificación de resultados de análisis de vídeo. Si el valor del campo Status
del JSON de estado completado es SUCCEEDED
, puede obtener los resultados de la solicitud de análisis llamando a get-label-detection
. Al llamar a GetLabelDetection
, puede ordenar y agregar los resultados devueltos utilizando los argumentos SortBy
y AggregateBy
.
Los siguientes procedimientos no incluyen código para sondear la cola de Amazon SQS. Además, no incluyen código para analizar el JSON que se devuelve desde la cola de Amazon SQS. Para ver un ejemplo en Java, consulte Análisis de un vídeo almacenado en un bucket de Amazon S3 con Java o Python (SDK).
Requisitos previos
Para ejecutar este procedimiento, necesita tener AWS CLI instalado. Para obtener más información, consulte Introducción a Amazon Rekognition. La cuenta de AWS que utilice debe tener permisos de acceso a la API de Amazon Rekognition. Para obtener más información, Acciones definidas por Amazon Rekognition.
Para configurar Amazon Rekognition Video y subir un vídeo
-
Configure el acceso de los usuarios a Amazon Rekognition Video y configure el acceso de Amazon Rekognition Video a Amazon SNS. Para obtener más información, consulte Configuración de Amazon Rekognition Video.
-
Cargue un archivo de vídeo con formato MOV o MPEG-4 en el bucket de S3. Para desarrollo y pruebas, le aconsejamos que utilice vídeos cortos con una duración inferior a 30 segundos.
Para ver las instrucciones, consulte Carga de objetos en Amazon S3 en la Guía del usuario de Amazon Simple Storage Service.
Para detectar etiquetas en un vídeo
-
Ejecute el siguiente comando de AWS CLI para comenzar la detección de etiquetas en un vídeo.
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"]}}
Actualice los siguientes valores:
-
Cambie
bucketname
yvideofile
por el nombre del bucket de Amazon S3 y el nombre de archivo que especificó en el paso 2. -
Cambie
us-east-1
por la región de AWS que está utilizando. -
Sustituya el valor de
profile_name
en la línea que crea la sesión de Rekognition por el nombre de su perfil de desarrollador. -
Reemplace
TopicARN
por el ARN del tema de Amazon SNS que creó en el paso 3 de Configuración de Amazon Rekognition Video. -
Cambie
RoleARN
por el ARN del rol de servicio de IAM que creó en el paso 7 de Configuración de Amazon Rekognition Video. -
Si es necesario, puede especificar la
endpoint-url
. La CLI de AWS debe determinar automáticamente la URL del punto de conexión adecuada en función de la región proporcionada. Sin embargo, si utiliza un punto de conexión de su VPC privada, es posible que deba especificar laendpoint-url
. El recurso AWS Service Endpoints incluye la sintaxis para especificar las direcciones URL de los puntos de conexión y los nombres y códigos de cada región. -
También puede incluir criterios de filtrado en el parámetro de configuración. Por ejemplo, puede utilizar un
LabelsInclusionFilter
o unLabelsExclusionFilter
junto a una lista de los valores deseados.
Si accede a la CLI en un dispositivo Windows, utilice comillas dobles en lugar de comillas simples y evite las comillas dobles internas con una barra invertida (es decir, \) para corregir cualquier error del analizador que pueda encontrar. Consulte a continuación un ejemplo:
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
-
-
Anote el valor de
JobId
en la respuesta. La respuesta tiene un aspecto similar a la del siguiente ejemplo JSON.{ "JobId": "547089ce5b9a8a0e7831afa655f42e5d7b5c838553f1a584bf350ennnnnnnnnn" }
-
Escriba código para sondear la cola de Amazon SQS para ver el JSON del estado de realización (mediante la utilización de receive-message).
-
Escriba código para extraer el campo
Status
del JSON de estado de realización. -
Si el valor de
Status
esSUCCEEDED
, ejecute el siguiente comando de AWS CLI para mostrar los resultados de detección de etiqueta.aws rekognition get-label-detection --job-id
JobId
\ --regionus-east-1
--sort-by TIMESTAMP aggregate-by TIMESTAMPSActualice los siguientes valores:
-
Cambie
JobId
para que coincida con el identificador de trabajo que ha anotado en el paso 2. -
Cambie
Endpoint
yus-east-1
al punto de conexión y la región de AWS que está utilizando.
Los resultados tienen un aspecto similar al JSON del siguiente ejemplo:
{ "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" } }, .......
-