paint-brush
Comment surveiller les analyses de la visionneuse de flux en direct avec Amazon IVSpar@amazonivs
440 lectures
440 lectures

Comment surveiller les analyses de la visionneuse de flux en direct avec Amazon IVS

Trop long; Pour lire

Dans cet article, nous examinerons quelques façons de donner un aperçu des spectateurs de flux. Les données des utilisateurs sont également stockées dans CloudWatch et peuvent être récupérées via le SDK. Il existe une méthode supplémentaire, comme nous le verrons, pour obtenir le nombre de téléspectateurs actuels d'un flux en direct.
featured image - Comment surveiller les analyses de la visionneuse de flux en direct avec Amazon IVS
Amazon Interactive Video Service (IVS)  HackerNoon profile picture
0-item
1-item

Dans mon dernier article, nous avons examiné la surveillance des métriques de santé de la diffusion en direct d'Amazon Interactive Video Service (Amazon IVS) via le SDK Amazon CloudWatch. La surveillance de la santé est un sujet extrêmement important qui est crucial pour maintenir la performance de vos applications de diffusion en direct. Un autre élément crucial est l'analyse des spectateurs. Dans cet article, nous examinerons quelques façons de donner un aperçu des spectateurs de flux.


Une grande partie de ce message ressemblera à mon dernier message. En effet, les données des utilisateurs sont également stockées dans CloudWatch et peuvent être récupérées via le SDK. Il existe une méthode supplémentaire, comme nous le verrons ci-dessous, pour obtenir le nombre de téléspectateurs actuels d'un flux en direct, ce qui est un moyen pratique d'obtenir un nombre pouvant être affiché sur votre frontal.


Remarque : bien que cet article se concentre sur les téléspectateurs des chaînes de diffusion en direct, vous pouvez également récupérer des métriques sur vos salles de chat Amazon IVS comme ConcurrentChatConnections et les messages Delivered . Nous ne couvrirons pas cela dans cet article, mais vous pouvez consulter la documentation pour en savoir plus.

Récupération de vues simultanées via la console CloudWatch

Si vous cherchez simplement à jeter un coup d'œil sur les données de l'utilisateur sans récupérer les données brutes, vous pouvez afficher vos ConcurrentViews via la console CloudWatch. Tout d'abord, sélectionnez All metrics , puis choisissez IVS .

Ensuite, sélectionnez Par chaîne .

Cochez ensuite la case dans la ligne qui contient ConcurrentViews pour l'un de vos canaux Amazon IVS.

Une autre façon de trouver des vues simultanées pour une session de flux consiste à utiliser la console Amazon IVS. Sélectionnez votre chaîne, puis choisissez un ID de flux sur la page des détails de la chaîne.

Les détails d'une session de flux contiendront plusieurs graphiques, dont l'un contient les vues simultanées de la session.

Récupération de vues simultanées via le SDK CloudWatch

Pour intégrer ces données dans votre propre application, vous pouvez récupérer les données via le SDK CloudWatch. Comme pour les métriques de santé, vous aurez besoin d'un ARN du canal, d'un StartTime et d'un EndTime pour récupérer ConcurrentViews .


Au lieu de choisir au hasard les heures de début et de fin, il est probablement logique d'obtenir dynamiquement ces heures en choisissant les heures de début et de fin à partir d'une session de diffusion en direct. Vous pouvez récupérer une liste des sessions de streaming via le SDK Amazon IVS (comme nous l'avons vu dans le post précédent ).


Rappel : Vous aurez toujours besoin d'un EndTime , même pour les flux actuellement en direct. Pour les flux en direct, vous pouvez toujours utiliser l'heure actuelle comme EndTime lorsque vous utilisez le SDK pour récupérer des métriques.


Pour récupérer ces données via le kit AWS SDK pour JavaScript (v3), vous devrez installer le package @aws-sdk/client-cloudwatch et créer une instance du client ( new CloudWatchClient() ). Une fois l'instance client créée, définissez quelques variables pour les entrées requises.


 const startTime = new Date('2023-02-10T14:00:00.000Z'); const endTime = new Date('2023-02-10T14:30:00.000Z'); const arn = process.env.DEMO_CHANNEL_ARN;


Ensuite, créez un objet d'entrée. L'objet d'entrée contiendra StartTime , EndTime et un tableau de MetricDataQueries . Le tableau de requêtes contiendra un objet unique qui spécifie le MetricName ( ConcurrentViews ), l' Namespace ( AWS/IVS ) et les Dimensions à filtrer (nom du canal, dans ce cas).

 const getMetricDataInput = { StartTime: startTime, EndTime: endTime, MetricDataQueries: [{ Id: "concurrentviews", MetricStat: { Metric: { MetricName: "ConcurrentViews", Namespace: "AWS/IVS", Dimensions: [{ Name: "Channel", Value: arn.split("/")[1] }] }, Period: 5, Stat: "Average", } }], MaxDatapoints: 100 };


Envoyez maintenant la demande et enregistrez le résultat.

 const getMetricDataRequest = new GetMetricDataCommand(getMetricDataInput); let metrics = await cloudWatchClient.send(getMetricDataRequest); console.log(metrics);


Ce qui produit une sortie qui ressemble à ce qui suit (métadonnées SDK superflues supprimées par souci de brièveté) :

 { "MetricDataResults": [ { "Id": "concurrentviews", "Label": "ConcurrentViews", "Timestamps": [ "2023-02-10T14:29:00.000Z", "2023-02-10T14:28:00.000Z", "2023-02-10T14:27:00.000Z", "2023-02-10T14:26:00.000Z", "2023-02-10T14:22:00.000Z" ], "Values": [ 3, 3, 3, 3, 10 ], "StatusCode": "PartialData" } ] }


Vous pouvez filtrer, trier et sortir ces données pour produire un format utile pour générer des graphiques.

 const viewMetrics = metrics .MetricDataResults .find((metric) => metric.Id === 'concurrentviews'); const viewValues = viewMetrics.Values.reverse(); const viewData = []; viewMetrics .Timestamps .reverse() .forEach((t, i) => { viewData.push({ timestamp: t, concurrentviews: viewValues[i], }) }); console.log(JSON.stringify(viewData));


Ce qui produit un tableau d'objets.

 [ { "timestamp": "2023-02-10T14:22:00.000Z", "concurrentviews": "10.00" }, { "timestamp": "2023-02-10T14:26:00.000Z", "concurrentviews": "3.00" }, ... ]


Vous pouvez utiliser ces données avec notre bibliothèque de graphiques préférée (ou un générateur de graphiques en ligne générique comme je l'ai fait).

Génération d'images de graphique avec le SDK CloudWatch

Dans le dernier article, nous avons envisagé de générer l'image directement via le SDK CloudWatch. Cette approche s'applique également à vos métriques de vue.

 const startTime = new Date('2023-02-10T14:00:00.000Z'); const endTime = new Date('2023-02-10T14:25:00.000Z'); const arn = process.env.DEMO_CHANNEL_ARN; const cloudWatchClient = new CloudWatchClient(); const getMetricWidgetImageInput = { MetricWidget: JSON.stringify({ metrics: [ [ "AWS/IVS", "ConcurrentViews", "Channel", arn.split("/")[1] ] ], start: startTime, end: endTime, period: 5, stat: "Average" }) }; const getMetricWidgetImageRequest = new GetMetricWidgetImageCommand(getMetricWidgetImageInput); const metricImage = await cloudWatchClient.send(getMetricWidgetImageRequest);


Qui renvoie un objet avec la clé MetricWidgetImage qui contient un tampon de tableau ( Uint8Array ) contenant l'image du graphique.

 { "MetricWidgetImage": { "0": 137, "1": 80, "2": 78, ... } }


Pour convertir ce tampon de tableau en une chaîne base64 :

 const buffer = Buffer.from(metricImage.MetricWidgetImage); console.log(buffer.toString('base64'));


Ce qui nous donne :

 iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAIAAAD9V4nPAAAACXBIWXMA...


Cela peut être converti en une image qui ressemble à ceci :

Récupération des sessions d'affichage en direct en cours pour un canal

Comme mentionné ci-dessus, vous pouvez facilement obtenir un décompte des sessions d'affichage en cours pour le flux en direct actif sur un canal via le module client Amazon IVS dans le kit SDK AWS. Pour cela, utilisez la méthode GetStream .


 import { GetStreamCommand, IvsClient } from "@aws-sdk/client-ivs"; const client = new IvsClient(); const getStreamCommandInput = { channelArn: process.env.DEMO_CHANNEL_ARN, }; const getStreamRequest = new GetStreamCommand(getStreamCommandInput); const getStreamResponse = await client.send(getStreamRequest); console.log(getStreamResponse);


Ce qui produit une sortie comme celle-ci.

 { "stream": { "channelArn": "arn:aws:ivs:us-east-1:[redacted]:channel/[redacted]", "health": "HEALTHY", "playbackUrl": "https://[redacted].us-east-1.playback.live-video.net/api/video/v1/us-east-1.[redacted].channel.x4aGUUxIp5Vw.m3u8", "startTime": "2023-02-10T15:46:36.000Z", "state": "LIVE", "streamId": "st-[redacted]", "viewerCount": 5 } }


Notez la propriété viewerCount qui est un nombre en direct de sessions de visionnage pour le flux en direct actuel.

Résumé

Dans cet article, nous avons appris à récupérer des données de vue pour nos flux en direct Amazon IVS via les SDK CloudWatch et Amazon IVS. Pour en savoir plus, consultez la documentation .

Couronne