Lectura de los resultados del análisis de vídeo en streaming - Amazon Rekognition

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Lectura de los resultados del análisis de vídeo en streaming

Puede utilizar la biblioteca de clientes de Amazon Kinesis Data Streams para consumir los resultados de análisis que se envían a la transmisión de salida de Amazon Kinesis Data Streams. Para obtener más información, consulte Reading Data from a Kinesis Data Stream. Amazon Rekognition Video coloca un registro de fotograma de JSON para cada fotograma analizado en la transmisión de salida de Kinesis. Amazon Rekognition Video no analiza todos los fotogramas que recibe a través de la transmisión de vídeo de Kinesis.

Un registro de fotograma que se envía a un flujo de datos de Kinesis contiene información acerca del fragmento de flujo de datos de Kinesis en el que está el fotograma, donde está el fotograma en el fragmento y los rostros reconocidos en el fotograma. También incluye información de estado para el procesador de streaming. Para obtener más información, consulte Referencia: registro de reconocimiento de caras de Kinesis.

Amazon Kinesis Video Streams Parser Library contiene ejemplos de pruebas que consumen los resultados de Amazon Rekognition Video y los integra con la transmisión de vídeo original de Kinesis. Para obtener más información, consulte Visualización local de los resultados de Rekognition con Kinesis Video Streams.

Amazon Rekognition Video transmite la información de análisis de Amazon Rekognition Video a los flujos de datos de Kinesis. A continuación, se muestra un ejemplo de JSON para un registro único.

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

En el ejemplo de JSON, observe lo siguiente:

  • InputInformation— Información sobre la transmisión de vídeo de Kinesis que se utiliza para transmitir vídeo a Amazon Rekognition Video. Para obtener más información, consulte InputInformation.

  • StreamProcessorInformation— Información de estado del procesador de transmisión de vídeo Amazon Rekognition Video. El único valor posible para el campo Status es RUNNING. Para obtener más información, consulte StreamProcessorInformation.

  • FaceSearchResponse— Contiene información sobre los rostros del vídeo en streaming que coinciden con los rostros de la colección de entrada. FaceSearchResponsecontiene un DetectedFace objeto, que es un rostro que se detectó en el fotograma de vídeo analizado. Para cada rostro detectado, la matriz MatchedFaces contiene un matriz de objetos de rostro coincidentes (MatchedFace) encontrados en la colección de entrada, junto con una puntuación de similitud.

Asignación de la secuencia de vídeo de Kinesis al flujo de datos de Kinesis

Es posible que desee asignar los fotogramas de transmisión de vídeo de Kinesis a los fotogramas analizados que se envían a la flujo de datos de Kinesis. Por ejemplo, durante la visualización de un vídeo de streaming, es posible que desee mostrar cuadros alrededor de los rostros de las personas reconocidas. Las coordenadas del cuadro delimitador se envían como parte del registro de reconocimiento facial de Kinesis al flujo de datos de Kinesis. Para mostrar el cuadro delimitador correctamente, debe asignar la información temporal que se envía con el registro de reconocimiento facial de Kinesis con los fotogramas correspondientes a la transmisión de vídeo de Kinesis de origen.

La técnica que utiliza para asignar la transmisión de vídeo de Kinesis a la flujo de datos de Kinesis depende de si va a transmitir medios en directo (como un vídeo de streaming en directo) o si va a transmitir medios archivados (como un vídeo almacenado).

Asignación cuando se transmiten medios en directo

Para asignar un fotograma de transmisión de vídeo de Kinesis a un fotograma de flujo de datos de Kinesis
  1. Defina el parámetro FragmentTimeCodeType de entrada de la PutMediaoperación enRELATIVE.

  2. Llame a PutMedia para enviar contenido en vivo a la transmisión de vídeo de Kinesis.

  3. Cuando reciba un registro del reconocimiento facial de Kinesis de los flujos de datos de Kinesis, almacene los valores de ProducerTimestamp y FrameOffsetInSeconds del campo KinesisVideo.

  4. Calcule la marca temporal correspondiente al fotograma de transmisión de vídeo de Kinesis sumando los valores del campo ProducerTimestamp y FrameOffsetInSeconds.

Asignación cuando se transmiten medios archivados

Para asignar un fotograma de transmisión de vídeo de Kinesis a un fotograma de flujo de datos de Kinesis
  1. Llame PutMediapara enviar contenido multimedia archivado a la transmisión de vídeo de Kinesis.

  2. Cuando reciba un objeto Acknowledgement de la respuesta de la operación PutMedia, almacene el valor del campo FragmentNumber del campo Payload. FragmentNumber es el número de fragmento del clúster de MKV.

  3. Cuando reciba un registro del reconocimiento facial de Kinesis de los flujos de datos de Kinesis, almacene el valor del campo FrameOffsetInSeconds del campo KinesisVideo.

  4. Calcule el mapeo utilizando los valores de FrameOffsetInSeconds y FragmentNumber almacenados en los pasos 2 y 3. FrameOffsetInSeconds es la diferencia del fragmento con el FragmentNumber enviado al flujo de datos de Amazon Kinesis. Para obtener más información sobre cómo obtener los fotogramas de vídeo para un número de fragmento determinado, consulte Medios archivados de Amazon Kinesis Video Streams.