

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
<a name="how-data"></a>

Les [Transférer vers Kinesis Video Streams](producer-sdk.md) et [Regardez le résultat des caméras à l'aide de la bibliothèque d'analyseurs](parser-library.md) 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 repose sur la spécification Matroska (MKV).

Le [Format MKV](https://en.wikipedia.org/wiki/Matroska) est une spécification ouverte de données mé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 au format MKV. 

Il [Transférer vers Kinesis Video Streams](producer-sdk.md) utilise les `Frame` types `StreamDefinition` et pour produire des en-têtes de flux MKV, des en-têtes de cadre et des données d'image.

Pour obtenir des informations sur la spécification MKV, consultez [Spécifications Matroska](https://www.matroska.org/technical/specs/index.html).

Les sections suivantes décrivent les composants de données au format MKV générées par le [C\$1\$1](producer-sdk-cpp.md).

**Topics**
+ [Diffuser des éléments d'en-tête](#how-data-header-streamdefinition)
+ [Diffusez les données de suivi](#how-data-header-streamtrack)
+ [Éléments d'en-tête du cadre](#how-data-header-frame)
+ [Données de trame MKV](#how-data-frame)

## Diffuser des éléments d'en-tête
<a name="how-data-header-streamdefinition"></a>

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


****  

| Element | Description | Valeurs typiques | 
| --- | --- | --- | 
| stream\$1name | Correspond au nom du flux vidéo Kinesis. | mon-flux | 
| retention\$1period | 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\$1key\$1id | 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/kinesisvideo | 01234567-89ab-cdef-0123-456789ab | 
| streaming\$1type | Actuellement, le seul type de flux valide est STREAMING\$1TYPE\$1REALTIME. | STREAMING\$1TYPE\$1REALTIME | 
| content\$1type | 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\$1latency | Cette valeur n'est pas utilisée actuellement et doit être définie sur 0. | 0 | 
| fragment\$1duration | 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\$1scale | 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 [TimecodeScale](https://matroska.org/technical/specs/notes.html#TimecodeScale)la documentation de Matroska. |  | 
| key\$1frame\$1fragmentation | S'il est défini sur true, le flux démarre un nouveau cluster lorsqu'une image clé est reçue. | true | 
| frame\$1timecodes | 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\$1fragment\$1time |  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\$1acks |  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\$1on\$1error | Indique si le flux doit reprendre la transmission après le signalement d'une erreur de flux. | true | 
| nal\$1adaptation\$1flags | Indique si l'adaptation NAL (Network Abstraction Layer) ou les données privées codec sont présentes dans le contenu. Les indicateurs valides comprennent NAL\$1ADAPTATION\$1ANNEXB\$1NALS et NAL\$1ADAPTATION\$1ANNEXB\$1CPD\$1NALS. | NAL\$1ADAPTATION\$1ANNEXB\$1NALS | 
| frame\$1rate | 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\$1bandwidth\$1bps | 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 d'une résolution de 720 p s'exécutant à 25 FPS, vous pouvez vous attendre à une bande passante moyenne de 5 Mbit/s. | 5 | 
| buffer\$1duration | 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\$1duration | 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\$1staleness | La durée pendant laquelle une connexion est maintenue quand aucune donnée n'est reçue. |  | 
| codec\$1id | Le codec utilisé par le contenu. Pour plus d'informations, consultez [CodecID](https://matroska.org/technical/specs/codecid/index.html) dans la spécification Matroska. | V\$1 MPEG2 | 
| track\$1name | Le nom défini par l'utilisateur de la piste. | ma\$1piste | 
| 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\$1\$1 Producer](producer-sdk-cpp.md), 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\$1type | Type de piste pour le flux. | MKV\$1TRACK\$1INFO\$1TYPE\$1AUDIO ou MKV\$1TRACK\$1INFO\$1TYPE\$1VIDEO | 
| segment\$1uuid | uuid de segment défini par l'utilisateur (16 octets). |  | 
| default\$1track\$1id | Numéro unique différent de zéro pour la piste. | 1 | 

## Diffusez les données de suivi
<a name="how-data-header-streamtrack"></a>

Les éléments de piste MKV suivants sont utilisés par `StreamDefinition` (défini dans `StreamDefinition.h`).


****  

| Element | Description | Valeurs typiques | 
| --- | --- | --- | 
| track\$1name | Nom de piste défini par l'utilisateur. Par exemple, « audio » pour la piste audio.  | audio | 
| codec\$1id | ID de codec de la piste Par exemple, « A\$1AAC » pour une piste audio. | A\$1AAC | 
| 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\$1\$1 Producer](https://docs.aws.amazon.com//kinesisvideostreams/latest/dg/producer-sdk-cpp.html), le gMkvTrack VideoBits tableau du MkvStatics fichier .cpp inclut la largeur et la hauteur en pixels du cadre.  |  | 
| cpd\$1size | Taille des données contenues dans le codecPrivateData paramètre. |  | 
| track\$1type | Type de la piste. Par exemple, vous pouvez utiliser la valeur enum MKV\$1TRACK\$1INFO\$1TYPE\$1AUDIO pour l'audio. | MKV\$1TRACK\$1INFO\$1TYPE\$1AUDIO | 

## Éléments d'en-tête du cadre
<a name="how-data-header-frame"></a>

Les éléments d'en-tête MKV suivants sont utilisés par `Frame` (défini dans le package `KinesisVideoPic`, dans `mkvgen/Include.h`) :
+ **Index d'image :** Une valeur en croissance monotone.
+ **Indicateurs :** Le type d'image. Les valeurs valides sont 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

## Données de trame MKV
<a name="how-data-frame"></a>

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](https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC), mais Kinesis Video Streams peut recevoir des flux de données sérialisés dans le temps dans n'importe quel format.