Lecture des résultats d’analyse de vidéo en streaming - Amazon Rekognition

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Lecture des résultats d’analyse de vidéo en streaming

Vous pouvez utiliser la bibliothèque client Amazon Kinesis Data Streams pour consommer des résultats d’analyse envoyés vers le flux de sortie Amazon Kinesis Data Streams. Pour en savoir plus, consultez Lecture de données d’un flux de données Kinesis. Amazon Rekognition Video place JSON un enregistrement d'image pour chaque image analysée dans le flux de sortie Kinesis. Vidéo Amazon Rekognition n’analyse pas toutes les images qui lui sont transmises via le flux vidéo Kinesis.

Un enregistrement de trame envoyé à un flux de données Kinesis comprend des informations sur le fragment de flux vidéo Kinesis où se trouve la trame dans le fragment et les visages reconnus dans la trame. Il inclut également des informations de statut pour le processeur de flux. Pour de plus amples informations, veuillez consulter Comprendre l'enregistrement d'images par reconnaissance JSON faciale Kinesis.

La bibliothèque d’analyseurs Amazon Kinesis Video Streams contient des exemples de tests qui utilisent les résultats de Vidéo Amazon Rekognition et les intègre au flux vidéo Kinesis d’origine. Pour de plus amples informations, veuillez consulter Afficher les résultats de Rekognition avec Kinesis Video Streams en local.

Vidéo Amazon Rekognition diffuse les informations d’analyse Vidéo Amazon Rekognition vers le flux de données Kinesis. Voici un JSON exemple d'enregistrement unique.

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

Dans l'JSONexemple, notez ce qui suit :

  • InputInformation— Informations sur le flux vidéo Kinesis utilisé pour diffuser des vidéos sur Amazon Rekognition Video. Pour de plus amples informations, veuillez consulter InputInformation.

  • StreamProcessorInformation— Informations sur l'état du processeur de streaming Amazon Rekognition Video. La seule valeur possible pour le Status champ estRUNNING. Pour de plus amples informations, veuillez consulter StreamProcessorInformation.

  • FaceSearchResponse— Contient des informations sur les visages de la vidéo en streaming qui correspondent aux visages de la collection d'entrées. FaceSearchResponsecontient un DetectedFace objet, qui est un visage détecté dans l'image vidéo analysée. Pour chaque visage détecté, le tableau MatchedFaces contient une série d’objets visage correspondants (MatchedFace) trouvés dans la collection d’entrée, avec un pourcentage de similarité.

Mappage du flux vidéo Kinesis au flux de données Kinesis

Vous pouvez vouloir mapper les trames de flux vidéo Kinesis aux trames analysées envoyées au flux de données Kinesis. Par exemple, lors de l’affichage d’une vidéo en streaming, vous pouvez souhaiter afficher des cadres autour des visages des personnes reconnues. Les coordonnées du cadre de délimitation sont envoyées au flux de données Kinesis comme faisant partie de l’enregistrement de reconnaissance faciale Kinesis. Pour afficher correctement le cadre de délimitation, vous devez mapper les informations horaires qui sont envoyées avec l’enregistrement de reconnaissance faciale Kinesis aux trames correspondantes dans le flux vidéo Kinesis.

La technique que vous utilisez pour mapper le flux vidéo Kinesis au flux de données Kinesis varie selon que vous diffusez du contenu multimédia en direct (vidéo de streaming en direct) ou du contenu multimédia archivé (vidéo stockée).

Mappage en cas de diffusion de contenu multimédia en direct

Pour mapper une trame de flux vidéo Kinesis à une trame de flux de données Kinesis
  1. Définissez le paramètre d'entrée FragmentTimeCodeType de l'PutMediaopération surRELATIVE.

  2. Appelez PutMedia pour diffuser du contenu multimédia en direct dans le flux vidéo Kinesis.

  3. Lorsque vous recevez un enregistrement de reconnaissance faciale Kinesis du flux de données Kinesis, stockez les valeurs de ProducerTimestamp et FrameOffsetInSeconds du champ KinesisVideo.

  4. Calculez l’horodatage système qui correspond à la trame du flux vidéo Kinesis en ajoutant les valeurs des champs ProducerTimestamp et FrameOffsetInSeconds.

Mappage en cas de diffusion de contenu multimédia archivé

Pour mapper une trame de flux vidéo Kinesis à une trame de flux de données Kinesis
  1. Appelez PutMediapour transférer du contenu multimédia archivé dans le flux vidéo Kinesis.

  2. Lorsque vous recevez un Acknowledgement objet en réponse à l'PutMediaopération, stockez la valeur du FragmentNumber champ à partir du champ Charge utile. FragmentNumberest le numéro de fragment du MKV cluster.

  3. Lorsque vous recevez un enregistrement de reconnaissance faciale Kinesis du flux de données Kinesis, stockez les valeurs de champ FrameOffsetInSeconds du champ KinesisVideo.

  4. Calculez le mappage en utilisant les valeurs FrameOffsetInSeconds et FragmentNumber stockées aux étapes 2 et 3. FrameOffsetInSeconds est le décalage dans le fragment avec le paramètre spécifique FragmentNumber qui est envoyé au Amazon Kinesis Data Streams. Pour plus d’informations sur l’obtention des trames vidéo pour un numéro de fragment donné, consultez le contenu multimédia archivé Amazon Kinesis Video Streams.