SDKRappels aux producteurs - 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.

SDKRappels aux producteurs

Les classes et les méthodes d'Amazon Kinesis Video Streams SDK Producer ne gèrent pas leurs propres processus. À la place, elles utilisent les appels et les événements entrants de la fonction afin de planifier les rappels pour communiquer avec l'application.

Il existe deux modèles de rappel que l'application peut utiliser pour interagir avec : SDK

  • CallbackProvider— Cet objet expose tous les rappels du composant code (PIC) indépendant de la plateforme à l'application. Ce modèle permet une fonctionnalité complète, mais cela signifie également que l'implémentation doit gérer toutes les API méthodes et signatures publiques de la couche C++.

  • StreamCallbackProvideret ClientCallbackProvider — Ces objets exposent les rappels spécifiques au flux et au client, et la couche C++ du SDK expose le reste des rappels. Il s'agit du modèle de rappel préféré pour interagir avec le producteurSDK.

Le diagramme suivant illustre le modèle d'objet des objets de rappel :

Schéma illustrant l'interaction entre producteurs et consommateurs dans Kinesis Video Streams.

Dans le schéma précédent, DefaultCallbackProvider dérive de CallbackProvider (qui expose tous les rappels contenus dans lePIC) et contient StreamCallbackProvider et. ClientCallbackProvider

ClientCallbackProvider

L'objet ClientCallbackProvider expose des fonctions de rappel au niveau du client. Les détails des fonctions sont décrites dans la section ClientCallbacks structure.

Méthodes de rappel :

  • getClientReadyCallback— Signale un état de préparation pour le client.

  • getStorageOverflowPressureCallback— Signale un débordement ou une pression de stockage. Ce rappel est appelé lorsque l'utilisation du stockage est inférieure à la valeur STORAGE_PRESSURE_NOTIFICATION_THRESHOLD, qui correspond à 5 pour cent du volume de stockage global. Pour de plus amples informations, veuillez consulter StorageInfo.

StreamCallbackProvider

L'objet StreamCallbackProvider expose des fonctions de rappel au niveau du flux.

Méthodes de rappel :

  • getDroppedFragmentReportCallback : Signale un fragment abandonné.

  • getDroppedFrameReportCallback— Signale la perte d'une image.

  • getFragmentAckReceivedCallback— Signale qu'un fragment ACK a été reçu pour le flux.

  • getStreamClosedCallback— Signale une condition de fermeture d'un cours d'eau.

  • getStreamConnectionStaleCallback— Signale une connexion périmée. Dans cette situation, le producteur envoie des données au service mais ne reçoit pas d'accusé de réception.

  • getStreamDataAvailableCallback— Indique que les données sont disponibles dans le flux.

  • getStreamErrorReportCallback— Signale une condition d'erreur de flux.

  • getStreamLatencyPressureCallback— Signale une condition de latence du flux, c'est-à-dire lorsque la taille de la mémoire tampon cumulée est supérieure à la max_latency valeur. Pour de plus amples informations, veuillez consulter StreamDefinition/StreamInfo.

  • getStreamReadyCallback: —Signale une condition de disponibilité du flux.

  • getStreamUnderflowReportCallback— Signale un état de sous-débit d'un cours d'eau. Cette fonction n'est pas utilisée actuellement et est réservée pour une utilisation future.

Pour le code source deStreamCallbackProvider, voir StreamCallbackProvider.h.

ClientCallbacks structure

La ClientCallbacks structure contient les points d'entrée de la fonction de rappel que la fonction PIC appelle lorsque des événements spécifiques se produisent. La structure contient également des informations de version dans le champ CALLBACKS_CURRENT_VERSION ainsi qu'un champ customData pour les données définies par l'utilisateur et renvoyées avec les fonctions de rappel individuelles.

L'application client peut utiliser un pointeur this pour le champ custom_data afin de mapper les fonctions de membre vers les fonctions ClientCallback statiques lors de l'exécution, comme illustré dans l'exemple de code suivant :

STATUS TestStreamCallbackProvider::streamClosedHandler(UINT64 custom_data, STREAM_HANDLE stream_handle, UINT64 stream_upload_handle) { LOG_INFO("Reporting stream stopped."); TestStreamCallbackProvider* streamCallbackProvider = reinterpret_cast<TestStreamCallbackProvider*> (custom_data); streamCallbackProvider->streamClosedHandler(...);
Événements
Fonction Description Type
CreateDeviceFunc Pas implémenté actuellement sur le backend. Cet appel échoue lorsque appelé à partir de Java ou C++. Les autres clients effectuent une initialisation propre à la plateforme. Backend API
CreateStreamFunc Appelé lors de la création du flux. Backend API
DescribeStreamFunc Appelé lorsque DescribeStream est appelé. Backend API
GetStreamingEndpointFunc Appelé lorsque GetStreamingEndpoint est appelé. Backend API
GetStreamingTokenFunc Appelé lorsque GetStreamingToken est appelé. Backend API
PutStreamFunc Appelé lorsque PutStream est appelé. Backend API
TagResourceFunc Appelé lorsque TagResource est appelé. Backend API
     
CreateMutexFunc Crée un mutex de synchronisation. Synchronisation
FreeMutexFunc Libère les mutex. Synchronisation
LockMutexFunc Verrouille le mutex de synchronisation. Synchronisation
TryLockMutexFunc Essaie de verrouiller les mutex. Pas implémenté actuellement. Synchronisation
UnlockMutexFunc Déverrouille le mutex. Synchronisation
     
ClientReadyFunc Appelé lorsque le client passe en l'état prêt. Notification
DroppedFrameReportFunc Signale lorsqu'une image est abandonnée. Notification
DroppedFragmentReportFunc Signale lorsqu'un fragment est abandonné. Cette fonction n'est pas utilisée actuellement et est réservée pour une utilisation future. Notification
FragmentAckReceivedFunc Appelé lorsqu'un fragment ACK (mise en mémoire tampon, reçu, persistant et erreur) est reçu. Notification
StorageOverflowPressureFunc Appelé lorsque l'utilisation du stockage est inférieure à la valeur STORAGE_PRESSURE_NOTIFICATION_THRESHOLD qui correspond à 5 pour cent du volume de stockage global. Notification
StreamClosedFunc Appelé lorsque les derniers bits des images restantes sont diffusés en continu. Notification
StreamConnectionStaleFunc Appelé lorsque le flux passe en état de connexion obsolète. Dans cet état, l'application Producteur envoie des données vers le service, mais ne reçoit pas d'accusés de réception. Notification
StreamDataAvailableFunc Appelé lorsque les données de flux sont disponibles. Notification
StreamErrorReportFunc Appelé en cas d'erreur de flux. Ferme PIC automatiquement le flux dans ces conditions. Notification
StreamLatencyPressureFunc Appelé lorsque le flux passe en état de latence qui correspond au moment où la taille de la mémoire tampon accumulée est supérieure à la valeur max_latency. Pour de plus amples informations, veuillez consulter StreamDefinition/StreamInfo. Notification
StreamReadyFunc Appelé lorsque le flux passe en état prêt. Notification
StreamUnderflowReportFunc Cette fonction n'est pas utilisée actuellement et est réservée pour une utilisation future. Notification
     
DeviceCertToTokenFunc Renvoie le certificat de connexion sous la forme d'un jeton. Intégration de plateforme
GetCurrentTimeFunc Renvoie l'heure actuelle. Intégration de plateforme
GetDeviceCertificateFunc Renvoie le certificat de l'appareil. Cette fonction n'est pas utilisée actuellement et est réservée pour une utilisation future. Intégration de plateforme
GetDeviceFingerprintFunc Renvoie l'empreinte de l'appareil. Cette fonction n'est pas utilisée actuellement et est réservée pour une utilisation future. Intégration de plateforme
GetRandomNumberFunc Renvoie un nombre aléatoire entre 0 et RAND_MAX. Intégration de plateforme
GetSecurityTokenFunc Renvoie le jeton de sécurité transmis aux fonctions qui communiquent avec le backendAPI. L'implémentation peut spécifier les AccessKeyId, SecretKeyId sérialisés et le jeton de session. Intégration de plateforme
LogPrintFunc Consigne une ligne de texte avec la balise et le niveau de journalisation. Pour de plus amples informations, veuillez consulter PlatformUtils.h. Intégration de plateforme

Pour les fonctions d'intégration de plateforme dans le tableau précédent, le dernier paramètre est une structure ServiceCallContext qui comporte les champs suivants :

  • version : La version de la structure.

  • callAfter : Un délai absolu après lequel appeler la fonction.

  • timeout : Le délai d'expiration de l'opération en unités de 100 nanosecondes.

  • customData : Une valeur définie par l'utilisateur à retransmettre au client.

  • pAuthInfo : les informations d'identification pour l'appel. Pour plus d'informations, consultez la structure (__AuthInfo) suivante.

Les informations d'autorisation sont fournies à l'aide de la structure __AuthInfo sous la forme d'informations d'identification sérialisées ou de jeton d'authentification propre au fournisseur. Cette structure possède les champs suivants :

  • version : La version de la structure __AuthInfo.

  • type : Une valeur AUTH_INFO_TYPE définissant le type d'informations d'identification (certificat ou jeton de sécurité).

  • data : Une matrice à octets contenant les informations d'authentification.

  • size : La taille du paramètre data.

  • expiration : Le délai d'expiration des informations d'identification en unités de 100 nanosecondes.

Implémentations de callback pour réessayer le streaming

Le Kinesis Video Producer SDK fournit l'état du streaming par le biais de fonctions de rappel. Nous vous recommandons de mettre en œuvre les mécanismes de rappel suivants pour remédier à tout problème réseau momentané rencontré pendant le streaming.

  • Rappel de la pression de latence du flux : ce mécanisme de rappel est lancé lorsqu'il SDK rencontre une condition de latence du flux. Cela se produit lorsque la taille de la mémoire tampon cumulée est supérieure à la LATENCY valeur MAX _. Lorsque le flux est créé, l'application de streaming définit MAX _ LATENCY sur la valeur par défaut de 60 secondes. L'implémentation standard pour ce rappel est de réinitialiser la connexion. Vous pouvez utiliser l'exemple d'implémentation à l'adresse https://github.com/awslabs/amazon-kinesis-video-streams- producer-sdk-cpp /blob/master/ kinesis-video-c-producer StreamLatencyStateMachine /src/source/ .c selon vos besoins. Notez qu'il n'est pas possible de stocker les trames non livrées en raison d'une panne du réseau dans un stockage secondaire à des fins de remblayage.

  • Rappel de temporisation des flux : ce rappel est lancé lorsque le producteur peut envoyer des données au service Amazon Kinesis Data Streams (liaison montante) mais qu'il n'est pas en mesure de récupérer les accusés de réception (mis en ACK mémoire tampon) à temps (la valeur par défaut est de 60 secondes). Selon les paramètres du réseau, le rappel de la pression de latence du flux ou le rappel de l'obsolescence du flux, ou les deux, peuvent être initiés. À l’image de l’implémentation d’un nouveau rappel de sollicitation de latence de flux, l'implémentation standard consiste à réinitialiser la connexion et à en démarrer une nouvelle pour la diffusion en continu. Vous pouvez utiliser l'exemple d'implémentation disponible sur https://github.com/awslabs/amazon-kinesis-video-streamsConnectionStaleStateMachine-producer-c/blob/master/src/source/ .c selon vos besoins.

  • Rappel d'erreur de flux : ce rappel est lancé lorsqu'un délai d'expiration SDK de la connexion réseau est dépassé ou qu'une autre erreur survient lors de l'appel aux appels de service. KVS API

  • Rappel de trame supprimé : ce rappel est lancé lorsque la taille de stockage est pleine, soit en raison d'une lenteur du réseau, soit d'une erreur de flux. Si la vitesse du réseau entraîne des pertes d'images, vous pouvez augmenter la taille de stockage, réduire la taille des images vidéo ou la fréquence d'images pour qu'elle corresponde à la vitesse du réseau.