L'objet `Subscriber` représente l'élément vidéo local qui lit un flux distant. L'objet `Subscriber` comprend des méthodes qui permettent d'activer et de désactiver la lecture audio locale pour le flux auquel on est abonné. Le subscribe() de la méthode Session L'objet renvoie un objet Subscriber.

Propriétés

Nom Type Description
element Élément L'élément DOM HTML contenant l'abonné.
id Chaîne L'identifiant DOM de l'abonné.
stream Flux Le flux auquel vous vous abonnez.

Méthodes

Nom Description
addEventListener(type, listener, context) Obsolète.
getAudioVolume() → {Number} Renvoie le volume audio, compris entre 0 et 100, de l'abonné.
`getCaptionsTranslationLanguage() → {CaptionsLanguageCode null}` Renvoie le code de langue de traduction des sous-titres actuellement utilisé pour cet abonné.
getImgData() → {String} Renvoie la chaîne de données PNG encodée en base 64 représentant la vidéo de l'abonné.
getRtcStatsReport() → {Promise} Renvoie une promesse qui, en cas de réussite, se résout en un objet RtcStatsReport correspondant au flux auquel on est abonné.
getStats(completionHandler) → {Promise.<SubscriberStats>} Renvoie les informations relatives à la qualité du flux de l'abonné, notamment : - Nombre total de paquets audio et vidéo perdus - Nombre total de paquets audio et vidéo reçus - Nombre total d'octets audio et vidéo reçus - Résolution vidéo effective reçue (via videoWidth() et videoHeight()) - Fréquence d'images réelle de la vidéo décodée (via video.
getStyle() → {Object} Renvoie un objet dont les propriétés définissent les contrôles actuels de l'interface utilisateur de l'abonné.
isAudioBlocked() Indique si le son de l'abonné est bloqué en raison de la politique de lecture automatique du son du navigateur.
isSubscribedToCaptions() Si l'abonné bénéficie ou non du sous-titrage.
off(type, handler, context) → {Object} Supprime un ou plusieurs gestionnaires d'événements.
on(type, handler, context) → {EventDispatcher} Ajoute une fonction de gestion d'événements pour un ou plusieurs événements.
once(type, handler, context) → {Object} Ajoute une fonction de gestion d'événements pour un ou plusieurs événements.
removeEventListener(type, listener, context) Obsolète.
restrictFrameRate(value) → {Subscriber} Limite la fréquence d'images du flux vidéo de l'abonné, lorsque vous transmettez true.
setAudioMediaProcessorConnector(mediaProcessorConnector) → {Promise} Définit un MediaProcessorConnector pour la piste audio de l'abonné.
setAudioVolume(value) → {Subscriber} Permet de régler le volume audio de l'abonné, entre 0 et 100.
setCaptionsTranslationLanguage(langCode) Définit la langue préférée pour la traduction des sous-titres pour cet abonné.
setPreferredFrameRate(frameRate) → {Promise.<void>} Définit la fréquence d'images souhaitée pour la vidéo de l'abonné.
setPreferredResolution(resolution) → {Promise.<void>} Définit la résolution souhaitée pour la vidéo de l'abonné.
setStyle(style, value) → {Subscriber} Définit les propriétés qui déterminent l'apparence de certains contrôles de l'interface utilisateur de l'abonné.
setVideoMediaProcessorConnector(mediaProcessorConnector) → {Promise} Définit un MediaProcessorConnector pour la piste vidéo de l'abonné.
subscribeToAudio(value) → {Subscriber} Active ou désactive le son.
subscribeToCaptions(value) → {Promise.<void>} Active ou désactive les sous-titres.
subscribeToVideo(value) → {Subscriber} Active ou désactive la vidéo.
videoHeight() → {Number} Renvoie la hauteur réelle reçue, en pixels, de la vidéo de l'abonné.
videoWidth() → {Number} Renvoie la largeur réelle reçue, en pixels, de la vidéo de l'abonné.

addEventListener(type, listener, context)

Paramètres :
Nom Type Description
type Chaîne La chaîne de caractères identifiant le type d'événement.
listener fonction La fonction à appeler lorsque l'objet déclenche l'événement.
context Objet (Facultatif) Définit la valeur de this dans la fonction de gestion des événements.

Déclassé — utilisation on() ou une fois() au lieu de cela.

Cette méthode permet d'enregistrer une méthode en tant qu'écouteur d'événement pour un événement spécifique.

Si aucun gestionnaire n'est enregistré pour un événement, celui-ci est ignoré localement. Si la fonction d'écoute d'événement n'existe pas, l'événement est ignoré localement.

Lance une exception si le listener Le nom n'est pas valide.

Voir : : - on() - une fois() - Evénements

getAudioVolume() → {Number}

Renvoie le volume audio, compris entre 0 et 100, de l'abonné.

En général, on utilise cette méthode en association avec la setAudioVolume() méthode.

Voir : : - setAudioVolume()

Retours :

Le volume sonore, compris entre 0 et 100, de l'abonné.

getCaptionsTranslationLanguage() → {CaptionsLanguageCode|null}

Renvoie le code de la langue de traduction des légendes actuellement définie pour cet abonné. Si aucune langue de traduction n'est définie, renvoie null pour indiquer que la langue par défaut est utilisée.

Il s'agit d'une fonctionnalité en version bêta privée.

Retours :

Le code de langue actuellement défini pour la traduction des sous-titres, ou null si c'est la valeur par défaut.

getImgData() → {String}

Renvoie la chaîne de données PNG encodée en base 64 représentant la vidéo de l'abonné.

Vous pouvez utiliser cette chaîne de caractères comme valeur pour un schéma d'URL de données transmis au paramètre « src » d' un fichier image, comme dans l'exemple suivant :

 var imgData = subscriber.getImgData();

 var img = document.createElement("img");
 img.setAttribute("src", "data:image/png;base64," + imgData);
 var imgWin = window.open("about:blank", "Screenshot");
 imgWin.document.write("<body></body>");
 imgWin.document.body.appendChild(img);
Retours :

La chaîne encodée en base 64. Renvoie une chaîne vide s'il n'y a pas de vidéo.

getRtcStatsReport() → {Promise}

Renvoie une promesse qui, en cas de réussite, se résout en un objet RtcStatsReport pour le flux auquel on est abonné. (Voir Rapport RTCStats.)

La Promesse sera rejetée dans les conditions suivantes :

  • Le navigateur ne prend pas en charge cette méthode (par exemple, dans Chrome version 57 et antérieures, qui ne prennent pas en charge la RTCPeerConnection.getStats() (norme).
  • Les PeerConnection car l'abonné n'est pas connecté.

Voir : : - Publisher.getRtcStatsReport()

Retours :

Une promesse qui est résolue lorsque l'opération s'achève avec succès. En cas d'erreur, la promesse est rejetée.

getStats(completionHandler) → {Promise.<SubscriberStats>}

Renvoie les informations relatives à la qualité du flux de l'abonné, notamment les éléments suivants :

  • Nombre total de paquets audio et vidéo perdus
  • Nombre total de paquets audio et vidéo reçus
  • Nombre total d'octets audio et vidéo reçus
  • Résolution vidéo effective reçue (via videoWidth() et videoHeight())
  • Fréquence d'images réelle de la vidéo décodée (via video.decodedFrameRate)

Vous pouvez publier un flux de test, vous y abonner (sur le client de publication) et utiliser cette méthode pour vérifier sa qualité. En fonction de la qualité du flux, vous pouvez déterminer quelle résolution vidéo est prise en charge et si les conditions permettent la transmission de la vidéo ou de l’audio. Vous pouvez ensuite publier un flux adapté en fonction des résultats. Lorsque vous utilisez cette méthode pour tester un flux publié par votre propre client, définissez le testNetwork à la propriété true dans les options que vous transmettez à la Session.subscribe() méthode. À titre d'exemple, voir le test-du-réseau-opentok projet sur GitHub.

Vous pouvez également utiliser ces statistiques pour faire en sorte qu'un abonné passe en mode audio uniquement si la perte de paquets audio atteint un certain seuil. Si vous choisissez cette option, vous devez configurer le subscriber de la propriété audioFallback à l'objet false lorsque vous initialisez des objets Publisher pour la session. Cela empêche le Vonage Video Media Router d'utiliser sa propre implémentation de basculement en mode audio seul. (Consultez la documentation relative au OT.initPublisher() méthode.)

Paramètres :
Nom Type Description
completionHandler fonction Une fonction facultative qui prend les paramètres suivants : - error (Erreur) — La propriété « error » est définie si le client n'est pas connecté. Une fois l'appel à la méthode terminé avec succès, cette propriété n'est plus définie. - stats (Objet) — Un objet présentant les propriétés suivantes : - audio.bytesReceived (Nombre) — Nombre total d'octets audio reçus par l'abonné - audio.packetsLost (Nombre) — Nombre total de paquets audio qui ne sont pas parvenus à l'abonné - audio.packetsReceived (Nombre) — Nombre total de paquets audio reçus par l'abonné - timestamp (Numbers) — L'horodatage, en millisecondes depuis l'époque Unix, correspondant au moment où ces statistiques ont été recueillies - video.bytesReceived (Nombre) — Nombre total d'octets de vidéo reçus par l'abonné - video.packetsLost (Nombre) — Nombre total de paquets vidéo qui n'ont pas atteint l'abonné - video.packetsReceived (Nombre) — Nombre total de paquets vidéo reçus par l'abonné - video.frameRate (Numbers) — Fréquence d'images moyenne actuelle de la vidéo. Cette propriété est obsolète et sera supprimée à l'avenir. Veuillez utiliser à la place la propriété video.decodedFrameRate propriété. - video.decodedFrameRate (Numbers) — La fréquence d'images de la vidéo décodée (en images par seconde) - video.codec (Chaîne) — Le codec vidéo utilisé par cet abonné - video.pauseCount (Nombre) — Nombre de fois où la lecture de la vidéo de l'abonné a été mise en pause. Une pause est détectée si aucune image n'est affichée pendant plus de 5 secondes - video.totalPausesDuration (Numbers) — Durée cumulée (en millisecondes) de toutes les pauses détectées lors de la lecture de la vidéo - video.freezeCount (Nombre) — Nombre de fois où la vidéo de l'abonné s'est figée. Un « gel » est défini en fonction de la Spécification des statistiques WebRTC - video.totalFreezesDuration (Numbers) — Durée cumulée (en millisecondes) de tous les blocages détectés lors de la lecture vidéo de l'abonné - senderStats.connectionMaxAllocatedBitrate (Numbers) — Débit binaire maximal pouvant être estimé pour la connexion de l'expéditeur, en bps (bits par seconde) - senderStats.connectionEstimatedBandwidth (Numbers) — Estimation actuelle de la bande passante de la connexion de l'expéditeur, en bps (bits par seconde) - transport.connectionEstimatedBandwidth (Numbers) — Bande passante disponible estimée pour la connexion locale, en bits par seconde (bps) - transport.networkCondition (Chaîne) — État actuel de la connexion locale. Les valeurs possibles sont les suivantes : unknown, critical, warning, fair, good et excellent. - transport.networkConditionReason (Chaîne de caractères) — Principale cause affectant l'état du réseau local. Les valeurs possibles sont les suivantes : none, unknown, bandwidth et packetLoss. - remotePublisherTransport.connectionEstimatedBandwidth (Numbers) — Bande passante disponible estimée pour la connexion de l'éditeur distant, en bits par seconde (bps) - remotePublisherTransport.networkCondition (Chaîne) — État actuel de la connexion réseau avec l'éditeur distant. Les valeurs possibles sont les suivantes : unknown, critical, warning, fair, good et excellent. - remotePublisherTransport.networkConditionReason (Chaîne) — Principale raison affectant l'état du réseau de l'éditeur distant. Les valeurs possibles sont : none, unknown, bandwidth et packetLoss. - networkDegradationSource (Chaîne) — En cas de dégradation du réseau, indique quelle partie en est à l'origine. Les valeurs possibles sont : none, bothOrUnclear, local et remote.

Voir : : - Publisher.getStats() - Publisher.getRtcStatsReport()

Retours :

getStyle() → {Object}

Renvoie un objet dont les propriétés définissent les contrôles actuels de l'interface utilisateur de l'abonné. Vous pouvez modifier les propriétés de cet objet et le transmettre à la setStyle() méthode de l'objet Subscriber. (Voir la documentation relative à setStyle() pour voir les styles qui définissent cet objet.)

Voir : : - setStyle()

Retours :

L'objet qui définit les styles de l'abonné.

isAudioBlocked()

Indique si le son de l'abonné est bloqué en raison de la politique de lecture automatique du son du navigateur.

Voir : : - OT.unblockAudio() - Le audio bloqué et audioUnblocked Événements réservés aux abonnés - Le style.audioBlockedDisplayMode de la propriété options du paramètre Session.subscribe() méthode

isSubscribedToCaptions()

Si l'abonné reçoit ou non les sous-titres. Cette propriété peut changer si l'abonné active ou désactive les sous-titres (en appelant la fonction Subscriber.subscribeToCaptions() méthode). La valeur par défaut est la hasCaptions propriété de l'éditeur du flux au moment de l'initialisation de l'abonné (voir la Propriété Stream.hasCaptions).

Vous pouvez définir la valeur initiale de cette propriété en configurant le subscribeToCaptions propriété de la options du paramètre Session.subscribe() méthode.

Voir : : - Subscriber.subscribeToCaptions() - Session.subscribe()

off(type, gestionnaire, contexte) → {Object}

Supprime un ou plusieurs gestionnaires d'événements.

Si vous transmettez un nom d'événement et une méthode de gestion, cette dernière est supprimée pour cet événement :

obj.off("eventName", eventHandler);

Si vous transmettez plusieurs noms d'événements et une méthode de gestion, celle-ci est supprimée pour ces événements :

obj.off("eventName1 eventName2", eventHandler);

Si vous transmettez un ou plusieurs noms d'événements et non méthode de gestionnaire, tous les gestionnaires sont supprimés pour ces événements :

obj.off("event1Name event2Name");

Si vous ne passez aucun argument, tous les gestionnaires d'événements sont supprimés pour tous les événements déclenchés par l'objet :

obj.off();

Cette méthode prend également en charge une syntaxe alternative, dans laquelle le premier paramètre est un objet qui constitue une table de correspondance entre les noms d'événements et les fonctions de gestion, et le deuxième paramètre (facultatif) est le contexte utilisé pour chaque gestionnaire :

obj.off(
   {
      eventName1: event1Handler,
      eventName2: event2Handler
   });
Paramètres :
Nom Type Description
type Chaîne (Facultatif) La chaîne de caractères identifiant le type d'événement. Vous pouvez utiliser un espace pour spécifier plusieurs événements, comme dans « accessAllowed accessDenied accessDialogClosed ». Si vous n'indiquez aucun type valeur (ou d'autres arguments), tous les gestionnaires d'événements sont supprimés pour l'objet.
handler fonction (Facultatif) La fonction de gestion d'événement à supprimer. La fonction de gestion doit correspondre à l'objet fonction qui a été transmis à on(). Faites attention aux fonctions auxiliaires telles que bind() qui renvoient une nouvelle fonction lorsqu’elles sont appelées. Si vous ne transmettez aucun handler, tous les gestionnaires d'événements sont supprimés pour l'événement spécifié type.
context Objet (Facultatif) Si vous spécifiez un context, le gestionnaire d'événements est supprimé pour tous les événements spécifiés et tous les gestionnaires qui utilisent le contexte spécifié. (Le contexte doit correspondre au contexte transmis à on().)

Voir : : - on() - une fois() - Evénements

Retours :

L'objet qui a déclenché l'événement.

on(type, handler, context) → {EventDispatcher}

Ajoute une fonction de gestion d'événements pour un ou plusieurs événements.

Le code suivant ajoute un gestionnaire d'événement pour un événement :

obj.on("eventName", function (event) {
    // This is the event handler.
});

Si vous transmettez plusieurs noms d'événements et une méthode de gestion, celle-ci est enregistrée pour chacun de ces événements :

obj.on("eventName1 eventName2",
       function (event) {
           // This is the event handler.
       });

Vous pouvez également passer un troisième context paramètre (facultatif) permettant de définir la valeur de this dans la méthode de gestionnaire :

obj.on("eventName",
       function (event) {
           // This is the event handler.
       },
       obj);

La méthode prend également en charge une syntaxe alternative, dans laquelle le premier paramètre est un objet représentant une table associative contenant les noms d'événements et les fonctions de gestion, et le deuxième paramètre (facultatif) correspond au contexte utilisé pour chaque gestionnaire :

obj.on(
   {
      eventName1: function (event) {
              // This is the handler for eventName1.
          },
      eventName2:  function (event) {
              // This is the handler for eventName2.
          }
   },
   obj);

Si vous n'ajoutez pas de gestionnaire pour un événement, celui-ci est ignoré au niveau local.

Paramètres :
Nom Type Description
type Chaîne Chaîne de caractères identifiant le type d'événement. Vous pouvez spécifier plusieurs noms d'événements dans cette chaîne, en les séparant par un espace. Le gestionnaire d'événements traitera chacun de ces événements.
handler fonction La fonction de gestion destinée à traiter l'événement. Cette fonction prend l'objet événement en paramètre.
context Objet (Facultatif) Définit la valeur de this dans la fonction de gestion des événements.

Voir : : - off() - une fois() - Evénements

Retours :

L'objet EventDispatcher.

once(type, handler, context) → {Object}

Ajoute une fonction de gestion d'événements pour un ou plusieurs événements. Une fois que la fonction de gestion est appelée, la méthode de gestion spécifiée est supprimée en tant que gestionnaire de cet événement. (Lorsque vous utilisez la on() méthode permettant d'ajouter un gestionnaire d'événements ; ce gestionnaire est pas est supprimé lorsqu’il est appelé.) Le once() Cette méthode équivaut à appeler la on() méthode et appel off() lors de la première invocation du gestionnaire.

Le code suivant ajoute un gestionnaire d'événement ponctuel pour un événement :

obj.once("eventName", function (event) {
   // This is the event handler.
});

Si vous transmettez plusieurs noms d'événements et une méthode de gestion, celle-ci est enregistrée pour chacun de ces événements :

obj.once("eventName1 eventName2"
         function (event) {
             // This is the event handler.
         });

Vous pouvez également passer un troisième context paramètre (facultatif) permettant de définir la valeur de this dans la méthode de gestionnaire :

obj.once("eventName",
         function (event) {
             // This is the event handler.
         },
         obj);

La méthode prend également en charge une syntaxe alternative, dans laquelle le premier paramètre est un objet qui constitue une table de correspondance entre les noms d'événements et les fonctions de gestion, et le deuxième paramètre (facultatif) correspond au contexte utilisé pour chaque gestionnaire :

obj.once(
   {
      eventName1: function (event) {
                 // This is the event handler for eventName1.
          },
      eventName2:  function (event) {
                 // This is the event handler for eventName1.
          }
   },
   obj);
Paramètres :
Nom Type Description
type Chaîne Chaîne identifiant le type d'événement. Vous pouvez spécifier plusieurs noms d'événements dans cette chaîne, en les séparant par un espace. Le gestionnaire d'événements traitera la première occurrence de ces événements. Une fois le premier événement survenu, le gestionnaire est supprimé (pour tous les événements spécifiés).
handler fonction La fonction de gestion destinée à traiter l'événement. Cette fonction prend l'objet événement en paramètre.
context Objet (Facultatif) Définit la valeur de this dans la fonction de gestion des événements.

Voir : : - on() - off() - Evénements

Retours :

L'objet qui a déclenché l'événement.

removeEventListener(type, listener, context)

Paramètres :
Nom Type Description
type Chaîne La chaîne de caractères identifiant le type d'événement.
listener fonction La fonction d'écouteur d'événement à supprimer.
context Objet (Facultatif) Si vous spécifiez un context, le gestionnaire d'événements est supprimé pour tous les événements spécifiés et tous les écouteurs d'événements qui utilisent le contexte spécifié. (Le contexte doit correspondre au contexte transmis à addEventListener().)

Déclassé — utilisation off() au lieu de cela.

Supprime un écouteur d'événement pour un événement spécifique.

Lance une exception si le listener Le nom n'est pas valide.

Voir : : - off() - Evénements

restrictFrameRate(valeur) → {Abonné}

Limite la fréquence d'images du flux vidéo de l'abonné, lorsque vous transmettez true. Lorsque vous transmettez false, la fréquence d'images du flux vidéo n'est pas limitée.

Lorsque la fréquence d'images est limitée, l'image vidéo de l'abonné s'actualise une fois par seconde, voire moins.

Cette fonctionnalité n'est disponible que dans les sessions utilisant le routeur multimédia de la Video API Vonage (sessions avec le mode média (réglé sur « routed »), mais pas dans les sessions où le mode multimédia est réglé sur « relayed ». Dans les sessions « relayed », l'appel de cette méthode n'a aucun effet.

La limitation de la fréquence d'images de l'abonné présente les avantages suivants :

  • Il réduit l'utilisation de l'unité centrale.
  • Cela permet de réduire la bande passante réseau utilisée.
  • Il vous permet de vous abonner à plusieurs flux simultanément.

La réduction de la fréquence d'images d'un abonné n'a aucune incidence sur la fréquence d'images de la vidéo dans les autres clients.

Paramètres :
Nom Type Description
value Booléen Faut-il limiter la fréquence d'images de la vidéo de l'abonné (true) ou non (false).
Retours :

L'objet `Subscriber`. Cela vous permet d'enchaîner des appels de méthodes, comme dans l'exemple suivant :

mySubscriber.restrictFrameRate(false).subscribeToAudio(true);

setAudioMediaProcessorConnector(mediaProcessorConnector) → {Promise}

Définit un MediaProcessorConnector pour la piste audio de l'abonné. Un abonné ne peut avoir qu'une seule piste audio. Connecteur de processeur de médias appliqué à un moment donné. Lorsque vous configurez un nouveau connecteur, le connecteur audio précédemment configuré est supprimé.

Remarque : Les MediaProcessors ne sont pris en charge que dans les versions récentes de Chrome, Electron, Opera, Edge, Samsung Internet et WebView Android. Ils ne sont pas pris en charge dans les autres navigateurs (non basés sur Chromium) ni sur iOS. Vous pouvez vérifier si le client prend en charge cette fonctionnalité en appelant la méthode OT.hasMediaProcessorSupport('audio') méthode.

L'appel de cette méthode génère une erreur (la Promise renvoyée par la méthode est rejetée) dans les conditions suivantes :

  • Une erreur s'est produite lors de la récupération de la piste traitée à partir du MediaProcessorConnector.

Vous pouvez effacer le connecteur actuel en appelant cette méthode avec null.

Pour plus d'informations, voir le Utilisation de la bibliothèque Vonage Media Processor guide du développeur.

Paramètres :
Nom Type Description
mediaProcessorConnector Connecteur de processeur de médias Une instance de MediaProcessorConnector. Voir la section Documentation de la bibliothèque Vonage Media Processor.

Voir : : - OT.hasMediaProcessorSupport('audio')

Retours :

Une promesse qui est résolue lorsque l'opération s'achève avec succès. En cas d'erreur, la promesse est rejetée et aucun connecteur n'est défini.

setAudioVolume(value) → {Abonné}

Permet de régler le volume audio de l'abonné, entre 0 et 100.

Vous pouvez définir le volume initial lorsque vous appelez la fonction Session.subscribe() méthode. Transmettez un audioVolume de la propriété properties paramètre de la méthode.

Paramètres :
Nom Type Description
value Numbers Le volume sonore, compris entre 0 et 100.

Voir : : - getAudioVolume() - Session.subscribe()

Retours :

L'objet `Subscriber`. Cela vous permet d'enchaîner des appels de méthodes, comme dans l'exemple suivant :

mySubscriber.setAudioVolume(50).setStyle(newStyle);

setCaptionsTranslationLanguage(langCode)

Définit la langue préférée pour la traduction des sous-titres pour cet abonné.

Il s'agit d'une fonctionnalité en version bêta privée.

Paramètres :
Nom Type Description
langCode Code de langue des sous-titres null Code de langue vers lequel traduire les sous-titres. Passer null pour utiliser la langue par défaut de la session (pas de traduction).

setPreferredFrameRate(frameRate) → {Promise.<void>}

Définit la fréquence d'images souhaitée pour la vidéo de l'abonné.

La réduction de la fréquence d'images par défaut diminue la qualité vidéo chez le client abonné, mais elle réduit également la charge sur le réseau et le processeur. Vous pouvez choisir d'utiliser une fréquence d'images plus faible pour un abonné à un flux jugé moins important que d'autres flux.

Cette méthode ne s'applique que lors de l'abonnement à un flux utilisant le fonctionnalité vidéo adaptative. La vidéo adaptative est disponible :

  • Uniquement dans les sessions qui utilisent le routeur multimédia de la Video API Vonage (sessions avec le média mode sur routé).
  • Uniquement pour les flux publiés par des clients prenant en charge la vidéo évolutive : les clients utilisant le SDK iOS de la Video API Vonage (sur certains appareils), le SDK Android de la Video API Vonage (sur certains appareils) ou OpenTok.js dans Chrome et Safari.

Dans les flux qui n'utilisent pas la vidéo adaptative, l'appel de cette méthode n'a aucun effet.

Remarque : La fréquence d'images des flux vidéo adaptatifs s'ajuste automatiquement pour chaque abonné, en fonction des conditions du réseau et de l'utilisation du processeur, même si vous n'appelez pas cette méthode. Appelez cette méthode si vous souhaitez définir une fréquence d'images maximale pour cet abonné.

Toutes les fréquences d'images ne sont pas nécessairement disponibles pour un abonné. Lorsque vous définissez la fréquence d'images souhaitée pour l'abonné, OpenTok.js sélectionne la meilleure fréquence d'images disponible correspondant à votre paramètre. Les fréquences d'images disponibles dépendent de la valeur de la propriété de l'objet « Subscriber » stream.frameRate propriété, qui représente la valeur maximale disponible pour le flux. Les fréquences d'images réelles disponibles dépendent, de manière dynamique, des ressources réseau et CPU dont disposent l'éditeur et l'abonné.

Vous pouvez définir la fréquence d'images par défaut en configurant le paramètre preferredFrameRate propriété de la options que vous passez dans l'objet Session.subscribe() méthode.

Paramètres :
Nom Type Description
frameRate Numbers Réglez ce paramètre sur la fréquence d'images souhaitée (en images par seconde). Réglez ce paramètre sur null pour supprimer la fréquence d'images souhaitée ; le client utilisera alors la fréquence d'images la plus élevée disponible.

Voir : : - Abonné.setPreferredResolution() - Session.subscribe()

Retours :

Une promesse qui se résout lorsque la fréquence d'images souhaitée a été correctement appliquée, ou qui est rejetée avec un Error dans les conditions suivantes :

  • L'abonné a été supprimé ou n'est pas encore connecté à un éditeur.
  • La session utilise le mode multimédia « peer-to-peer », qui ne prend pas en charge cette fonctionnalité.
  • La mise à jour du flux sous-jacent a échoué.

setPreferredResolution(resolution) → {Promise.<void>}

Définit la résolution souhaitée pour la vidéo de l'abonné.

La réduction de la résolution privilégiée diminue la qualité vidéo chez le client abonné, mais elle réduit également la charge sur le réseau et l'utilisation du processeur. Vous pouvez choisir d'utiliser une résolution inférieure en fonction des dimensions de la vidéo de l'abonné sur la page Web. Vous pouvez également choisir d'attribuer une résolution inférieure à un abonné dont le flux est moins important (et plus petit) que les autres flux.

Cette méthode ne s'applique que lors de l'abonnement à un flux utilisant le fonctionnalité vidéo adaptative. La vidéo adaptative est disponible :

  • Uniquement dans les sessions qui utilisent le routeur multimédia de la Video API Vonage (sessions avec le média mode sur routé).
  • Uniquement pour les flux publiés par des clients prenant en charge la vidéo évolutive : les clients utilisant le SDK iOS de la Video API Vonage (sur certains appareils), le SDK Android de la Video API Vonage (sur certains appareils) ou OpenTok.js dans Chrome et Safari.

Dans les flux qui n'utilisent pas la vidéo adaptative, l'appel de cette méthode n'a aucun effet.

Remarque : La résolution des flux vidéo adaptatifs s'ajuste automatiquement pour chaque abonné, en fonction des conditions du réseau et de l'utilisation du processeur, même si vous n'appelez pas cette méthode. Appelez cette méthode si vous souhaitez définir une résolution maximale pour cet abonné.

Dans les flux qui n'utilisent pas la vidéo adaptative, l'appel de cette méthode n'a aucun effet.

Toutes les fréquences d'images ne sont pas nécessairement disponibles pour un abonné. Lorsque vous définissez la résolution souhaitée pour l'abonné, OpenTok.js sélectionne la meilleure résolution disponible correspondant à votre paramètre. Les résolutions disponibles dépendent de la valeur de la propriété de l'objet Subscriber stream.resolution propriété, qui correspond à la résolution maximale disponible pour le flux. Les résolutions effectivement disponibles dépendent, de manière dynamique, des ressources réseau et CPU dont disposent l'éditeur et l'abonné.

Vous pouvez définir la résolution par défaut en configurant le paramètre preferredResolution de la propriété options que vous passez dans l'objet Session.subscribe() méthode.

Remarque : Si vous définissez la résolution préférée initiale sur "auto" lors de l'appel Session.subscribe(), en appelant setPreferredResolution() l'opération échouera sans message d'erreur, et vous recevrez un avertissement.

Paramètres :
Nom Type Description
resolution Objet Définissez ceci comme un objet comportant deux propriétés : width et height (les deux nombres), par exemple {width: 320, height: 240}. Réglez cette valeur sur null pour désactiver la résolution par défaut ; le client utilisera alors la résolution la plus élevée disponible.

Voir : : - Abonné.setPreferredFrameRate() - Session.subscribe()

Retours :

Une promesse qui se résout lorsque la résolution préférée a été appliquée avec succès, ou qui est rejetée avec un Error dans les conditions suivantes :

  • L'abonné a été initialisé avec preferredResolution: 'auto'.
  • La valeur 'auto' est transmis directement à cette méthode.
  • L'abonné a été supprimé ou n'est pas encore connecté à un éditeur.
  • La session utilise le mode multimédia « peer-to-peer », qui ne prend pas en charge cette fonctionnalité.

setStyle(style, valeur) → {Abonné}

Définit les propriétés qui déterminent l'apparence de certains contrôles de l'interface utilisateur de l'abonné.

Vous pouvez transmettre soit un paramètre, soit deux paramètres à cette méthode.

Si vous passez un paramètre, style, il s'agit d'un objet qui présente les propriétés suivantes :

  • audioBlockedDisplayMode (Chaîne) — Indique s'il faut afficher l'icône par défaut signalant le blocage du son dans la section « Abonnés » (dans les navigateurs où la lecture automatique du son est bloquée). Les valeurs possibles sont : "auto" (par défaut, l'icône s'affiche lorsque le son est désactivé) et "off" (l'icône n'apparaît pas). Définissez ce paramètre sur "off" si vous souhaitez afficher votre propre élément d'interface utilisateur indiquant que le son est bloqué. En réponse à un élément HTML déclenchant un click événement, vous pouvez appeler la fonction OT.unblockAudio() méthode permettant de lancer la lecture audio pour cet abonné et tous les autres abonnés bloqués.
  • audioLevelDisplayMode (Chaîne) — Comment afficher l'indicateur de niveau audio. Les valeurs possibles sont : "auto" (l'icône s'affiche lorsque la vidéo est désactivée), "off" (l'indicateur n'apparaît pas), et "on" (l'indicateur est toujours affiché).
  • backgroundImageURI (Chaîne) — Un URI correspondant à une image à afficher comme image d'arrière-plan lorsqu'aucune vidéo n'est affichée. (Il se peut qu'aucune vidéo ne s'affiche si vous appelez subscribeToVideo(false) sur l'objet Publisher). Vous pouvez transmettre une URI http ou https pointant vers un fichier PNG, JPEG ou GIF non animé. Vous pouvez également utiliser la data schéma URI (au lieu de http ou https) et transmettre des données PNG encodées en base-64, telles que celles obtenues à partir du Subscriber.getImgData() méthode (par exemple, vous pourriez appeler mySubscriber.setStyle("backgroundImageURI", mySubscriber.getImgData())). Si l'URL ou les données de l'image ne sont pas valides, la propriété est ignorée (la tentative de définition de l'image échoue sans message d'erreur). L'arrière-plan actuel sera supprimé si aucune image n'est fournie et les initiales s'afficheront si elles ont été définies au préalable.
  • buttonDisplayMode (Chaîne) — Comment afficher les commandes du haut-parleur. Les valeurs possibles sont : "auto" (les commandes s'affichent lors de la première affichage du flux et lorsque l'utilisateur passe la souris sur l'affichage), "off" (les commandes ne s'affichent pas), et "on" (les commandes sont toujours affichées).
  • nameDisplayMode (Chaîne) — Indique s'il faut afficher le nom du flux. Les valeurs possibles sont les suivantes : "auto" (le nom s'affiche lors de la première affichage du flux et lorsque l'utilisateur passe la souris sur l'affichage), "off" (le nom n'est pas affiché), et "on" (le nom s'affiche toujours).
  • videoDisabledDisplayMode (Chaîne) — Indique s'il faut afficher l'indicateur « vidéo désactivée » et les icônes d'avertissement de désactivation de la vidéo pour un abonné. Ces icônes indiquent que la vidéo a été désactivée (ou risque de l'être, dans le cas de l'icône d'avertissement) en raison d'une mauvaise qualité de diffusion. Les valeurs possibles sont : "auto" (les icônes s'affichent automatiquement lorsque la vidéo en cours de lecture est désactivée ou risque de l'être en raison d'une mauvaise qualité de diffusion), "off" (ne pas afficher les icônes), et "on" (afficher les icônes).

Par exemple, le code suivant transmet un paramètre à la méthode :

mySubscriber.setStyle({nameDisplayMode: "off"});

Si vous passez deux paramètres, style et value, il s'agit de paires clé-valeur qui définissent une propriété du style d'affichage. Par exemple, le code suivant transmet deux valeurs de paramètres à la méthode :

mySubscriber.setStyle("nameDisplayMode", "off");

Vous pouvez définir les paramètres initiaux lorsque vous appelez la fonction Session.subscribe() méthode. Passez un style bien immobilier dans le cadre de la properties paramètre de la méthode.

L'objet OT déclenche un exception même si vous transmettez un style non valide à la méthode. Le code La propriété de l'objet ExceptionEvent est définie sur 1011.

Paramètres :
Nom Type Description
style Objet Soit un objet contenant les propriétés qui définissent le style, soit une chaîne de caractères définissant cette propriété de style unique à définir.
value Chaîne La valeur à définir pour le style a été transmis. Ne transmettez une valeur pour ce paramètre que si la valeur du style Le paramètre est une chaîne de caractères.

Voir : : - getStyle() - setStyle() - Session.subscribe()

Retours :

L'objet « Subscriber ».

setVideoMediaProcessorConnector(mediaProcessorConnector) → {Promise}

Définit un MediaProcessorConnector pour la piste vidéo de l'abonné. Un abonné ne peut disposer que d'une seule piste vidéo. Connecteur de processeur de médias appliqué à un moment donné. Lorsque vous configurez un nouveau connecteur, le connecteur vidéo précédemment configuré est supprimé.

Remarque : Les MediaProcessors ne sont pris en charge que dans les versions récentes de Chrome, Firefox, Electron, Opera, Edge, Samsung Internet, WebView Android, ainsi que dans les dernières versions de Safari et de WebView iOS. Vous pouvez vérifier si le client prend en charge cette fonctionnalité en appelant la méthode OT.hasMediaProcessorSupport('vidéo') méthode.

L'appel de cette méthode génère une erreur (la Promise renvoyée par la méthode est rejetée) dans les conditions suivantes :

  • Il n'y a pas de dispositifs d'entrée vidéo (caméras) disponibles.
  • Une erreur s'est produite lors de l'acquisition de la vidéo à partir du périphérique d'entrée vidéo.
  • Une erreur s'est produite lors de la récupération de la piste traitée à partir du MediaProcessorConnector.

Vous pouvez effacer le connecteur actuel en appelant cette méthode avec null.

Pour plus d'informations, voir le Utilisation de la bibliothèque Vonage Media Processor guide du développeur.

Paramètres :
Nom Type Description
mediaProcessorConnector Connecteur de processeur de médias Une instance de MediaProcessorConnector. Voir la section Documentation de la bibliothèque Vonage Media Processor.

Voir : : - OT.hasMediaProcessorSupport('vidéo')

Retours :

Une promesse qui est résolue lorsque l'opération s'achève avec succès. En cas d'erreur, la promesse est rejetée et aucun connecteur n'est défini.

subscribeToAudio(value) → {Abonné}

Active ou désactive le flux audio. Lance l'abonnement au flux audio (s'il est disponible et que l'utilisateur n'y est pas encore abonné) lorsque le value est true; met fin à l'abonnement au flux audio (s'il est actuellement actif) lorsque le value est false.

Remarque : Cette méthode n'affecte que la lecture locale du flux audio. Elle n'a aucune incidence sur le flux audio des autres connexions abonnées au même flux. Si l'éditeur ne diffuse pas de flux audio, l'activation de l'audio de l'abonné n'aura aucun effet concret.

Paramètres :
Nom Type Description
value Booléen Faut-il s'abonner aux contenus audio (true) ou non (false).

Voir : : - subscribeToVideo() - Session.subscribe() - StreamPropertyChangedEvent

Retours :

L'objet `Subscriber`. Cela vous permet d'enchaîner des appels de méthodes, comme dans l'exemple suivant :

mySubscriber.subscribeToAudio(true).subscribeToVideo(false);

subscribeToCaptions(valeur) → {Promise.<void>}

Active ou désactive les sous-titres. Lance l'abonnement aux sous-titres (s'ils sont disponibles et que vous n'y êtes pas encore abonné) lorsque le value est true; met fin à l'abonnement aux sous-titres (si celui-ci est actuellement actif) lorsque le value est false.

La valeur initiale peut être définie en configurant le subscribeToCaptions propriété de la options du paramètre Session.subscribe() méthode. La valeur par défaut est la hasCaptions propriété de l'éditeur du flux au moment de l' initialisation de l'abonné (voir la Propriété Stream.hasCaptions).

Pour plus d'informations, voir le Sous-titres en direct guide du développeur.

Paramètres :
Nom Type Description
value Booléen Faut-il s'abonner aux sous-titres (true) ou non (false).

Voir : : - isSubscribedToCaptions() - légendeReçu événement - StreamPropertyChangedEvent - Session.subscribe()

Retours :

Une promesse qui se résout lorsque le serveur a accusé réception de la mise à jour du canal de légende. La promesse est rejetée si une erreur survient lors de l'envoi de la mise à jour.

subscribeToVideo(value) → {Abonné}

Active ou désactive la vidéo. Lance l'abonnement à la vidéo (si celle-ci est disponible et que l'utilisateur n'y est pas encore abonné) lorsque le value est true; met fin à l'abonnement à la vidéo (si celle-ci fait actuellement l'objet d'un abonnement) lorsque le value est false.

Remarque : Cette méthode n'affecte que la lecture locale de la vidéo. Elle n'a aucune incidence sur la vidéo pour les autres connexions abonnées au même flux. Si l'éditeur ne diffuse pas de vidéo, l'activation de la vidéo de l'abonné n'aura aucun effet concret.

Paramètres :
Nom Type Description
value Booléen Faut-il s'abonner à la vidéo (true) ou non (false).

Voir : : - subscribeToAudio() - Session.subscribe() - StreamPropertyChangedEvent

Retours :

L'objet `Subscriber`. Cela vous permet d'enchaîner des appels de méthodes, comme dans l'exemple suivant :

mySubscriber.subscribeToVideo(true).subscribeToAudio(false);

videoHeight() → {Number}

Renvoie la hauteur réelle reçue, en pixels, de la vidéo de l'abonné. Cette valeur correspond à la résolution décodée du flux vidéo entrant, qui peut différer de la résolution de capture de l'éditeur en raison d'une adaptation liée au réseau ou au processeur, ou du choix de la couche vidéo évolutive . Utilisez cette méthode pour connaître la résolution réelle affichée pour cet abonné.

Pour plus d'informations sur la surveillance de la qualité des cours d'eau, consultez le Observabilité du client guide du développeur.

Voir : : - Subscriber.getStats()

Retours :

La hauteur réelle, en pixels, de la vidéo de l'abonné telle qu'elle est reçue.

videoWidth() → {Number}

Renvoie la largeur réelle reçue, en pixels, de la vidéo de l'abonné. Cette valeur correspond à la résolution décodée du flux vidéo entrant, qui peut différer de la résolution de capture de l'éditeur en raison d'une adaptation au réseau ou au processeur, ou du choix de la couche vidéo évolutive . Utilisez cette méthode pour connaître la résolution réelle affichée pour cet abonné.

Pour plus d'informations sur la surveillance de la qualité des cours d'eau, consultez le Observabilité du client guide du développeur.

Voir : : - Subscriber.getStats()

Retours :

La largeur réelle, en pixels, de la vidéo de l'abonné telle qu'elle est reçue.

Evénements

audio bloqué

Déclenché lorsque le son de l'abonné est bloqué en raison de la politique de lecture automatique du navigateur.

Voir : : - OT.unblockAudio() - Subscriber.isAudioBlocked() - Le audioUnblocked événement - Le style.audioBlockedDisplayMode de la propriété options du paramètre Session.subscribe() méthode)

audioLevelUpdated

Envoyé périodiquement pour indiquer le niveau audio de l'abonné. L'événement est envoyé jusqu'à 60 fois par seconde, selon le navigateur. Le audioLevel propriété de l'événement : le niveau audio, compris entre 0 et 1,0. Voir Événement de mise à jour du niveau audio Pour plus d'informations.

L'exemple suivant permet de régler la valeur d'un élément « meter » qui affiche le volume de l' abonné. Notez que le niveau audio est réglé de manière logarithmique et qu'une moyenne mobile est appliquée :

var movingAvg = null;
subscriber.on('audioLevelUpdated', function(event) {
  if (movingAvg === null || movingAvg <= event.audioLevel) {
    movingAvg = event.audioLevel;
  } else {
    movingAvg = 0.7 * movingAvg + 0.3 * event.audioLevel;
  }

  // 1.5 scaling to map the -30 - 0 dBm range to [0,1]
  var logLevel = (Math.log(movingAvg) / Math.LN10) / 1.5 + 1;
  logLevel = Math.min(Math.max(logLevel, 0), 1);
  document.getElementById('subscriberMeter').value = logLevel;
});

Cet exemple illustre l'algorithme utilisé par l'indicateur de niveau audio par défaut affiché dans un abonné « audio uniquement ».

Voir : : - Événement de mise à jour du niveau audio

audioUnblocked

Envoyé lorsque le son de l'abonné est réactivé après avoir été mis en pause en raison de la politique de lecture automatique du navigateur.

L'audio de l'abonné est débloqué lorsque l'une des situations suivantes se produit :

  • L'utilisateur clique sur l'icône de lecture audio par défaut de l'abonné.
  • Les OT.unblockAudio() La méthode est appelée en réponse à la déclenchement d'un élément HTML un click événement (si vous avez désactivé l'icône par défaut de lecture audio)
  • Le client local accède à la caméra ou au microphone (par exemple, à la suite d'un appel réussi vers OT.initPublisher()).

Voir : : - OT.unblockAudio() - Le audio bloqué événement - Le style.audioBlockedDisplayMode de la propriété options du paramètre Session#subscribe() méthode)

légendeReçu

Envoyé lorsque l'abonné reçoit un sous-titrage provenant du service de transcription. Vous devez d'abord appeler le Subscriber.subscribeToCaptions() méthode (et l'éditeur du flux doit diffuser des sous-titres) avant de recevoir captionReceived événements.

Voir : : - CaptionReceivedEvent - Sous-titrage en direct

connecté

Envoyé lorsque le flux de l'abonné a repris, après que l'abonné a envoyé un disconnected événement.

Voir : : - événement isolé - Événement

détruit

Cet événement est déclenché lorsque l'élément « Subscriber » est supprimé du DOM HTML. Lorsque cet événement est déclenché, vous pouvez choisir de modifier ou de supprimer les éléments du DOM HTML associés à l'abonné.

Pour éviter que l'abonné ne soit supprimé du DOM lorsque le flux est détruit, surveillez l'événement Événement « streamDestroyed » déclenchée par l'objet Session. La streamDestroyed L'événement déclenché par l' objet Session peut être annulé, et l'appel de la méthode preventDefault() La méthode de l' objet événement empêche les abonnés du flux d'être supprimés du DOM HTML.

Voir : : - Événement

déconnecté

Envoyé lorsque le flux de l'abonné a été interrompu.

En réponse à cet événement, vous pouvez afficher une notification dans l'interface utilisateur afin d'informer l' utilisateur que le flux audio-vidéo est temporairement déconnecté et que l'application tente de se reconnecter à celui-ci.

Si le client se reconnecte au flux, l'objet `Subscriber` déclenche un connected événement. Sinon, si le client ne parvient pas à se reconnecter au flux, l'objet `Subscriber` déclenche un destroyed événement.

Voir : : - événement associé - Événement

encryptionSecretMatch

Envoyé lorsqu'il est possible de déchiffrer les données multimédia d'un abonné, car les clés de chiffrement correspondent. Ce message n'est envoyé que s'il y a eu auparavant une incompatibilité de clés.

Voir : : - Événement - non-correspondance du secret de chiffrement événement - OT.initSession - session.setEncryptionSecret

non-correspondance du secret de chiffrement

Généré lorsque le contenu multimédia d'un abonné ne peut pas être décrypté car les clés de cryptage ne correspondent pas. Dans ce cas de figure, l'utilisateur restera abonné au flux, mais la vidéo sera noire et le son sera coupé. Il est recommandé d'expliquer à l'utilisateur pourquoi le contenu multimédia n'est pas visible.

Voir : : - Événement - encryptionSecretMatch événement - OT.initSession - session.setEncryptionSecret

mediaStreamAvailable

Envoyé dès que le MediaStream est disponible.

Voir : : - Événement

networkConditionChanged

Envoyé lorsqu'un changement d'état du réseau est détecté pour l'abonné ou l'éditeur distant.

Dans l'implémentation actuelle, cet événement n'est déclenché que lorsque l'état du réseau a changé pour l'une ou l'autre des parties.

Cet événement diffère de videoDisabled et videoEnabled événements, dans la mesure où il signale les changements d'état du réseau plutôt que les changements d'état de la piste vidéo de l'abonné. Les applications peuvent utiliser cet événement pour réagir aux problèmes réseau, par exemple en mettant à jour l'interface utilisateur, en enregistrant des données de télémétrie ou en déclenchant un comportement adaptatif.

Les caractéristiques de cet événement sont les suivantes :

  • reason — Indique la cause de l'événement. Actuellement, cette valeur est toujours "networkConditionChanged"
  • stats — Objet contenant un instantané complet des statistiques actuelles, structuré de la même manière que l'objet renvoyé par une getStats() invocation, y compris l'état du réseau et la cause des problèmes de transport/réseau au niveau local et à distance, ainsi que l'origine de la dégradation du réseau.

Voir : : - Événement

qualityScoreChanged

Envoyé lorsque le score de qualité audio ou vidéo a changé. Ces scores sont des valeurs heuristiques représentant l'expérience attendue de l'abonné. Les valeurs vont de 5 à 1, les valeurs entières correspondant respectivement à « Excellent » | « Bon » | « Passable » | « Médiocre » | « Mauvais ».

Voir : : - Événement de modification du Quality Score

videoDimensionsChanged

Envoyé lorsque le stream.videoDimensions La propriété est mise à jour par l’ éditeur. Cela se produit lorsque l’élément vidéo local de l’éditeur détecte un changement de dimension et signale la mise à jour à tous les participants à la session. Voici quelques exemples de causes possibles :

  • Quand stream.videoType est fixé à "screen" (partage d'écran) et que l'utilisateur redimensionne la fenêtre capturée.
  • Lorsque la vidéo est publiée à partir d'un appareil mobile et que l'utilisateur fait pivoter l'appareil, ce qui entraîne un changement d'orientation de la caméra.
  • Quand l'éditeur appelle Éditeur#setPreferredResolution, en modifiant la résolution de capture ciblée.

Cet objet d'événement possède un newValue propriété et un oldValue propriété, représentant les dimensions « nouvelle » et « ancienne » de la vidéo. Chacune d'entre elles possède une height propriété et un width propriété représentant la hauteur et la largeur, en pixels.

Remarque : ces dimensions correspondent à celles indiquées par l'éditeur. capture résolution (celle que l’ éditeur encode et envoie), et non la résolution effectivement décodée par cet abonné. La résolution décodée peut varier en raison de l’adaptation au réseau ou du codage vidéo évolutif. Utilisation Abonné#largeur_vidéo et Abonné#hauteur_vidéo pour la résolution réelle obtenue.

Voir : : - Événement « VideoDimensionsChanged »

vidéo désactivée

Envoyé lorsque la vidéo est désactivée pour l'abonné.

Les reason La propriété définit la raison pour laquelle la vidéo a été désactivée. Elle peut prendre l'une des valeurs suivantes :

  • "codecNotSupported" — Le navigateur du client ne prend pas en charge le codec vidéo utilisé par le flux. Par exemple, dans Safari, si vous vous connectez à un session acheminée dans un Video API Vonage (hors Safari) projet, et si vous essayez de vous abonner à un flux contenant de la vidéo, le Subscriber enverra un videoDisabled avec l'événement reason propriété définie sur "codecNotSupported". (Dans les sessions routées d'un projet autre que Safari, les flux utilisent le codec vidéo VP8, qui n'est pas pris en charge par Safari.) L'élément « subscriber » affichera également le message « Format vidéo non pris en charge ». (Voir OT.getSupportedCodecs().)

  • "publishVideo" — L'éditeur a cessé de publier des vidéos en appelant publishVideo(false).

  • "quality" — Le routeur multimédia vidéo Vonage ou le client de publication a cessé d'envoyer la vidéo à l'abonné en raison d'une modification de la qualité du flux liée à une dégradation de la connexion.

    Dans les sessions acheminées, la source de cet événement peut être le Vonage Video Media Router (repli audio de l'abonné) ou le client éditeur (repli audio de l'éditeur). Dans les deux cas, le flux vidéo est interrompu spécifiquement pour l'abonné concerné, tandis que le flux audio (le cas échéant) se poursuit sans interruption. Lorsque la source est le client éditeur, l’ événement est suivi d’un streamPropertyChanged événement déclenché par l'objet de session, indiquant que la chaîne vidéo à laquelle l'abonné est abonné n'est plus active. En général, cet événement supplémentaire signale une dégradation du réseau du côté de l'éditeur ; toutefois, les métriques communiquées par l'abonné peuvent influencer les décisions de repli de l'éditeur, ce qui peut compliquer la détermination de la source exacte de la dégradation.

    Dans les sessions relayées, le "quality" Cet événement est déclenché exclusivement par la logique interne de repli audio de l'éditeur (Publisher Audio Fallback). Cet événement n'est pas suivi d'un streamPropertyChanged événement indiquant que la vidéo est inactive, car le flux peut toujours être reçu par d'autres abonnés bénéficiant de meilleures conditions réseau. Notez que dans les sessions relayées, bien que les événements de repli audio proviennent de l'éditeur, une dégradation du réseau peut se produire soit du côté de l'éditeur, soit du côté de l'abonné.

    Avant d'envoyer cet événement, lorsque la qualité du flux de l'abonné se détériore à un niveau suffisamment bas pour que le flux vidéo risque d'être désactivé, l'abonné envoie un videoDisableWarning événement.

    Si la connexion s'améliore et permet à nouveau la diffusion de vidéos, l'objet « Subscriber » déclenche un videoEnabled événement, et l'abonné recommence à recevoir la vidéo.

    Par défaut, l'abonnant affiche un indicateur signalant que la vidéo est désactivée lorsqu'un videoDisabled L'événement associé à ce motif est déclenché et supprime l'indicateur lorsque le videoEnabled Un événement associé à ce motif est déclenché. Vous pouvez contrôler l'affichage de cette icône en appelant la méthode setStyle() méthode de l'abonné, en définissant le videoDisabledDisplayMode propriété (ou vous pouvez définir le style lors de l'appel de la Session.subscribe() méthode, en définissant le style propriété de la properties ).

    Vous pouvez contrôler le comportement de repli en mode audio uniquement en définissant le paramètre audioFallback propriété de l'objet transmis à OT.initPublisher() sur le client de publication. Par défaut, la solution de secours audio pour les abonnés est activée (sauf en cas de partage d'écran, où elle est désactivée par défaut) et la solution de secours audio pour les éditeurs est désactivée. Pour modifier ce paramètre, définissez audioFallback.subscriber à false pour désactiver la solution de secours pour les abonnés, ou définir audioFallback.publisher à true pour activer la solution de secours de l'éditeur. (Voir OT.initPublisher().)

  • "subscribeToVideo" — L'abonné s'est abonné ou a résilié son abonnement à un service vidéo, en appelant le subscribeToVideo(false).

Voir : : - VideoEnabledChangedEvent - videoDisableWarning événement - videoEnabled événement

videoDisableWarning

Envoyé lorsque le routeur multimédia de la Video API détecte une dégradation de la qualité du flux et que la vidéo sera désactivée si la qualité continue de se dégrader. Si la qualité continue de se dégrader, l'abonné désactive la vidéo et envoie un videoDisabled événement.

Par défaut, l'abonné affiche un indicateur d'avertissement signalant que la vidéo est désactivée lorsque cet événement est déclenché (et que la vidéo est désactivée). Vous pouvez contrôler l'affichage de cette icône en appelant la méthode setStyle() méthode et en définissant le videoDisabledDisplayMode propriété (ou vous pouvez définir le style lors de l'appel de la Session.subscribe() méthode et en définissant le style propriété de la properties ).

Cette fonctionnalité n'est disponible que dans les sessions utilisant le routeur multimédia de la Video API Vonage (sessions avec le mode média (réglé sur « routed »), et non dans les sessions dont le mode multimédia est réglé sur « relayed ».

Voir : : - Événement - vidéo désactivée événement - videoDisableWarningLifted événement

videoDisableWarningLifted

Déclenché lorsque le routeur multimédia de la Video API détermine que la qualité du flux s'est améliorée au point que la désactivation de la vidéo ne présente plus de risque immédiat. Cet événement est déclenché après que l'objet « Subscriber » a déclenché un videoDisableWarning événement.

Cette fonctionnalité n'est disponible que dans les sessions utilisant le routeur multimédia de la Video API Vonage (sessions avec le mode média (réglé sur « routed »), et non dans les sessions dont le mode multimédia est réglé sur « relayed ».

Voir : : - Événement - videoDisableWarning événement - vidéo désactivée événement

videoElementCreated

Déclenché lors de la création de l'élément vidéo de l'abonné. Ajoutez un écouteur pour cet événement lorsque vous définissez le insertDefaultUI à l'option false dans l'appel à la Session.subscribe() méthode. La méthode element La propriété de l'objet événement est une référence à l'abonné video élément (ou, dans Internet Explorer, l'élément object élément contenant la vidéo). Ajoutez-le au DOM HTML pour afficher la vidéo. Lorsque vous définissez le insertDefaultUI option permettant de false, le video (ou object) n'est pas automatiquement inséré dans le DOM.

N'ajoutez un écouteur pour cet événement que si vous avez défini le insertDefaultUI option permettant de false. Si vous n'avez pas défini insertDefaultUI option permettant de false, ne déplacez pas le video (ou object) dans le DOM HTML. Cela entraîne la destruction de l'objet « Subscriber ».

Voir : : - Événement de création d'un élément vidéo

videoEnabled

Déclenché lorsque le routeur multimédia de la Video API Vonage reprend l'envoi de la vidéo à l'abonné après une désactivation préalable de la vidéo.

Les reason Cette propriété définit la raison pour laquelle la vidéo a été activée. Elle peut prendre l'une des valeurs suivantes :

  • "codecChanged" — La vidéo de l'abonné a été activée après le remplacement d'un codec incompatible.

  • "publishVideo" — L'éditeur s'est lancé dans la diffusion de vidéos en appelant publishVideo(true).

  • "quality" — Le routeur multimédia de la Video API a repris la diffusion de la vidéo à l'abonné en fonction des variations de qualité du flux. Cette fonctionnalité du routeur multimédia de la Video API permet à l'abonné d'interrompre la diffusion du flux vidéo lorsque la connexion se détériore, puis de la reprendre si la qualité du flux s'améliore.

    Cette fonctionnalité n'est disponible que dans les sessions utilisant le routeur multimédia de la Video API Vonage (sessions avec le mode média (réglé sur « routed »), et non dans les sessions dont le mode multimédia est réglé sur « relayed ».

  • "subscribeToVideo" — L'abonné s'est abonné ou a résilié son abonnement à un service vidéo, en appelant le subscribeToVideo(false).

Voir : : - VideoEnabledChangedEvent - vidéo désactivée événement

videoQualityChanged

Envoyé lorsqu'une interruption de la qualité vidéo est détectée — une pause — ou lorsqu'un changement de codec est détecté.

Les blocages sont suivis en interne et présentés sous forme de statistiques, mais aucun événement n'est déclenché pour chaque blocage en raison de leur courte durée et de leur fréquence potentiellement élevée.

Un événement n'est déclenché que lorsqu'une pause est détectée (par exemple, aucune image affichée pendant plus de 5 secondes), car cela constitue une interruption plus importante de la lecture du contenu multimédia.

Cet événement diffère de videoDisabled et videoEnabled Événements liés aux abonnés dans la mesure où ils signalent des changements ayant une incidence sur la qualité vidéo. videoDisabled et videoEnabled « only » indique simplement que la piste vidéo de l'abonné a été activée ou désactivée (par exemple, à la suite d'une mise à jour des propriétés du flux ou d'un basculement vers l'audio). En revanche, cet événement fournit des informations de diagnostic sur les causes de la dégradation de la qualité, telles que le nombre de gels et de pauses, ainsi que des statistiques mises à jour.

Cet événement prend en compte tous les types d'interruptions vidéo d'une durée de 5 secondes ou plus. Cela signifie que, dans le cas particulier d'un basculement vers l'audio ou de modifications des propriétés du flux (telles que la désactivation de la vidéo), outre le déclenchement de l' videoEnabled et videoDisabled Dans ce cas, l'interruption est également enregistrée comme une pause dans les statistiques vidéo, et un événement correspondant à une modification de la qualité due à une interruption vidéo sera déclenché dès que la vidéo sera rétablie.

Les reason Cette propriété définit la raison du changement de qualité vidéo. Elle peut prendre l'une des valeurs suivantes :

  • "videoInterruption" — Indique qu'un nouvel événement de pause a été détecté
  • "codecChange" — Indique que le codec vidéo a changé

Les stats La propriété définit un objet contenant un instantané complet des statistiques actuelles, dont la structure est identique à celle de l'objet renvoyé par une getStats() invocation, y compris les pauses et les arrêts, le cas échéant.

Voir : : - Événement