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 ein asynchrones ProgrammAPI, mit dem Sie Videos analysieren können, die in einem Amazon Simple Storage Service (Amazon S3) -Bucket 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 Analyseanfrage zu einem Amazon Simple Notification Service (AmazonSNS) -Thema. Sie können eine Amazon Simple Queue Service (AmazonSQS) -Warteschlange oder eine AWS Lambda Funktion verwenden, um den Abschlussstatus der Videoanalyseanfrage aus dem SNS Amazon-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 S3-Bucket gespeicherten Videos mit Java oder Python (SDK) zeigt, wie ein Video mithilfe einer SQS Amazon-Warteschlange analysiert wird, um den Abschlussstatus des SNS Amazon-Themas abzurufen. Es wird auch als Grundlage für andere Amazon-Rekognition-Video-Beispiele verwendet, wie z. B. Pfade von Personen. AWS CLI Beispiele finden Sie unterAnalysieren 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 finden Sie ein Beispiel für eine JSON Anfrage, die weitergeleitet wurde. 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" }

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

Sie können auch einen optionalen Eingabeparameter angebenJobTag, mit dem Sie den Job im Abschlussstatus identifizieren können, der im SNS Amazon-Thema veröffentlicht wurde.

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 Job wird nicht erneut ausgeführt und Amazon Rekognition Video sendet keinen Abschlussstatus an das registrierte SNS Amazon-Thema.

  • Wenn Sie das Token mit derselben Start Operation und einer geringfügigen Änderung der Eingabeparameter wiederverwenden, wird eine Ausnahme IdempotentParameterMismatchException (HTTPStatuscode: 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). Wird verwendetJobId, um Anfragen nachzuverfolgen und die Analyseergebnisse abzurufen, nachdem Amazon Rekognition Video den Abschlussstatus für das SNS Amazon-Thema veröffentlicht hat. Beispielsweise:

{"JobId":"270c1cc5e1d0ea2fbc59d97cb69a72a5495da75851976b14a1784ca90fc180e3"}

Wenn Sie zu viele Jobs gleichzeitig starten, rufen Sie auf, um einen LimitExceededException (HTTPStatuscode: 400) zu StartLabelDetection erhöhen, bis die Anzahl der gleichzeitig ausgeführten Jobs unter dem Amazon Rekognition-Servicelimit liegt.

Wenn Sie feststellen, dass bei vielen Aktivitäten LimitExceededException Ausnahmen ausgelöst werden, sollten Sie die Verwendung einer SQS Amazon-Warteschlange zur Verwaltung eingehender Anfragen in Betracht ziehen. Wenden Sie sich an den AWS Support, wenn Sie feststellen, dass Ihre durchschnittliche Anzahl gleichzeitiger Anfragen nicht von einer SQS Amazon-Warteschlange verwaltet werden kann und Sie immer noch LimitExceededException Ausnahmen erhalten.

Abrufen des Abschlussstatus einer Amazon-Rekognition-Video-Analyseanforderungs

Amazon Rekognition Video sendet eine Benachrichtigung über den Abschluss der Analyse an das registrierte SNS Amazon-Thema. Die Benachrichtigung enthält die Job-ID und den Abschlussstatus des Vorgangs 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": "bucket" } }

Weitere Informationen finden Sie unter Referenz: Videoanalyse-Ergebnisbenachrichtigung.

Verwenden Sie eine der folgenden Optionen, um die Statusinformationen abzurufen, die von Amazon Rekognition Video im SNS Amazon-Thema veröffentlicht wurden:

  • AWS Lambda— Sie können eine AWS Lambda Funktion abonnieren, die Sie zu einem SNS Amazon-Thema schreiben. Die Funktion wird aufgerufen, wenn Amazon Rekognition das SNS Amazon-Thema darüber informiert, dass die Anfrage abgeschlossen wurde. 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 für große Videos, da Amazon Rekognition API möglicherweise große Datenmengen zurückgibt.

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

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 Abschlussbenachrichtigung zu überwachen, als Amazon Rekognition Video einzeln nach dem Status jedes Videos abzufragen.

Analyseergebnisse von Amazon Rekognition Video abrufen

Um die Ergebnisse einer Videoanalyseanfrage zu erhalten, stellen Sie zunächst sicher, dass der Abschlussstatus, der aus dem SNS Amazon-Thema abgerufen wurde, lautetSUCCEEDED. Rufen Sie dann GetLabelDetection auf, wodurch der Wert JobId übergeben wird, den StartLabelDetection zurückgibt. Die Anfrage JSON ähnelt dem folgenden Beispiel:

{ "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 Reaktion des GetLabelDetection Vorgangs JSON ähnelt der folgenden:

{ "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 AggregateBy auf festSEGMENTS. SEGMENTSIm Aggregationsmodus werden die Labels im Laufe der Zeit aggregiert und gleichzeitig TIMESTAMPS der Zeitstempel zugewiesen, zu dem ein Label erkannt wurde. Dabei werden 2 FPS Samplings und pro Frame-Ausgabe verwendet (Hinweis: Diese aktuelle Samplerate kann sich ändern, es sollten keine Annahmen über die aktuelle Samplingrate getroffen werden). Wenn kein Wert angegeben wird, ist die Standardaggregationsmethode TIMESTAMPS.