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,
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 sont 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. |