Structures de flux vidéo Kinesis - 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.

Structures de flux vidéo Kinesis

Vous pouvez utiliser les structures suivantes pour fournir des données à une instance d'un flux vidéo Kinesis.

StreamDefinition/StreamInfo

L'objet StreamDefinition dans la couche C++ englobe l'objet StreamInfo dans le code indépendant de la plateforme et fournit des valeurs par défaut dans le constructeur.

Champs réservés aux membres

Champ Type de données Description Valeur par défaut
stream_name string Nom de flux facultatif. Pour plus d'informations sur la longueur du nom de flux, consultez Limites du SDK pour les producteurs. Chaque flux doit avoir un nom unique. Si aucun nom n'est spécifié, un nom est généré de façon aléatoire.
retention_period duration<uint64_t, ratio<3600>> La période de conservation du flux en secondes. 0 indique l'absence de conservation. 3600 (Une heure)
tags const map<string, string>* Un mappage de paires clé-valeur contenant les informations d'utilisateur. Si le flux possède déjà un ensemble de balises, les nouvelles balises sont ajoutées à l'ensemble existant. Pas de balise
kms_key_id string L'ID de AWS KMS clé à utiliser pour chiffrer le flux. Pour plus d’informations, consultez Protection des données dans Kinesis Video Streams. Clé KMS par défaut (aws/kinesis-video.)
streaming_type Énumération STREAMING_TYPE La seule valeur prise en charge est STREAMING_TYPE_REALTIME.
content_type string Format du contenu du flux. La console Kinesis Video Streams peut lire du contenu dans ce formatvideo/h264. video/h264
max_latency duration<uint64_t, milli> Latence maximale en millisecondes pour le flux. Le rappel de sollicitation de latence de flux (si spécifié) est appelé lorsque la durée de mise en tampon dépasse cette durée. 0 indique qu'aucun rappel de sollicitation de latence de flux ne sera appelé. milliseconds::zero()
fragment_duration duration<uint64_t> La durée de fragment souhaitée en secondes. Cette valeur est utilisée en combinaison avec la valeur key_frame_fragmentation. Si cette valeur est définiefalse, Kinesis Video Streams génère des fragments sur une image clé une fois cette durée écoulée. Par exemple, un flux audio Advanced Audio Coding (AAC) utilise chaque image en tant qu'image clé. La spécification de key_frame_fragmentation = false entraîne une fragmentation sur une image clé lorsque cette durée arrive à expiration, ce qui se traduit par des fragments de 2 secondes. 2
timecode_scale duration<uint64_t, milli> L'échelle de code horaire MKV en millisecondes qui spécifie la granularité des codes horaires pour les images au sein du cluster MKV. Le code horaire d'image MKV est toujours relatif par rapport au démarrage du cluster. MKV utilise une valeur 16 bits signée (0-32767) pour représenter le code horaire au sein du cluster (fragment). Vérifiez que le code temporel de l'image peut être représenté avec l'échelle de code temporel donnée. La valeur d'échelle de code horaire par défaut de 1 ms garantit la représentation de la plus grande image en 32767 ms ~ = 32 secondes. Cela dépasse la durée de fragment maximum spécifiée dans Quotas du service Kinesis Video Streams qui est de 10 secondes. 1
key_frame_fragmentation bool Indique s'il faut générer des fragments sur une image clé. Si la valeur est true, le kit SDK génère un début de fragment à chaque image clé. Sifalse, Kinesis Video Streams attend fragment_duration au moins et produit un nouveau fragment sur l'image clé qui le suit. true
frame_timecodes bool Indique s'il faut utiliser codes horaires d'image ou générer des horodatages à l'aide du rappel actuel. De nombreux encodeurs ne génèrent pas d'horodatages avec les images. La spécification false de ce paramètre garantit donc que les images sont horodatées lorsqu'elles sont placées dans Kinesis Video Streams. true
absolute_fragment_times bool Kinesis Video Streams utilise MKV comme mécanisme d'empaquetage sous-jacent. La spécification MKV est stricte en ce qui concerne l'aspect relatif du code horaire d'image par rapport au début du cluster (fragment). Toutefois, les codes horaires de cluster peuvent être absolus ou relatifs par rapport à l'heure de démarrage du flux. Si les horodatages sont relatifs, l'appel de l'API de service PutMedia utilisera l'horodatage de démarrage de flux facultatif et ajustera les horodatages de cluster. Le service stocke toujours les fragments avec leurs horodatages absolus. true
fragment_acks bool S'il faut recevoir des ACK de fragments au niveau de l'application (accusés de réception). true signifie que le kit SDK recevra les accusés de réception et agira en conséquence.
restart_on_error bool Indique s'il faut redémarrer en cas d'erreurs spécifiques. La valeur true signifie que le kit SDK essaie de redémarrer le streaming en cas d'erreur.
recalculate_metrics bool Indique s'il faut recalculer les métriques. Chaque appel à extraire les métriques peut recalculer celles qui permettent d'obtenir la dernière valeur « en cours », ce qui peut avoir un léger impact sur le processeur. Il se peut que vous deviez définir cette valeur sur false pour les périphériques à très faible consommation / couverture afin d'économiser les cycles de processeur. Dans le cas contraire, nous vous déconseillons false d'utiliser cette valeur. true
nal_adaptation_flags uint32_t

Spécifie les indicateurs d'adaptation d'unité Network Abstraction Layer (NAL). Si le bitstream est encodé en H.264, il peut alors être traité au format brut ou emballé dans des unités NAL. Ils sont au format Annex-B ou AVCC. La plupart des producteurs et consommateurs de flux élémentaires (encodeurs de lecture et décodeurs) utilisent le format Annex-B car il présente des avantages, tels que la récupération des erreurs. Les systèmes de niveau supérieur utilisent le format AVCC qui est le format par défaut pour MPEG, HLS, DASH, etc. La lecture de console utilise les extensions MSE (media source extensions) du navigateur pour décoder et lire le flux utilisant le format AVCC. Pour H.264 (et pour M-JPEG et H.265), le kit SDK fournit des capacités d'adaptation.

De nombreux flux élémentaires sont au format suivant. Dans cet exemple, Ab est le code de démarrage Annex-B (001 ou 0001).

Ab(Sps)Ab(Pps)Ab(I-frame)Ab(P/B-frame) Ab(P/B-frame)…. Ab(Sps)Ab(Pps)Ab(I-frame)Ab(P/B-frame) Ab(P/B-frame)

Dans le cas du H.264, les données privées du codec (CPD) se trouvent dans les paramètres SPS (ensemble de paramètres de séquence) et PPS (ensemble de paramètres d'image) et peuvent être adaptées au format AVCC. L'application peut extraire les CPD de l'image, sauf si le pipeline multimédia les fournit séparément. Il peut le faire en recherchant la première trame IDR (qui doit contenir le SPS et le PPS), en extrayant les deux NALU (qui le sontAb(Sps)Ab(Pps)) et en la configurant dans le CPD in. StreamDefinition

Pour plus d’informations, consultez Indicateurs d'adaptation NAL.

La valeur par défaut consiste à adapter le format Annex-B au format AVCC pour les données d'image et les données privées codec.
frame_rate uint32_t Débit d'images attendu. Cette valeur est utilisée pour mieux calculer les besoins de mise en mémoire tampon. 25
avg_bandwidth_bps uint32_t Bande passante moyenne attendue pour le flux. Cette valeur est utilisée pour mieux calculer les besoins de mise en mémoire tampon. 4 * 1024 * 1024
buffer_duration duration<uint64_t> Durée de la mémoire tampon de flux en secondes. Le SDK conserve les cadres du magasin de contenu pendant une durée maximale debuffer_duration, après quoi les cadres précédents sont supprimés au fur et à mesure que la fenêtre avance. Si le cadre supprimé n'a pas été envoyé au backend, le rappel du cadre supprimé est appelé. Si la durée de mise en tampon actuelle est supérieure à max_latency, le rappel de sollicitation de latence de flux est appelé. La mémoire tampon est tronquée au début du fragment suivant lorsque l'accusé de réception de conservation de ce dernier est reçu. Cela indique que le contenu a été conservé durablement dans le cloud, afin de le stockage du contenu sur l'appareil local ne soit plus nécessaire. 120
replay_duration duration<uint64_t> Durée, en secondes, nécessaire pour faire reculer le lecteur actuel pour le rejouer en cas d'erreur si le redémarrage est activé. La restauration s'arrête au début du tampon (si le streaming vient de commencer ou si l'accusé de réception de conservation est arrivé). La restauration essaie de se poser sur une image clé qui indique un début de fragment. Si l'erreur « à l'origine du redémarrage » n'indique pas un hôte mort (l'hôte est toujours en vie et contient les données de trame dans ses tampons internes), le rollback s'arrête à la dernière trame ACK reçue. Ensuite, la restauration se poursuit jusqu'à l'image clé suivante, car l'ensemble du fragment est déjà stocké dans la mémoire hôte. 40
connection_staleness duration<uint64_t> Durée, en secondes, après laquelle le rappel de stagnation du flux est appelé si le SDK ne reçoit pas l'ACK de mise en mémoire tampon. Cela indique que les images sont envoyées depuis l'appareil, mais le backend ne les accuse pas de réception. Cet état indique une connexion coupée au niveau du saut intermédiaire ou de l'équilibreur de charge. 30
codec_id string ID de codec de la piste MKV. V_MPEG4/ISO/AVC
track_name string Nom de la piste MKV. kinesis_video
codecPrivateData unsigned char* La mémoire tampon des données privées codec (CPD). Si le pipeline média contient les informations sur les données de type CPD avant que le flux démarre, elle peut être définie dans StreamDefinition.codecPrivateData. Les bits sont copiés et la mémoire tampon peut être réutilisée ou libérée après l'appel pour créer le flux. Toutefois, si les données ne sont pas disponibles lors de la création du flux, elles peuvent être définies dans l'une des surcharges de la KinesisVideoStream.start(cpd) fonction. null
codecPrivateDataTaille uint32_t La taille de la mémoire tampon des données privées codec. 0

ClientMetrics

L'ClientMetricsobjet est rempli en appelantgetKinesisVideoMetrics.

Champs réservés aux membres

Champ Type de données Description
Version UINT32 Version de la structure, définie dans la macro CLIENT_METRICS_CURRENT_VERSION.
contentStoreSize UINT64 Taille du magasin de contenu global, en octets. Il s'agit de la valeur spécifiée dans DeviceInfo.StorageInfo.storageSize.
contentStoreAvailableTaille UINT64 Taille de stockage actuellement disponible en octets.
contentStoreAllocatedTaille UINT64 Taille actuellement allouée. Le total de la taille allouée et de la taille disponible doit être légèrement inférieur à la taille de stockage globale, en raison des données comptables internes et de l'implémentation du magasin de contenu.
totalContentViewsTaille UINT64 Taille de la mémoire allouée pour l'ensemble des affichages de contenu pour tous les flux. Cela n'est pas pris en compte dans la taille de stockage. Cette mémoire est allouée à l'aide de la macro MEMALLOC, qui peut être remplacée pour fournir un allocateur personnalisé.
totalFrameRate UINT64 Débit d'images total observé pour tous les flux.
totalTransferRate UINT64 Débit de flux total observé, en octets par seconde, pour tous les flux.

StreamMetrics

L'StreamMetricsobjet est rempli en appelantgetKinesisVideoMetrics.

Champs réservés aux membres

Champ Type de données Description
Version UINT32 Version de la structure, définie dans la macro STREAM_METRICS_CURRENT_VERSION.
currentViewDuration UINT64 Durée des images accumulées. Dans le cas d'un réseau rapide, cette durée est soit nulle, soit la durée de la trame (lorsque la trame est transmise). Si la durée devient plus longue que celle max_latency spécifiée dans leStreamDefinition, le rappel de latence du flux est appelé s'il est spécifié. La durée est spécifiée en unités de 100ns, qui constitue l'unité de temps par défaut pour la couche PIC.
overallViewDuration UINT64 Durée d'affichage globale. Si le flux est configuré sans ACK ni persistance, cette valeur augmente au fur et à mesure que les images sont insérées dans le flux vidéo Kinesis et devient égale à celle dubuffer_duration. StreamDefinition Lorsque les ACK sont activés et que l'ACK persistant est reçu, la mémoire tampon est réduite à l'image clé suivante. Cela est dû au fait que l'horodatage ACK indique le début de l'ensemble du fragment. La durée est spécifiée en unités de 100-ns qui constitue l'unité de temps par défaut pour la couche PIC.
currentViewSize UINT64 Taille, en octets, de la mémoire tampon actuelle.
overallViewSize UINT64 Taille de l'affichage global, en octets.
currentFrameRate UINT64 Débit d'images observé pour le flux actuel.
currentTransferRate UINT64 Débit de transfert observé, en octets par seconde, pour le flux actuel.