Chamando as operações do Amazon Rekognition Video - Amazon Rekognition

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Chamando as operações do Amazon Rekognition Video

O Amazon Rekognition Video é uma API assíncrona que você pode usar para analisar vídeos armazenados em um bucket do Amazon Simple Storage Service (Amazon S3). Você inicia a análise de um vídeo chamando uma operação do Amazon Start Rekognition Video, como. StartPersonTracking O Amazon Rekognition Video publica o resultado da solicitação de análise em um tópico do Amazon Simple Notification Service (Amazon SNS). Você pode usar uma fila do Amazon Simple Queue Service (Amazon SQS) ou uma função AWS Lambda para obter o status de conclusão da solicitação de análise de vídeo do tópico Amazon SNS. Por fim, você obtém os resultados da solicitação de análise de vídeo chamando uma operação do Get Amazon Rekognition, como. GetPersonTracking

As informações nas seções a seguir usam operações de detecção de rótulos para mostrar como o Amazon Rekognition Video detecta rótulos (objetos, eventos, conceitos e atividades) em um vídeo armazenado em um bucket do Amazon S3. A mesma abordagem funciona para as outras operações do Amazon Rekognition Video, por exemplo, e. StartFaceDetectionStartPersonTracking O exemplo Análise de um vídeo armazenado em um bucket do Amazon S3 com Java ou Python (SDK) mostra como analisar um vídeo usando uma fila do Amazon SQS para obter o status de conclusão do tópico Amazon SNS. Ele também é usado como base para outros exemplos de vídeos do Amazon Rekognition, como Pessoas trafegando. Para ver exemplos de AWS CLI, consulte Analisar um vídeo com o AWS Command Line Interface.

Iniciar a análise de vídeo

Você inicia uma solicitação de detecção de etiquetas do Amazon Rekognition Video ligando. StartLabelDetection Veja a seguir um exemplo de uma solicitação JSON que é transmitida por StartLabelDetection.

{ "Video": { "S3Object": { "Bucket": "bucket", "Name": "video.mp4" } }, "ClientRequestToken": "LabelDetectionToken", "MinConfidence": 50, "NotificationChannel": { "SNSTopicArn": "arn:aws:sns:us-east-1:nnnnnnnnnn:topic", "RoleArn": "arn:aws:iam::nnnnnnnnnn:role/roleopic" }, "JobTag": "DetectingLabels" }

O parâmetro de entrada Video fornece o nome do arquivo de vídeo e o bucket do Amazon S3 do qual recuperá-lo. NotificationChannel contém o nome de recurso da Amazon (ARN) do tópico do Amazon SNS que o Amazon Rekognition Video notifica quando a solicitação de análise de vídeo é concluída. O tópico do Amazon SNS deve estar na mesma região da AWS do endpoint do Amazon Rekognition Video para o qual você está ligando. NotificationChannel também contém o ARN de uma função que permite que o Amazon Rekognition Video seja publicado no tópico do Amazon SNS. Você concede permissões de publicação do Amazon Rekognition aos seus tópicos do Amazon SNS criando um perfil de serviço do IAM. Para ter mais informações, consulte Configuração do Amazon Rekognition Video.

Você também pode especificar um parâmetro de entrada opcional, JobTag, que permite identificar o trabalho no status de conclusão que é publicado no tópico do Amazon SNS.

Para evitar a duplicação acidental de trabalhos de análise, você pode opcionalmente fornecer um token de idempotência, ClientRequestToken. Se você fornecer um valor para ClientRequestToken, a operação Start retornará o mesmo JobId para várias chamadas idênticas para a operação inicial, como StartLabelDetection. Um token ClientRequestToken tem uma vida útil de 7 dias. Depois de 7 dias, você pode reutilizá-lo. Se você reutilizar o token durante a vida útil, o seguinte acontecerá:

  • Se você reutilizar o token com a mesma operação Start e os mesmos parâmetros de entrada, o mesmo JobId será retornado. O trabalho não é executado novamente e o Amazon Rekognition Video não envia um status de conclusão para o tópico registrado do Amazon SNS.

  • Se você reutilizar o token com a mesma operação Start e uma pequena alteração no parâmetro de entrada, você receberá uma exceção IdempotentParameterMismatchException (código de status HTTP: 400).

  • Você não deve reutilizar um token com operações Start diferentes, pois obterá resultados imprevisíveis do Amazon Rekognition.

A resposta à operação StartLabelDetection é um identificador de trabalho (JobId). Use o JobId para rastrear solicitações e obter os resultados da análise após o Amazon Rekognition Video publicar o status de conclusão no tópico do Amazon SNS. Por exemplo: .

{"JobId":"270c1cc5e1d0ea2fbc59d97cb69a72a5495da75851976b14a1784ca90fc180e3"}

Se você iniciar muitos trabalhos ao mesmo tempo, as chamadas para StartLabelDetection gerarão um LimitExceededException (código de status HTTP: 400) até que o número de trabalhos em execução simultânea fique abaixo do limite do serviço Amazon Rekognition.

Se você descobrir que exceções LimitExceededException são levantadas com picos de atividade, considere usar uma fila do Amazon SQS para gerenciar as solicitações recebidas. Entre em contato com o suporte da AWS se você acredita que o número médio de solicitações simultâneas não pode ser gerenciado por uma fila do Amazon SQS e continua recebendo exceções LimitExceededException.

Obter o status de conclusão de uma solicitação de análise do Amazon Rekognition Video

O Amazon Rekognition Video envia uma notificação de conclusão da análise para o tópico registrado do Amazon SNS. A notificação inclui o identificador do trabalho e o status de conclusão da operação em uma string JSON. Uma solicitação de análise de vídeo bem-sucedida tem o status SUCCEEDED. Por exemplo, o resultado a seguir mostra o processamento bem-sucedido de um trabalho de detecção de rótulo.

{ "JobId": "270c1cc5e1d0ea2fbc59d97cb69a72a5495da75851976b14a1nnnnnnnnnnnn", "Status": "SUCCEEDED", "API": "StartLabelDetection", "JobTag": "DetectingLabels", "Timestamp": 1510865364756, "Video": { "S3ObjectName": "video.mp4", "S3Bucket": "bucket" } }

Para ter mais informações, consulte Referência: Notificação de resultados de análise de vídeo.

Para obter as informações de status publicadas no tópico Amazon SNS pelo Amazon Rekognition Video, use uma das seguintes opções:

  • AWS Lambda — Você pode assinar uma função AWS Lambda que você escreve em um tópico do Amazon SNS. A função é chamada quando o Amazon Rekognition notifica o tópico do Amazon SNS de que a solicitação foi concluída. Use uma função do Lambda se quiser que o código do servidor processe os resultados de uma solicitação de análise de vídeo. Por exemplo, você pode usar o código do lado do servidor para anotar o vídeo ou criar um relatório sobre o conteúdo do vídeo antes de retornar as informações para um aplicativo cliente. Também recomendamos o processamento do lado do servidor para vídeos grandes, pois a API Amazon Rekognition pode retornar grandes volumes de dados.

  • Amazon Simple Queue Service — Você pode inscrever uma fila do Amazon SQS em um tópico do Amazon SNS. Em seguida, você pesquisa a fila do Amazon SQS para recuperar o status de conclusão publicado pelo Amazon Rekognition quando uma solicitação de análise de vídeo é concluída. Para ter mais informações, consulte Análise de um vídeo armazenado em um bucket do Amazon S3 com Java ou Python (SDK). Use uma fila do Amazon SQS se quiser chamar as operações do Amazon Rekognition Video somente a partir de um aplicativo cliente.

Importante

Não recomendamos obter o status de conclusão da solicitação chamando repetidamente a operação Amazon Rekognition Video Get. Isso ocorre porque o Amazon Rekognition Video limita a operação Get se muitas solicitações forem feitas. Se você estiver processando vários vídeos simultaneamente, é mais simples e eficiente monitorar uma fila SQS para a notificação de conclusão do que pesquisar o Amazon Rekognition Video para saber o status de cada vídeo individualmente.

Obter os resultados da análise do Amazon Rekognition Video

Para obter os resultados de uma solicitação de análise de vídeo, primeiro certifique-se de que o status de conclusão recuperado do tópico do Amazon SNS seja SUCCEEDED. Em seguida, chame GetLabelDetection, que transmite o valor JobId que é retornado de StartLabelDetection. O JSON solicitado é semelhante ao exemplo a seguir:

{ "JobId": "270c1cc5e1d0ea2fbc59d97cb69a72a5495da75851976b14a1784ca90fc180e3", "MaxResults": 10, "SortBy": "TIMESTAMP" }

JobId é o identificador da operação de análise de vídeo. Como a análise de vídeo pode gerar grandes quantidades de dados, use MaxResults para especificar o número máximo de resultados para retornar em uma única operação Get. O valor padrão para MaxResults é 1000. Se você especificar um valor maior que 1000, um máximo de 1000 resultados será retornado. Se a operação não retornar todo o conjunto de resultados, um token de paginação para a próxima página será retornado na resposta da operação. Se você tiver um token de paginação de uma solicitação Get anterior, use-o com NextToken para obter a próxima página de resultados.

nota

O Amazon Rekognition retém os resultados de uma operação de análise de vídeo por 7 dias. Você não poderá recuperar os resultados da análise após esse período.

O JSON solicitado da operação GetLabelDetection é similar ao seguinte:

{ "Labels": [ { "Timestamp": 0, "Label": { "Instances": [], "Confidence": 60.51791763305664, "Parents": [], "Name": "Electronics" } }, { "Timestamp": 0, "Label": { "Instances": [], "Confidence": 99.53411102294922, "Parents": [], "Name": "Human" } }, { "Timestamp": 0, "Label": { "Instances": [ { "BoundingBox": { "Width": 0.11109819263219833, "Top": 0.08098889887332916, "Left": 0.8881205320358276, "Height": 0.9073750972747803 }, "Confidence": 99.5831298828125 }, { "BoundingBox": { "Width": 0.1268676072359085, "Top": 0.14018426835536957, "Left": 0.0003282368124928324, "Height": 0.7993982434272766 }, "Confidence": 99.46029663085938 } ], "Confidence": 99.53411102294922, "Parents": [], "Name": "Person" } }, . . . { "Timestamp": 166, "Label": { "Instances": [], "Confidence": 73.6471176147461, "Parents": [ { "Name": "Clothing" } ], "Name": "Sleeve" } } ], "LabelModelVersion": "2.0", "JobStatus": "SUCCEEDED", "VideoMetadata": { "Format": "QuickTime / MOV", "FrameRate": 23.976024627685547, "Codec": "h264", "DurationMillis": 5005, "FrameHeight": 674, "FrameWidth": 1280 } }

As operações GetContentModeration e GetLabelDetection permitem que você classifique os resultados da análise por data e hora ou pelo nome do rótulo. Você também pode agregar resultados por segmento de vídeo ou por data e hora.

Você pode classificar os resultados por tempo de detecção (milissegundos desde o início do vídeo) ou em ordem alfabética pela entidade detectada (objeto, face, celebridade, rótulo de moderação ou pessoa). Para classificar por tempo, defina o valor do parâmetro de entrada SortBy para TIMESTAMP. Se SortBy não for especificado, o comportamento padrão será classificado por tempo. O exemplo anterior é classificado por tempo. Para classificar por entidade, use o parâmetro de entrada SortBy com o valor adequado para a operação que você está executando. Por exemplo, para classificar por rótulo detectado em uma chamada para GetLabelDetection, use o valor NAME.

Para agregar resultados por data e hora, defina o valor do parâmetro AggregateBy como TIMESTAMPS. Para agregar por segmento de vídeo, defina o valor de AggregateBy para SEGMENTS. SEGMENTS o modo de agregação agregará os rótulos ao longo do tempo, ao mesmo tempo em que TIMESTAMPS fornece ao carimbo de data/hora em que um rótulo foi detectado, usando amostragem de 2 FPS e saída por quadro (Nota: Essa taxa de amostragem atual está sujeita a alterações, não devem ser feitas suposições sobre a taxa de amostragem atual). Se nenhum valor for especificado, o método de agregação padrão será TIMESTAMPS.