Chamando as operações de vídeo 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 de vídeo do Amazon Rekognition Video

O Amazon Rekognition Video é API um sistema assíncrono 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 (AmazonSQS) ou uma AWS Lambda função para obter o status de conclusão da solicitação de análise de vídeo do tópico da AmazonSNS. 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 SQS fila da Amazon para obter o status de conclusão do SNS tópico da Amazon. Ele também é usado como base para outros exemplos de vídeos do Amazon Rekognition, como Pessoas trafegando. Para obter AWS CLI exemplos, consulteAnalisando 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 JSON solicitação que foi passadaStartLabelDetection.

{ "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 para recuperá-lo. NotificationChannelcontém o Amazon Resource Name (ARN) do SNS tópico da Amazon que o Amazon Rekognition Video notifica quando a solicitação de análise de vídeo é concluída. O SNS tópico da Amazon deve estar na mesma AWS região do endpoint do Amazon Rekognition Video para o qual você está ligando. NotificationChanneltambém contém o ARN for, uma função que permite que o Amazon Rekognition Video publique no tópico da Amazon. SNS Você concede ao Amazon Rekognition permissões de publicação para SNS seus tópicos da Amazon criando uma função de serviço. IAM Para obter mais informações, consulte Configuração do Amazon Rekognition Video.

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

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 na Amazon. SNS

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

  • 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 JobId para rastrear solicitações e obter os resultados da análise depois que o Amazon Rekognition Video publicar o status de conclusão do tópico da Amazon. SNS Por exemplo:

{"JobId":"270c1cc5e1d0ea2fbc59d97cb69a72a5495da75851976b14a1784ca90fc180e3"}

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

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

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 na Amazon. SNS A notificação inclui o identificador do trabalho e o status de conclusão da operação em uma JSON string. 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 obter 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 SNS tópico da Amazon pelo Amazon Rekognition Video, use uma das seguintes opções:

  • AWS Lambda— Você pode assinar uma AWS Lambda função que você escreve para um SNS tópico da Amazon. A função é chamada quando o Amazon Rekognition notifica o tópico da Amazon de que SNS 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 no lado do servidor para vídeos grandes, pois o Amazon API Rekognition pode retornar grandes volumes de dados.

  • Amazon Simple Queue Service — Você pode inscrever uma SQS fila da Amazon em um tópico da AmazonSNS. Em seguida, você consulta a SQS fila da Amazon para recuperar o status de conclusão publicado pelo Amazon Rekognition quando uma solicitação de análise de vídeo é concluída. Para obter mais informações, consulte Análise de um vídeo armazenado em um bucket do Amazon S3 com Java ou Python () SDK. Use uma SQS fila da Amazon 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 SQS fila para a notificação de conclusão do que consultar 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 obtido do SNS tópico da Amazon sejaSUCCEEDED. Em seguida, chame GetLabelDetection, que transmite o valor JobId que é retornado de StartLabelDetection. A solicitação JSON é 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.

A resposta da GetLabelDetection operação JSON é semelhante à 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 paraSEGMENTS. SEGMENTSo modo de agregação agregará os rótulos ao longo do tempo, enquanto TIMESTAMPS fornece o carimbo de data/hora em que um rótulo foi detectado, usando 2 FPS amostragens e saída por quadro (Nota: esta 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.