Lesen von Streaming-Video-Analyseergebnissen - 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.

Lesen von Streaming-Video-Analyseergebnissen

Sie können die Amazon-Kinesis-Data-Streams-Client-Bibliothek verwenden, um Analyseergebnisse zu verwenden, die an den Amazon-Kinesis-Data-Streams-Ausgabestrom gesendet werden. Weitere Informationen finden Sie unter Lesen von Daten aus einem Kinesis-Datenstrom. Amazon Rekognition Video stellt für jeden analysierten Frame einen JSON-Frame-Datensatz in den Kinesis-Ausgabestrom. Amazon Rekognition Video analysiert nicht jedes Bild, das über den Kinesis-Videostrom an Amazon Rekognition Video weitergegeben wird.

Ein Frame-Datensatz, der an einen Kinesis-Datenstrom gesendet wird, enthält Informationen darüber, in welchem Kinesis-Videostrom-Fragment sich der Frame befindet, wo im Fragment der Frame ist und die Gesichter, die im Frame erkannt werden. Es sind auch Statusinformationen für den Stromprozessor enthalten. Weitere Informationen finden Sie unter Referenz: Kinesis-Gesichtserkennungsdatensatz.

Die Amazon-Kinesis-Video-Streams-Parser-Bibliothek enthält Beispieltests, die Amazon-Rekognition-Video-Ergebnisse verwenden, und integriert sie in den ursprünglichen Kinesis-Videostrom. Weitere Informationen finden Sie unter Lokales Anzeigen von Rekognition-Ergebnissen mit Kinesis Video Streams.

Amazon Rekognition Video streamt Analyseinformationen von Amazon Rekognition Video in den Kinesis-Datenstrom. Im Folgenden sehen Sie ein JSON-Beispiel für eine einzelne Aufzeichnung.

{ "InputInformation": { "KinesisVideo": { "StreamArn": "arn:aws:kinesisvideo:us-west-2:nnnnnnnnnnnn:stream/stream-name", "FragmentNumber": "91343852333289682796718532614445757584843717598", "ServerTimestamp": 1510552593.455, "ProducerTimestamp": 1510552593.193, "FrameOffsetInSeconds": 2 } }, "StreamProcessorInformation": { "Status": "RUNNING" }, "FaceSearchResponse": [ { "DetectedFace": { "BoundingBox": { "Height": 0.075, "Width": 0.05625, "Left": 0.428125, "Top": 0.40833333 }, "Confidence": 99.975174, "Landmarks": [ { "X": 0.4452057, "Y": 0.4395594, "Type": "eyeLeft" }, { "X": 0.46340984, "Y": 0.43744427, "Type": "eyeRight" }, { "X": 0.45960626, "Y": 0.4526856, "Type": "nose" }, { "X": 0.44958648, "Y": 0.4696949, "Type": "mouthLeft" }, { "X": 0.46409217, "Y": 0.46704912, "Type": "mouthRight" } ], "Pose": { "Pitch": 2.9691637, "Roll": -6.8904796, "Yaw": 23.84388 }, "Quality": { "Brightness": 40.592964, "Sharpness": 96.09616 } }, "MatchedFaces": [ { "Similarity": 88.863960, "Face": { "BoundingBox": { "Height": 0.557692, "Width": 0.749838, "Left": 0.103426, "Top": 0.206731 }, "FaceId": "ed1b560f-d6af-5158-989a-ff586c931545", "Confidence": 99.999201, "ImageId": "70e09693-2114-57e1-807c-50b6d61fa4dc", "ExternalImageId": "matchedImage.jpeg" } } ] } ] }

Beachten Sie im JSON-Beispiel Folgendes:

  • InputInformation— Informationen über den Kinesis-Videostream, der zum Streamen von Videos in Amazon Rekognition Video verwendet wird. Weitere Informationen finden Sie unter InputInformation.

  • StreamProcessorInformation— Statusinformationen für den Amazon Rekognition Video Video-Stream-Prozessor. Der einzige mögliche Wert für das Feld Status ist RUNNING. Weitere Informationen finden Sie unter StreamProcessorInformation.

  • FaceSearchResponse— Enthält Informationen zu Gesichtern im Streaming-Video, die mit Gesichtern in der Eingabesammlung übereinstimmen. FaceSearchResponseenthält ein DetectedFace Objekt, bei dem es sich um ein Gesicht handelt, das im analysierten Videoframe erkannt wurde. Für jedes erkannte Gesicht enthält das Array MatchedFaces ein Array mit übereinstimmenden Gesichtsobjekten (MatchedFace), die in der Eingabesammlung gefunden wurden, ebenso wie einen Ähnlichkeitswert.

Zuweisen des Kinesis-Videoströme zum Kinesis-Datenstrom

Möglicherweise möchten Sie die Bilder des Kinesis-Videostroms den analysierten Bildern zuordnen, die an den Kinesis-Datenstrom gesendet werden. Beispielsweise möchten Sie während der Anzeige eines Streaming-Videos vielleicht, dass die Gesichter erkannter Personen eingerahmt werden. Die Begrenzungsrahmen-Koordinaten werden als Teil des Kinesis-Gesichtserkennungsdatensatzes an den Kinesis-Datenstrom gesendet. Damit der Begrenzungsrahmen richtig angezeigt wird, müssen Sie die Zeitinformationen, die zusammen mit der Kinesis-Gesichtserkennungsaufzeichnung gesendet werden, den entsprechenden Frames im Quell-Kinesis-Videostrom zuordnen.

Welche Methode Sie für die Zuweisung des Kinesis-Videostroms zum Kinesis-Datenstrom verwenden, hängt davon ab, ob Live-Medien (z. B. ein Live-Streaming-Video) oder archivierte Medien (z. B. ein gespeichertes Video) gestromt werden.

Zuweisung beim Streamen von Live-Medien

So ordnen Sie einen Kinesis-Videostrom-Frame einem Kinesis-Datenstrom-Frame zu
  1. Stellen Sie den Eingabeparameter FragmentTimeCodeType der PutMediaOperation auf einRELATIVE.

  2. Rufen Sie PutMedia an, um Live-Medien in den Kinesis-Videostrom zu übertragen.

  3. Wenn Sie einen Kinesis-Gesichtserkennungsdatensatz aus dem Kinesis-Datenstrom erhalten, speichern Sie die Werte von ProducerTimestamp und FrameOffsetInSeconds aus dem KinesisVideo-Feld.

  4. Berechnen Sie den Zeitstempel, der dem Kinesis-Videostrom-Frame entspricht, indem Sie die ProducerTimestamp- und FrameOffsetInSeconds-Feldwerte addieren.

Zuweisung beim Streamen archivierter Medien

So ordnen Sie einen Kinesis-Videostrom-Frame einem Kinesis-Datenstrom-Frame zu
  1. Rufen Sie PutMediaan, um archivierte Medien in den Kinesis-Videostream zu übertragen.

  2. Wenn Sie als Antwort auf die Acknowledgement-Operation ein PutMedia-Objekt erhalten, speichern Sie den FragmentNumber-Wert aus dem Feld Nutzlast. FragmentNumber ist die Fragmentnummer des MKV-Clusters.

  3. Wenn Sie einen Kinesis-Gesichtserkennungsdatensatz aus dem Kinesis-Datenstrom erhalten, speichern Sie den FrameOffsetInSeconds-Feldwert aus dem KinesisVideo-Feld.

  4. Berechnen Sie die Zuweisung anhand der von Ihnen in den Schritten 2 und 3 gespeicherten Werte von FrameOffsetInSeconds und FragmentNumber. FrameOffsetInSeconds ist der Versatz innerhalb des Fragments mit der spezifischen FragmentNumber, die zum für Amazon-Kinesis-Datenstrom gesendet wurde. Weitere Informationen zum Abrufen der Video-Frames für eine bestimmte Fragmentnummer finden Sie im Thema zu Archivierte Medien in Amazon Kinesis Video Streams.