Chiamata delle operazioni Video Amazon Rekognition - Amazon Rekognition

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Chiamata delle operazioni Video Amazon Rekognition

Amazon Rekognition Video è un programma API asincrono che puoi utilizzare per analizzare i video archiviati in un bucket Amazon Simple Storage Service (Amazon S3). Puoi avviare l'analisi di un video chiamando un'operazione Amazon Rekognition Start Video, ad esempio. StartPersonTracking Amazon Rekognition Video pubblica il risultato della richiesta di analisi su un argomento di Amazon Simple Notification Service (Amazon). SNS Puoi utilizzare una coda Amazon Simple Queue Service (AmazonSQS) o una AWS Lambda funzione per ottenere lo stato di completamento della richiesta di analisi video dall'argomento AmazonSNS. Infine, puoi ottenere i risultati della richiesta di analisi video chiamando un'operazione di Get Amazon Rekognition, ad esempio. GetPersonTracking

Le informazioni incluse nelle sezioni seguenti utilizzano le operazioni di rilevamento delle etichette per mostrare come Video Amazon Rekognition rileva etichette (oggetti, eventi, concetti e attività) in un video archiviato in un bucket Amazon S3. Lo stesso approccio funziona per le altre operazioni di Amazon Rekognition Video, ad esempio e. StartFaceDetectionStartPersonTracking L'esempio Analisi di un video archiviato in un bucket Amazon S3 con Java o Python () SDK mostra come analizzare un video utilizzando una SQS coda Amazon per ottenere lo stato di completamento dall'SNSargomento Amazon. Viene utilizzato come base anche per altri esempi di Video Amazon Rekognition quali Rilevamento dei movimenti delle persone. Per AWS CLI esempi, vediAnalisi di un video con AWS Command Line Interface.

Avvio di analisi video

Puoi avviare una richiesta di rilevamento delle etichette Amazon Rekognition Video chiamando. StartLabelDetection Di seguito è riportato un esempio di JSON richiesta passata. 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" }

Il parametro di input Video fornisce il nome del file video e il bucket Amazon S3 da cui recuperarlo. NotificationChannelcontiene l'Amazon Resource Name (ARN) dell'SNSargomento Amazon che Amazon Rekognition Video notifica al termine della richiesta di analisi video. L'SNSargomento Amazon deve trovarsi nella stessa AWS regione dell'endpoint Amazon Rekognition Video che stai chiamando. NotificationChannelcontiene anche il ruolo ARN for a che consente ad Amazon Rekognition Video di pubblicare sull'argomento Amazon. SNS Concedi ad Amazon Rekognition le autorizzazioni di pubblicazione per i tuoi argomenti SNS Amazon creando un ruolo di servizio. IAM Per ulteriori informazioni, consulta Configurazione di Video Amazon Rekognition.

Puoi anche specificare un parametro di input opzionaleJobTag, che ti consente di identificare il lavoro nello stato di completamento pubblicato SNS sull'argomento Amazon.

Per evitare la duplicazione accidentale dei processi di analisi, puoi facoltativamente fornire un token idempotente, ClientRequestToken. Se specifichi un valore per ClientRequestToken, l'operazione Start restituisce lo stesso JobId per più chiamate identiche dell'operazione start, ad esempio StartLabelDetection. Un token ClientRequestToken ha un ciclo di vita di 7 giorni. Dopo 7 giorni, puoi riutilizzarlo. Se riutilizzi il token durante il suo ciclo di vita, si verifica quanto segue:

  • Se riutilizzi il token con la stessa operazione Start e gli stessi parametri di input, viene restituito lo stesso JobId. Il processo non viene eseguito nuovamente e Amazon Rekognition Video non invia uno stato di completamento all'argomento Amazon registrato. SNS

  • Se riutilizzi il token con la stessa Start operazione e una modifica minore dei parametri di input, viene sollevata un'eccezione IdempotentParameterMismatchException (codice di HTTP stato: 400).

  • Non riutilizzare un token con operazioni Start diverse poiché otterrai risultati imprevedibili da Amazon Rekognition.

La risposta all'operazione StartLabelDetection è un identificatore del processo (JobId). Utilizzalo JobId per tenere traccia delle richieste e ottenere i risultati dell'analisi dopo che Amazon Rekognition Video ha pubblicato lo stato di completamento sull'argomento Amazon. SNS Per esempio:

{"JobId":"270c1cc5e1d0ea2fbc59d97cb69a72a5495da75851976b14a1784ca90fc180e3"}

Se avvii troppi lavori contemporaneamente, chiama per StartLabelDetection generare un LimitExceededException (codice di HTTP stato: 400) fino a quando il numero di lavori eseguiti contemporaneamente non sia inferiore al limite del servizio Amazon Rekognition.

Se scopri che LimitExceededException le eccezioni vengono sollevate a seguito di picchi di attività, prendi in considerazione l'utilizzo di una SQS coda Amazon per gestire le richieste in arrivo. Contatta l' AWS assistenza se scopri che il numero medio di richieste simultanee non può essere gestito da una SQS coda Amazon e continui a ricevere LimitExceededException eccezioni.

Ottenere lo stato di completamento di una richiesta di analisi Video Amazon Rekognition

Amazon Rekognition Video invia una notifica di completamento dell'analisi all'argomento Amazon registrato. SNS La notifica include l'identificatore del lavoro e lo stato di completamento dell'operazione in una stringa. JSON Una richiesta di analisi video corretta presenta uno stato SUCCEEDED. Ad esempio, il risultato seguente mostra l'elaborazione corretta di un processo di rilevamento delle etichette.

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

Per ulteriori informazioni, consulta Riferimento: Notifica dei risultati dell'analisi video.

Per ottenere le informazioni sullo stato pubblicate SNS sull'argomento Amazon da Amazon Rekognition Video, utilizza una delle seguenti opzioni:

  • AWS Lambda— Puoi sottoscrivere una AWS Lambda funzione che scrivi su un SNS argomento di Amazon. La funzione viene chiamata quando Amazon Rekognition notifica all'argomento Amazon che SNS la richiesta è stata completata. Utilizza una funzione Lambda se desideri che il codice lato server elabori i risultati di una richiesta di analisi video. Ad esempio, potresti voler utilizzare il codice lato server per annotare il video o creare un report sui contenuti video prima di restituire le informazioni a un'applicazione client. Consigliamo inoltre l'elaborazione lato server per video di grandi dimensioni, poiché Amazon API Rekognition potrebbe restituire grandi volumi di dati.

  • Amazon Simple Queue Service: puoi abbonare una SQS coda Amazon a un argomento AmazonSNS. Quindi esegui un sondaggio nella SQS coda di Amazon per recuperare lo stato di completamento pubblicato da Amazon Rekognition quando viene completata una richiesta di analisi video. Per ulteriori informazioni, consulta Analisi di un video archiviato in un bucket Amazon S3 con Java o Python () SDK. Usa una SQS coda Amazon se desideri chiamare le operazioni di Amazon Rekognition Video solo da un'applicazione client.

Importante

Non è consigliabile ottenere lo stato di completamento della richiesta chiamando ripetutamente l'operazione Get di Video Amazon Rekognition. Ciò si verifica perché, se vengono effettuate troppe richieste, Video Amazon Rekognition sottopone a throttling l'operazione Get. Se stai elaborando più video contemporaneamente, è più semplice ed efficiente monitorare una SQS coda per la notifica di completamento piuttosto che interrogare Amazon Rekognition Video per lo stato di ogni video singolarmente.

Ottenere i risultati dell'analisi di Video Amazon Rekognition

Per ottenere i risultati di una richiesta di analisi video, assicurati innanzitutto che lo stato di completamento recuperato dall'SNSargomento Amazon siaSUCCEEDED. Quindi chiama GetLabelDetection che trasferisce il valore JobId restituito da StartLabelDetection. La richiesta JSON è simile all'esempio seguente:

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

JobId è l'identificatore per l'operazione di analisi video. Poiché l'analisi video può generare grandi quantità di dati, utilizza MaxResults per specificare il numero massimo di risultati da restituire in una singola operazione Get. Il valore predefinito per MaxResults è 1000. Se si specifica un valore maggiore di 1.000, vengono restituiti al massimo 1.000 risultati. Se l'operazione non restituisce l'intera serie di risultati, viene restituito un token di paginazione per la pagina successiva nella risposta dell'operazione. Se disponi di un token di paginazione di una richiesta Get precedente, utilizzalo con NextToken per ottenere la pagina successiva di risultati.

Nota

Amazon Rekognition conserva i risultati di un'operazione di analisi video per 7 giorni. Non potrai recuperare i risultati dell'analisi dopo questo periodo.

La risposta GetLabelDetection dell'operazione JSON è simile alla seguente:

{ "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 } }

Le operazioni GetLabelDetection e GetContentModeration consentono di ordinare i risultati dell'analisi per data e ora o per nome dell'etichetta. I risultati possono essere aggregati per timestamp o segmenti video.

Puoi ordinare i risultati per tempo di rilevamento (millisecondi dall'inizio del video) o in ordine alfabetico per entità rilevate (oggetto, volto, celebrità, etichetta di moderazione o persona). Per ordinare in base al tempo, imposta il valore del parametro di input SortBy su TIMESTAMP. Se non è specificato SortBy, il comportamento predefinito è quello di elencare per tempo. L'esempio precedente è stato ordinato per tempo. Per ordinare per entità, utilizza il parametro di input SortBy con il valore appropriato per l'operazione in esecuzione. Ad esempio, per ordinare per etichetta rilevata in una chiamata a GetLabelDetection, utilizza il valore NAME.

Per aggregare i risultati per timestamp, imposta il valore del parametro AggregateBy su TIMESTAMPS. Per eseguire l'aggregazione per segmento video, impostate il valore AggregateBy suSEGMENTS. SEGMENTSla modalità di aggregazione aggregherà le etichette nel tempo, fornendo al contempo TIMESTAMPS il timestamp in cui è stata rilevata un'etichetta, utilizzando 2 FPS campionamenti e un output per fotogramma (Nota: questa frequenza di campionamento attuale è soggetta a modifiche, non si devono fare ipotesi sulla frequenza di campionamento attuale). Se nessun valore è specificato, il metodo di aggregazione predefinito è TIMESTAMPS.