Amazon-Rekognition-Video-Operationen aufrufen - Amazon Rekognition

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Amazon-Rekognition-Video-Operationen aufrufen

Amazon Rekognition Video ist eine asynchrone API, die Sie verwenden können, um Videos zu analysieren, die in einem Amazon-Simple-Storage-Service-Bucket (Amazon S3) gespeichert sind. Sie starten die Analyse eines Videos, indem Sie einen Amazon Rekognition Video Start Video-Vorgang aufrufen, z. B. StartPersonTracking Amazon Rekognition Video veröffentlicht das Ergebnis der Analyseanforderung in einem Amazon-Simple-Notification-Service-Thema (Amazon SNS). Sie können eine Amazon Simple Queue Service (Amazon SQS) -Warteschlange oder eine AWS Lambda Funktion verwenden, um den Abschlussstatus der Videoanalyseanfrage aus dem Amazon SNS SNS-Thema abzurufen. Schließlich erhalten Sie die Ergebnisse der Videoanalyseanfrage, indem Sie einen Amazon Rekognition Get Rekognition-Vorgang aufrufen, z. B. GetPersonTracking

Die Informationen in den folgenden Abschnitten zeigen anhand von Operationen zur Erkennung von Labels, wie Amazon-Rekognition-Video-Labels (Objekte, Ereignisse, Konzepte und Aktivitäten) in einem Video erkennt, das in einem Amazon-S3-Bucket gespeichert ist. Derselbe Ansatz funktioniert auch für die anderen Amazon Rekognition Video Video-Operationen, z. B. und. StartFaceDetectionStartPersonTracking Das Beispiel Analysieren eines in einem Amazon S3-Bucket gespeicherten Videos mit Java oder Python (SDK) zeigt das Analysieren eines Videos unter Verwendung einer Amazon-SQS-Warteschlange, um den Abschlussstatus aus dem Amazon-SNS-Thema abzurufen. Es wird auch als Grundlage für andere Amazon-Rekognition-Video-Beispiele verwendet, wie z. B. Pfade von Personen. Beispiele finden Sie unter. AWS CLI Analysieren eines Videos mit dem AWS Command Line Interface

Starten der Videoanalyse

Sie starten eine Anfrage zur Erkennung von Amazon Rekognition Video Video-Etiketten, indem Sie anrufen. StartLabelDetection Im Folgenden sehen Sie ein Beispiel für eine JSON-Anforderung, die von StartLabelDetection übergeben wird.

{ "Video": { "S3Object": { "Bucket": "amzn-s3-demo-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" }

Der Eingabeparameter Video gibt den Namen der Videodatei und den Amazon-S3-Bucket an, aus dem sie abgerufen werden soll. NotificationChannel enthält den Amazon-Ressourcennamen (ARN) (ARN) des Amazon-SNS-Themas, das Amazon Rekognition Video benachrichtigt, wenn die Videoanalyseanforderung abgeschlossen ist. Das Amazon-SNS-Thema muss sich in derselben AWS-Region befinden wie der Amazon-Rekognition-Video-Endpunkt, den Sie aufrufen. NotificationChannel enthält auch den ARN für eine Rolle, die es Amazon Rekognition Video erlaubt, auf dem Amazon-SNS-Thema zu veröffentlichen. Sie erteilen Amazon Rekognition Veröffentlichungsberechtigungen für Ihre Amazon-SNS-Themen, indem Sie eine IAM-Servicerolle erstellen. Weitere Informationen finden Sie unter Amazon Rekognition Video konfigurieren.

Sie können auch einen optionalen Eingabeparameter, JobTag, angeben, der es Ihnen ermöglicht, den Auftrag im Abschlussstatus zu identifizieren, der im Amazon-SNS-Thema veröffentlicht wird.

Um ein versehentliches doppeltes Ausführen von Analyseaufträgen zu vermeiden, können Sie optional ein idempotentes Token, ClientRequestToken, bereitstellen. Wenn Sie einen Wert für ClientRequestToken angeben, liefert die Operation Start die gleiche JobId für mehrere identische Aufrufe zur Startoperation, wie z. B. StartLabelDetection. Ein Token ClientRequestToken hat eine Lebensdauer von 7 Tagen. Nach 7 Tagen können Sie es wiederverwenden. Wenn Sie das Token während der Token-Lebensdauer wiederverwenden, geschieht folgendes:

  • Wenn Sie das Token mit der gleichen Start-Operation und den gleichen Eingabeparametern wiederverwenden, wird dieselbe JobId zurückgegeben. Der Auftrag wird nicht erneut ausgeführt und Amazon Rekognition Video sendet keinen Abschlussstatus an das registrierte Amazon-SNS-Thema.

  • Wenn Sie das Token mit der gleichen Start-Operation und einer geringfügigen Änderung der Eingabeparameter wiederverwenden, wird eine IdempotentParameterMismatchException-Ausnahme (HTTP-Statuscode: 400) ausgelöst.

  • Sie sollten ein Token nicht wiederholt bei verschiedenen Start-Operationen verwenden, da Sie unvorhersehbare Ergebnisse von Amazon Rekognition erhalten.

Die Antwort auf die StartLabelDetection-Operation ist eine Auftrags-ID (JobId). Verwenden Sie JobId, um Anforderungen zu verfolgen und die Analyseergebnisse zu erhalten, nachdem Amazon Rekognition Video den Abschlussstatus im Amazon-SNS-Thema veröffentlicht hat. Zum Beispiel:

{"JobId":"270c1cc5e1d0ea2fbc59d97cb69a72a5495da75851976b14a1784ca90fc180e3"}

Wenn Sie zu viele Aufträge gleichzeitig starten, lösen Aufrufe von StartLabelDetection eine LimitExceededException (HTTP-Statuscode: 400) aus, bis die Anzahl der gleichzeitig ausgeführten Aufträge unter dem Amazon-Rekognition-Servicelimit liegt.

Wenn Sie feststellen, dass LimitExceededException-Ausnahmen bei Spitzenaktivitäten ausgelöst werden, empfiehlt sich für die Verwaltung eingehender Anforderungen die Verwendung einer Amazon-SQS-Warteschlange. Wenden Sie sich an den AWS Support, wenn Sie feststellen, dass Ihre durchschnittliche Anzahl gleichzeitiger Anfragen nicht von einer Amazon SQS SQS-Warteschlange verwaltet werden kann und Sie immer noch Ausnahmen erhaltenLimitExceededException.

Abrufen des Abschlussstatus einer Amazon-Rekognition-Video-Analyseanforderungs

Amazon Rekognition Video sendet eine Benachrichtigung über den Abschluss der Analyse an das registrierte Amazon-SNS-Thema. Die Benachrichtigung enthält die Auftrags-ID und den Erledigungsstatus der Operation in einer JSON-Zeichenfolge. Eine erfolgreiche Videoanalyseanforderung hat einen Status SUCCEEDED. Das folgende Ergebnis zeigt z. B. die erfolgreiche Abarbeitung eines Label-Erkennungsauftrags.

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

Weitere Informationen finden Sie unter Referenz: Videoanalyse-Ergebnisbenachrichtigung.

Um die Statusinformationen zu erhalten, die von Amazon Rekognition Video im Amazon-SNS-Thema veröffentlicht werden, verwenden Sie eine der folgenden Optionen:

  • AWS Lambda – Sie können eine AWS Lambda -Funktion abonnieren, die Sie in ein Amazon-SNS-Thema schreiben. Die Funktion wird aufgerufen, wenn Amazon Rekognition das Amazon-SNS-Thema benachrichtigt, dass die Anforderung abgeschlossen ist. Verwenden Sie eine Lambda-Funktion, wenn Sie serverseitigen Code zur Verarbeitung der Ergebnisse einer Videoanalyseanforderung benötigen. Sie können beispielsweise serverseitigen Code verwenden, um das Video mit Anmerkungen zu versehen oder um einen Bericht über die Videoinhalte zu erstellen, bevor die Informationen an eine Client-Anwendung zurückgegeben werden. Wir empfehlen auch die serverseitige Verarbeitung von großen Videos, da die Amazon-Rekognition-API große Datenmengen zurückliefern kann.

  • Amazon Simple Queue Service – Sie können eine Amazon SQS-Warteschlange für ein Amazon-SNS-Thema abonnieren. Sie fragen dann die Amazon-Simple-Queue-Service-Warteschlange ab, um den von Amazon Rekognition veröffentlichten Abschlussstatus abzurufen, wenn eine Videoanalyseanforderung abgeschlossen ist. Weitere Informationen finden Sie unter Analysieren eines in einem Amazon S3-Bucket gespeicherten Videos mit Java oder Python (SDK). Verwenden Sie eine Amazon-SQS-Warteschlange, wenn Sie Amazon-Rekognition-Video-Operationen nur von einer Client-Anwendung aus aufrufen wollen.

Wichtig

Wir raten davon ab, den Status der Auftragserfüllung durch wiederholtes Aufrufen der Amazon-Rekognition-Video-Get-Operation zu ermitteln. Der Grund hierfür ist, dass Amazon Rekognition Video die Get-Operation drosselt, wenn zu viele Anforderungen generiert werden. Wenn Sie mehrere Videos gleichzeitig verarbeiten, ist es einfacher und effizienter, eine SQS-Warteschlange für die Benachrichtigung über die Fertigstellung zu überwachen, als Amazon Rekognition Video für den Status jedes einzelnen Videos abzufragen.

Analyseergebnisse von Amazon Rekognition Video abrufen

Um die Ergebnisse einer Videoanalyseanforderung zu erhalten, stellen Sie zunächst sicher, dass der Abschlussstatus, der aus dem Amazon-SNS-Thema abgerufen wird, SUCCEEDED lautet. Rufen Sie dann GetLabelDetection auf, wodurch der Wert JobId übergeben wird, den StartLabelDetection zurückgibt. Die JSON-Ausgabe sieht folgendermaßen oder ähnlich aus:

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

JobId ist die Kennung für den Videoanalysevorgang. Da die Videoanalyse große Datenmengen erzeugen kann, geben Sie mit MaxResults die maximale Anzahl der Ergebnisse an, die in einer einzigen Get-Operation zurückgegeben werden soll. Der Standardwert von MaxResults beträgt 1000. Wenn Sie einen größeren Wert als 1.000 angeben, wird die maximale Anzahl von 1.000 Ergebnissen zurückgegeben. Wenn die Operation nicht die gesamte Ergebnismenge zurückgibt, wird in der Antwort der Operation ein Paginierungs-Token für die nächste Seite zurückgegeben. Wenn Sie ein Paginierung-Token aus einer vorherigen Get-Anforderung haben, verwenden Sie es mit NextToken um die nächste Seite der Ergebnisse zu erhalten.

Anmerkung

Amazon Rekognition behält die Ergebnisse einer Videoanalyse für 7 Tage bei. Nach dieser Zeit können Sie die Analyseergebnisse nicht mehr abrufen.

Die GetLabelDetection Operation Response JSON ist ähnlich wie folgt:

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

Mit den GetLabelDetection- und GetContentModeration-Operationen können Sie die Analyseergebnisse nach Zeitstempel oder Labelnamen sortieren. Sie können die Ergebnisse auch nach Videosegment oder nach Zeitstempel zusammenfassen.

Sie können die Ergebnisse nach der Erkennungszeit (Millisekunden vom Anfang des Videos) oder alphabetisch nach der erkannten Entität (Objekt, Gesicht, Prominenter, Moderationslabel oder Person) sortieren. Um nach der Zeit zu sortieren, setzen Sie den Wert des Eingabeparameters SortBy auf TIMESTAMP. Wenn SortBy nicht angegeben ist, wird standardmäßig nach der Zeit sortiert. Das vorhergehende Beispiel ist nach der Zeit sortiert. Um nach Entität zu sortieren, verwenden Sie den Eingabeparameter SortBy mit dem Wert, der für die von Ihnen durchgeführte Operation geeignet ist. Um z. B. bei einem Aufruf von GetLabelDetection nach erkanntem Label zu sortieren, verwenden Sie den Wert NAME.

Um Ergebnisse nach Zeitstempel zu aggregieren, setzen Sie den Wert des AggregateBy-Parameters auf TIMESTAMPS. Um nach Videosegmenten zu aggregieren, legen Sie den Wert von AggregateBy auf SEGMENTS fest. Der SEGMENTS-Aggregationsmodus aggregiert die Labels im Laufe der Zeit und TIMESTAMPS gibt gleichzeitig den Zeitstempel an, bei dem ein Label erkannt wurde. Dabei werden 2-FPS-Sampling und Frame-Ausgabe verwendet (Hinweis: Diese aktuelle Sampling-Rate kann sich ändern, es sollten keine Annahmen über die aktuelle Sampling-Rate getroffen werden). Wenn kein Wert angegeben wird, ist die Standardaggregationsmethode TIMESTAMPS.