Modèle de données Kinesis Video Streams - Amazon Kinesis Video Streams

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.

Modèle de données Kinesis Video Streams

Les Transférer vers Kinesis Video Streams et Regardez le résultat des caméras à l'aide de la bibliothèque d'analyseurs envoient et reçoivent des données vidéo dans un format prenant en charge les informations d'incorporation avec les données vidéo. Ce format est basé sur la spécification Matroska (MKV).

Le MKVformat est une spécification ouverte pour les données multimédia. Toutes les bibliothèques et tous les exemples de code du guide du développeur Amazon Kinesis Video Streams envoient ou reçoivent des données dans ce formatMKV.

Transférer vers Kinesis Video StreamsUtilise les Frame types StreamDefinition et pour produire des en-têtes de MKV flux, des en-têtes de cadre et des données de cadre.

Pour plus d'informations sur les MKV spécifications complètes, consultez les spécifications Matroska.

Les sections suivantes décrivent les composants des données MKV formatées produites par le. C++

Diffuser des éléments d'en-tête

Les éléments MKV d'en-tête suivants sont utilisés par StreamDefinition (définis dansStreamDefinition.h).

Element Description Valeurs typiques
stream_name Correspond au nom du flux vidéo Kinesis. mon-flux
retention_period Durée, en heures, pendant laquelle les données de streaming sont conservées par Kinesis Video Streams. Spécifiez 0 pour un flux qui ne conserve pas de données. 24
tags Une collection clé-valeur de données utilisateur. Ces données sont affichées dans la AWS Management Console et peuvent être lues par les applications client afin de filtrer ou d'obtenir des informations sur un flux.
kms_key_id Si elle est présente, la AWS KMS clé définie par l'utilisateur est utilisée pour chiffrer les données du flux. En cas d'absence, les données sont cryptées à l'aide de la clé fournie par Kinesis (). aws/kinesis-video 01234567-89ab-cdef-0123-456789ab
streaming_type Actuellement, le seul type de flux valide est STREAMING_TYPE_REALTIME. STREAMING_TYPE_REALTIME
content_type Le type de contenu défini par l'utilisateur. Pour le streaming de données vidéo que la console va lire, le contenu doit être de type video/h264. video/h264
max_latency Cette valeur n'est pas utilisée actuellement et doit être définie sur 0. 0
fragment_duration L'estimation de la durée de vos fragments, utile à l'optimisation. La durée de fragment réelle est déterminée par les données de streaming. 2
timecode_scale

Indique l'échelle utilisée par les horodatages des images. La valeur par défaut est 1 millisecondes. Spécifier 0 attribue également la valeur par défaut d'1 milliseconde. La valeur peut être comprise entre 100 nanosecondes et 1 seconde.

Pour plus d'informations, consultez TimecodeScalela documentation de Matroska.

key_frame_fragmentation S'il est défini sur true, le flux démarre un nouveau cluster lorsqu'une image clé est reçue. true
frame_timecodes Sitrue, Kinesis Video Streams utilise les valeurs d'horodatage de présentation (pts) et d'horodatage de décodage (dts) des images reçues. Sifalse, Kinesis Video Streams tamponne les images lorsqu'elles sont reçues avec des valeurs temporelles générées par le système. true
absolute_fragment_time Si ce paramètre est défini sur true, les codes horaires du cluster sont interprétés comme utilisant l'heure absolue (par exemple, selon l'horloge système du producteur). Si false, les timescodes du cluster sont interprétés comme étant relatifs à l'heure de début du flux. true
fragment_acks Sitrue, des accusés de réception (ACKs) sont envoyés lorsque Kinesis Video Streams reçoit les données. Ils ACKs peuvent être reçus à l'aide des KinesisVideoStreamParseFragmentAck rappels KinesisVideoStreamFragmentAck ou. true
restart_on_error Indique si le flux doit reprendre la transmission après le signalement d'une erreur de flux. true
nal_adaptation_flags Indique si l'adaptation NAL (couche d'abstraction réseau) ou les données privées du codec sont présentes dans le contenu. Les indicateurs valides comprennent NAL_ADAPTATION_ANNEXB_NALS et NAL_ADAPTATION_ANNEXB_CPD_NALS. NAL_ADAPTATION_ANNEXB_NALS
frame_rate Une estimation du taux d'image du contenu. Cette valeur est utilisée pour l'optimisation ; le taux réel d'image est déterminé par le taux des données entrantes. Spécifier 0 attribue la valeur par défaut 24. 24
avg_bandwidth_bps Estimation de la bande passante du contenu, en Mbits/s. Cette valeur est utilisée pour l'optimisation ; le taux réel est déterminé par la bande passante des données entrantes. Par exemple, pour un flux vidéo de résolution 720p fonctionnant à 25FPS, vous pouvez vous attendre à ce que la bande passante moyenne soit de 5 Mbits/s. 5
buffer_duration La durée de mise en tampon du contenu sur le producteur. Si la latence du réseau est faible, cette valeur peut être réduite. Si la latence du réseau est élevée, l'augmentation de cette valeur empêche les trames d'être supprimées avant de pouvoir être envoyées, car l'allocation ne permet pas de placer les trames dans la plus petite mémoire tampon.
replay_duration Durée pendant laquelle le flux de données vidéo est « rembobiné » en cas de perte de connexion. Cette valeur peut être nulle si la perte d'images due à une perte de connexion n'est pas un problème. La valeur peut être augmentée si l'application utilisatrice parvient à supprimer les trames redondantes. Cette valeur doit être inférieure à la durée de la mémoire tampon, sinon la durée de la mémoire tampon est utilisée.
connection_staleness La durée pendant laquelle une connexion est maintenue quand aucune donnée n'est reçue.
codec_id Le codec utilisé par le contenu. Pour plus d'informations, consultez CodecID dans la spécification Matroska. V_ MPEG2
track_name Le nom défini par l'utilisateur de la piste. ma_piste
codecPrivateData Les données fournies par l'encodeur utilisées pour coder les données d'image, notamment la largeur et la hauteur de l'image en pixels, nécessaires à de nombreux consommateurs en aval. Dans la bibliothèque C++ Producer, le gMkvTrackVideoBits tableau MkvStatics.cpp inclut la largeur et la hauteur en pixels du cadre.
codecPrivateDataTaille La taille des données dans le paramètre codecPrivateData.
track_type Type de piste pour le flux. MKV_ TRACK _ INFO _ TYPE _ AUDIO ou MKV_ TRACK _ INFO _ TYPE _ VIDEO
segment_uuid uuid de segment défini par l'utilisateur (16 octets).
default_track_id Numéro unique différent de zéro pour la piste. 1

Diffusez les données de suivi

Les éléments de MKV piste suivants sont utilisés par StreamDefinition (définis dansStreamDefinition.h).

Element Description Valeurs typiques
track_name Nom de piste défini par l'utilisateur. Par exemple, « audio » pour la piste audio. audio
codec_id ID de codec de la piste Par exemple, « A_ AAC » pour une piste audio. A_ AAC
cpd Données fournies par l'encodeur, utilisées pour décoder les données de trame. Ces données peuvent inclure la largeur et la hauteur de trame en pixels, qui sont requis par de nombreux consommateurs en aval. Dans la bibliothèque C++ Producer, le gMkvTrack VideoBits tableau du MkvStatics fichier .cpp inclut la largeur et la hauteur en pixels du cadre.
cpd_size Taille des données contenues dans le codecPrivateData paramètre.
track_type Type de la piste. Par exemple, vous pouvez utiliser la valeur enum de MKV _ _ TRACK _ INFO TYPE _ AUDIO pour l'audio. MKV_TRACK_INFO_TYPE_AUDIO

Éléments d'en-tête du cadre

Les éléments MKV d'en-tête suivants sont utilisés par Frame (définis dans le KinesisVideoPic package, dansmkvgen/Include.h) :

  • Index d'image : Une valeur en croissance monotone.

  • Indicateurs : Le type d'image. Les valeurs valides sont notamment les suivantes :

    • FRAME_FLAGS_NONE

    • FRAME_FLAG_KEY_FRAME : Si key_frame_fragmentation est définie sur le flux, les images clés commencent un nouveau fragment.

    • FRAME_FLAG_DISCARDABLE_FRAME : Indique au décodeur qu'il peut ignorer cette image si le décodage est lent.

    • FRAME_FLAG_INVISIBLE_FRAME : La durée de ce bloc est de 0.

  • Horodatage du décodage : date à laquelle cette image a été décodée. Si les images précédentes dépendent de cette image pour le décodage, cet horodatage peut être antérieur à celui des images précédentes. Cette valeur est appliquée par rapport au début du fragment.

  • Horodatage de la présentation : horodatage de l'affichage de ce cadre. Cette valeur est appliquée par rapport au début du fragment.

  • Durée : La durée de lecture de l'image.

  • Taille : La taille des données de l'image en octets

MKVdonnées de trame

Selon le schéma de codage utilisé, les données de frame.frameData peuvent uniquement contenir les données médias de l'image ou contenir des informations d'en-tête imbriquées. Pour être affichées dans le AWS Management Console, les données doivent être codées dans le codec H.264, mais Kinesis Video Streams peut recevoir des flux de données sérialisés dans le temps dans n'importe quel format.