L'objet Publisher fournit le mécanisme permettant de contrôler le
flux publié. L'appel de la méthode OT.initPublisher() méthode
crée un objet Publisher.
Le code suivant instancie une session et publie un flux audio-vidéo dès la connexion à la session :
var apiKey = ''; // Replace with your API key. See https://tokbox.com/account
var sessionID = ''; // Replace with your own session ID.
// See https://tokbox.com/developer/guides/create-session/.
var token = ''; // Replace with a generated token that has been assigned the moderator role.
// See https://tokbox.com/developer/guides/create-token/.
var session = OT.initSession(apiKey, sessionID);
session.connect(token, function(error) {
if (error) {
console.log(error.message);
} else {
// This example assumes that a DOM element with the ID 'publisherElement' exists
var publisherProperties = {width: 400, height:300, name:"Bob's stream"};
publisher = OT.initPublisher('publisherElement', publisherProperties);
session.publish(publisher);
}
});
Cet exemple crée un objet Publisher et ajoute sa vidéo à un élément DOM
dont l'ID est publisherElement en appelant le OT.initPublisher()
méthode. Elle publie ensuite un flux vers la session en appelant
la publish() méthode de l'objet Session.
Propriétés
| Nom | Type | Description |
|---|---|---|
accessAllowed |
Booléen | Si l'utilisateur a autorisé l'accès à la caméra et au microphone. L'objet Publisher déclenche un accessAllowed événement lorsque l'utilisateur accorde l'accès. L'objet Publisher déclenche un accessDenied événement se produisant lorsque l'utilisateur refuse l'accès. |
element |
Élément | L'élément DOM HTML contenant l'éditeur. (Remarque : lorsque vous réglez le insertDefaultUI à l'option false dans l'appel à OT.initPublisher, le element (la propriété n'est pas définie.) |
id |
Chaîne | L'identifiant DOM de l'éditeur. |
stream |
Flux | Les Flux objet correspondant au flux de l'éditeur. |
session |
Session | Les Session à laquelle appartient l'éditeur. |
Voir : : - OT.initPublisher - Session.publish()
Méthodes
| Nom | Description | |
|---|---|---|
addEventListener(type, listener, context) |
Obsolète. | |
applyAudioFilter(audioFilter) → {Promise} |
Applique un filtre audio pour l'éditeur. | |
applyVideoFilter(videoFilter) → {Promise} |
Applique un filtre vidéo pour l'éditeur. | |
clearAudioFilter() → {Promise} |
Supprime le filtre audio appliqué à l'éditeur. | |
clearVideoFilter() → {Promise} |
Supprime le filtre vidéo appliqué à l'éditeur. | |
cycleVideo() → {Promise} |
Permet de passer à la source d'entrée vidéo suivante dans la liste des périphériques disponibles utilisée par l'éditeur. | |
destroy() → {Publisher} |
Supprime l'objet Publisher et le retire du DOM HTML. | |
getAudioFilter() → {Object} |
Renvoie le filtre audio utilisé par l'éditeur (ou null s'il n'y a pas de filtre audio). | |
getAudioSource() → {MediaStreamTrack} |
Renvoie l'objet `MediaStreamTrack` utilisé comme source d'entrée audio pour l'éditeur. | |
getImgData() → {String} |
Renvoie la chaîne de données PNG encodée en base 64 représentant la vidéo de l'éditeur. | |
getMaxVideoBitrate() → {Integer} |
Renvoie le débit binaire maximal personnalisé défini pour l'éditeur. | |
getRtcStatsReport() → {Promise} |
Renvoie une promesse qui, en cas de réussite, se résout en un tableau d'objets contenant les propriétés RTCStatsReport du flux publié. | |
getStats(completionHandler) → {Promise.<PublisherStatsArr>} |
Renvoie les informations relatives à la qualité du flux de l'éditeur, notamment : - Le nombre total de paquets audio et vidéo perdus - Le nombre total de paquets audio et vidéo envoyés - Le nombre total d'octets audio et vidéo envoyés - La fréquence d'images vidéo moyenne actuelle Vous pouvez utiliser ces statistiques pour évaluer la qualité du flux audio-vidéo de l'éditeur. | |
getStyle() → {Object} |
Renvoie un objet comportant les propriétés qui définissent les contrôles actuels de l'interface utilisateur de Publisher. | |
| `getTargetScalabilityMode() → {String | undefined}` | Renvoie le mode d'évolutivité cible qui a été explicitement défini via Éditeur. |
getVideoBitratePreset() → {String} |
Renvoie le préréglage de débit binaire pour le Publisher. | |
getVideoContentHint() → {String} |
Renvoie l'indication de contenu correspondant à la piste vidéo. | |
getVideoFilter() → {Object} |
Renvoie le filtre vidéo appliqué par l'éditeur. | |
getVideoSource() → {VideoSource} |
Renvoie un objet contenant les propriétés qui définissent la source vidéo actuelle de l'éditeur. | |
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. | |
publishAudio(value) → {Publisher} |
Commence à diffuser le flux audio (s'il n'est pas déjà en cours de diffusion) lorsque le value est true; interrompt la diffusion audio (si celle-ci est en cours) lorsque le value est false. |
|
publishCaptions(value) → {Promise.<void>} |
Commence à publier les légendes (si la publication n'est pas déjà en cours) lorsque le value est true; cesse de publier les légendes (si la publication est en cours) lorsque le value est false. |
|
publishVideo(value, callback) → {Publisher} |
Active ou désactive la vidéo pour l'éditeur. | |
removeEventListener(type, listener, context) |
Obsolète. | |
setAudioMediaProcessorConnector(mediaProcessorConnector) → {Promise} |
Définit un MediaProcessorConnector pour la piste audio de l'éditeur. | |
setAudioSource(audioSource) → {Promise} |
Permet de changer la source d'entrée audio utilisée par l'éditeur. | |
setMaxVideoBitrate(bitrateBps) |
Définit un débit binaire vidéo maximal personnalisé pour l'éditeur. | |
setPreferredFrameRate(frameRate) → {Promise} |
Permet de définir la fréquence d'images vidéo souhaitée. | |
setPreferredResolution(preferredResolution) → {Promise} |
Permet de définir la résolution vidéo souhaitée. | |
setStyle(style, value) → {Publisher} |
Définit les propriétés qui déterminent l'apparence de certains contrôles de l'interface utilisateur de Publisher. | |
setTargetScalabilityMode(scalabilityMode) |
Définit le mode d'évolutivité cible (SVC - Scalable Video Coding) pour cet éditeur. | |
setVideoBitratePreset(preset) |
Définit le débit binaire vidéo maximal pour l'éditeur sur l'un des préréglages suivants : « default », « bw_saver » ou « extra_bw_saver ». | |
setVideoContentHint(videoContentHint) → {Promise.<void>} |
Définit l'indication de contenu pour la piste vidéo du flux de l'éditeur. | |
setVideoMediaProcessorConnector(mediaProcessorConnector) → {Promise} |
Définit un MediaProcessorConnector pour la piste vidéo de l'éditeur. | |
setVideoSource(videoSourceId) → {Promise} |
Cette méthode permet de définir la source vidéo pour un éditeur qui utilise une caméra. | |
videoHeight() → {Number} |
Renvoie la hauteur, en pixels, de la vidéo locale de l'éditeur, lue à partir du fichier local <video> élément. |
|
videoWidth() → {Number} |
Renvoie la largeur, en pixels, de la vidéo locale de l'éditeur, lue à partir du fichier local <video> élément. |
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
applyAudioFilter(audioFilter) → {Promise}
Applique un filtre audio à l'éditeur. Dans la version actuelle, vous ne pouvez appliquer qu'un filtre avancé de suppression du bruit. Un éditeur ne peut avoir qu'un seul filtre (ou aucun) appliqué à la fois. Lorsque vous définissez un nouveau filtre, tout filtre précédemment défini est supprimé.
Cette méthode est incompatible avec la
Publisher.setAudioMediaProcessorConnector()
méthode. L'appel de cette méthode après Publisher.setAudioMediaProccessorConnector(connector)
renvoie une promesse qui est rejetée avec une erreur, avec le name propriété de l'erreur
définie sur 'OT_NOT_SUPPORTED'. Vous pouvez supprimer le connecteur en appelant
Publisher.setAudioMediaProccessorConnector(null).
Remarque : Les filtres audio ne sont pris en charge que dans les versions récentes de Chrome, Electron, Opera, Edge, Samsung Internet et WebView sur 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.
Important : Les filtres audio nécessitent une prise en charge adéquate par le processeur. Même dans les navigateurs compatibles, les transformateurs peuvent ne pas fonctionner de manière stable lorsque des processus en arrière-plan limitent les ressources de traitement disponibles. Voir Exigences du client.
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 :
- Ce navigateur ne prend pas en charge cette méthode.
- Un filtre personnalisé est déjà utilisé via le
Publisher.setAudioMediaProcessorConnector()méthode. - Une erreur s'est produite lors de l'application du filtre de transformation.
Vous pouvez également définir le filtre audio initial en configurant un audioFilter option
lors de l'appel de OT.initPublisher().
Paramètres :
| Nom | Type | Description |
|---|---|---|
audioFilter |
Objet | Objet définissant le filtre audio à appliquer. Les filtres suivants sont pris en charge : - Filtre avancé de suppression du bruit - Régler le type propriété de l'objet à "advancedNoiseSuppression". |
Voir : : - OT.hasMediaProcessorSupport('audio') - Publisher.getAudioFilter() - Publisher.clearAudioFilter()
Retours :
Une promesse qui se résout lorsque l'opération s'achève avec succès. En cas d'erreur, la promesse est rejetée et aucun nouveau filtre vidéo n'est défini.
applyVideoFilter(videoFilter) → {Promise}
Applique un filtre vidéo à l'éditeur. Vous pouvez appliquer un filtre de flou d'arrière-plan. Un éditeur ne peut en avoir qu'un seul (ou aucun) appliqué à la fois. Lorsque vous définissez un nouveau filtre, le filtre précédemment défini est supprimé.
Cette méthode est incompatible avec la
Publisher.setVideoMediaProcessorConnector()
méthode. L'appel de cette méthode après Publisher.setVideoMediaProcessorConnector(connector)
renvoie une promesse qui est rejetée avec une erreur, avec le name propriété de l'erreur
définie sur 'OT_NOT_SUPPORTED'. Vous pouvez supprimer le connecteur en appelant
Publisher.setVideoMediaProcessorConnector(null).
Remarque : Les filtres vidéo 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 (version 26 et plus) et de WebView iOS (version 26 et plus). Vous pouvez vérifier si le client prend en charge cette fonctionnalité en appelant la méthode OT.hasMediaProcessorSupport('vidéo') méthode.
Important : Les filtres vidéo nécessitent une prise en charge suffisante par le processeur. Même dans les navigateurs compatibles, les transformateurs peuvent ne pas fonctionner de manière stable lorsque des processus en arrière-plan limitent les ressources de traitement disponibles. Voir Exigences du client.
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 :
- Ce navigateur ne prend pas en charge cette méthode.
- Le lecteur n'utilise pas une source vidéo prise en charge. (Le
videoSourcede l'option OT.initPublisher() La méthode a été définie surnull,false, ou"screen"). - Un filtre personnalisé est déjà utilisé via le
Publisher.setVideoMediaProcessorConnector()méthode. - 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 l'application du filtre de transformation.
Vous pouvez également définir le filtre vidéo initial en définissant une valeur de videoFilter option
lors de l'appel de OT.initPublisher().
Paramètres :
| Nom | Type | Description |
|---|---|---|
videoFilter |
Objet | Objet définissant le filtre vidéo à appliquer. Les filtres suivants sont pris en charge : - Filtre de flou d'arrière-plan : - Régler le type propriété de l'objet à "backgroundBlur". Un objet de filtre de flou d'arrière-plan comprend un élément supplémentaire blurStrength propriété qui définit le rayon de flou et qui est facultative. Définissez-la sur l'une des valeurs suivantes : "low" ou "high" (par défaut). - Filtre de remplacement d'arrière-plan - Régler le type propriété de l'objet à "backgroundReplacement". Un objet filtre de remplacement d'arrière-plan comprend un élément supplémentaire backgroundImgUrl propriété qui définit l'URL de l'image d'arrière-plan à utiliser. Les BLOB d'image (chaîne de données d'image encodée en Base64) sont également acceptés. Les formats d'image suivants sont pris en charge : BMP, PNG, JPEG et GIF. L'image d'arrière-plan est redimensionnée pour s'adapter aux dimensions de la vidéo de l'éditeur. Pour un résultat optimal, utilisez une image présentant les mêmes dimensions (ou au moins le même format) que la vidéo publiée. Définissez le mirror option permettant de false lors de l'appel du OT.initPublisher() méthode permettant d'afficher l'image d'arrière-plan dans le bon sens (et non en miroir) sur la page de l'éditeur. |
Voir : : - OT.hasMediaProcessorSupport('vidéo') - Publisher.getVideoFilter() - Publisher.clearVideoFilter()
Retours :
Une promesse qui se résout lorsque l'opération s'achève avec succès. En cas d'erreur, la promesse est rejetée et aucun nouveau filtre vidéo n'est défini.
clearAudioFilter() → {Promise}
Supprime le filtre audio appliqué à l'éditeur.
Cela entraînera une erreur (la Promise renvoyée par la méthode sera rejetée) si le filtre audio n'a pas pu être arrêté.
Voir : : - OT.hasMediaProcessorSupport('audio') - Publisher.applyAudioFilter() - Publisher.getAudioFilter()
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.
clearVideoFilter() → {Promise}
Supprime le filtre vidéo appliqué à l'éditeur.
Cela entraînera une erreur (la Promise renvoyée par la méthode sera rejetée) si le filtre vidéo n'a pas pu être arrêté.
Voir : : - OT.hasMediaProcessorSupport('vidéo') - Publisher.applyVideoFilter() - Publisher.getVideoFilter()
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.
cycleVideo() → {Promise}
Permet de passer à la source d'entrée vidéo suivante dans la liste des périphériques disponibles.
Cela entraînera une erreur (la Promise renvoyée par la méthode sera rejetée) dans les conditions suivantes :
- L'utilisateur s'est vu refuser l'accès à l'appareil d'entrée vidéo.
- L'éditeur n'utilise pas de source vidéo provenant d'une caméra. (Le
videoSourcede l'option OT.initPublisher() La méthode a été définie surnull,false, un objet MediaStreamTrack, ou"screen"). - 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.
Voir : : - Publisher.setVideoSource()
Retours :
Une promesse qui se résout lorsque l'opération s'achève
avec succès. La promesse se résout avec un objet qui possède un
deviceId est définie sur l'identifiant de l'appareil photo utilisé :
publisher.cycleVideo().then(console.log);
// Output: {deviceId: "967a86e52..."}
En cas d'erreur, la promesse est rejetée.
destroy() → {Éditeur}
Supprime l'objet Publisher et le retire du DOM HTML.
L'objet Publisher envoie un destroyed événement déclenché lorsque l'élément DOM
est supprimé.
Retours :
L'éditeur.
getAudioFilter() → {Object}
Renvoie le filtre audio utilisé par l'éditeur (ou null s'il n'y a pas de filtre audio).
Voir : : - OT.hasMediaProcessorSupport('audio') - Publisher.applyAudioFilter() - Publisher.clearAudioFilter()
Retours :
Le filtre audio utilisé par l'éditeur.
Vérifiez le type propriété de l'objet pour connaître le type de filtre audio.
Actuellement, seul le filtre avancé de suppression du bruit est pris en charge, et le
type est fixée à "advancedNoiseSuppression".
getAudioSource() → {MediaStreamTrack}
Renvoie l'objet MediaStreamTrack utilisé comme source d'entrée audio pour l'éditeur. Si l'éditeur ne dispose pas de source audio, cette méthode renvoie null.
Voir : : - Publisher.setAudioSource()
Retours :
La source audio de l'éditeur (ou « null » s'il n'y en a pas).
getImgData() → {String}
Renvoie la chaîne de données PNG encodée en base 64 représentant la vidéo de l'éditeur.
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 = publisher.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.
getMaxVideoBitrate() → {Integer}
Renvoie le débit binaire maximal personnalisé défini pour l'éditeur.
Voir : : - Publisher.setMaxVideoBitrate() - Publisher Max Bitrate
Retours :
L'une des valeurs suivantes : 0, ou tout nombre entier compris entre 5 000 et 10 000 000.
getRtcStatsReport() → {Promise}
Renvoie une promesse qui, en cas de réussite, se résout en un tableau d'objets comprenant les propriétés RTCStatsReport du flux publié. (Voir Rapport RTCStats.)
Pour un éditeur dans une session acheminée (qui utilise l'option
Video API Vonage
Routeur multimédia), ce tableau contient un objet définissant les statistiques relatives au flux
multimédia audio unique envoyé au routeur multimédia de la Video API Vonage. Dans une session relayée, le
tableau contient un objet pour chaque abonné au flux publié. Chaque objet du
tableau contient un rtcStatsReport propriété de type objet RTCStatsReport.
De plus, pour un éditeur dans une session relayée, chaque objet du tableau contient les deux propriétés suivantes :
connectionId(Chaîne) — L'identifiant unique de la connexion du client, qui correspond à l'idde la propriétéconnectionpropriété de la connexionCréée événement que l'objet Session a déclenché pour le client distant.subscriberId(Chaîne) — L'identifiant unique de l'abonné, qui correspond à l'idpropriété de l'objet « Subscriber » dans l'application du client abonné.
Ces deux propriétés ne sont pas définies pour un éditeur dans une session acheminée.
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 le module Publisher n'est pas connecté.
Voir : : - Subscriber.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.<PublisherStatsArr>}
Renvoie les informations relatives à la qualité du flux de l'éditeur, notamment les éléments suivants :
- Le nombre total de paquets audio et vidéo perdus
- Le nombre total de paquets audio et vidéo envoyés
- Nombre total d'octets audio et vidéo envoyés
- Taux de rafraîchissement moyen de la vidéo
Vous pouvez utiliser ces statistiques pour évaluer la qualité du flux audio-vidéo de l'éditeur.
Paramètres :
| Nom | Type | Description |
|---|---|---|
completionHandler |
fonction | (Facultatif) Une fonction qui prend les paramètres suivants : - error (Erreur) — Une fois la méthode exécutée avec succès, cette propriété n'est pas définie. Une erreur se produit si l'éditeur n'est pas connecté à une session ou s'il ne diffuse pas de contenu audio ou vidéo. - statsArray (Tableau) — Tableau d'objets définissant les statistiques audio-vidéo actuelles de l'éditeur. Pour un éditeur participant à une session acheminée (c'est-à-dire une session qui utilise le Video API Vonage Routeur multimédia), ce tableau contient un objet définissant les statistiques relatives au flux multimédia audio unique envoyé au routeur multimédia de la Video API Vonage. Dans une session relayée, le tableau contient un objet pour chaque abonné au flux publié. Chaque objet du tableau contient un stats propriété qui comprend les propriétés suivantes : - audio.bytesSent (Nombre) — Nombre total d'octets audio envoyés à l'abonné (ou au routeur multimédia de la Video API Vonage) - audio.packetsLost (Nombre) — Nombre total de paquets audio qui ne sont pas parvenus à l'abonné (ou au routeur multimédia de la Video API Vonage) - audio.packetsSent (Nombre) — Nombre total de paquets audio envoyés à l'abonné (ou au routeur multimédia de la Video API Vonage) - timestamp (Numbers) — L'horodatage, en millisecondes depuis l'époque Unix, correspondant au moment où ces statistiques ont été recueillies - video.bytesSent (Nombre) — Nombre total d'octets vidéo envoyés à l'abonné (ou au routeur multimédia de la Video API Vonage) - video.packetsLost (Nombre) — Nombre total de paquets vidéo qui ne sont pas parvenus à l'abonné (ou au routeur multimédia de la Video API Vonage) - video.packetsSent (Nombre) — Nombre total de paquets vidéo envoyés à 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 encodedFrameRate propriété dans les différentes couches. - video.layers (Tableau) — Liste des couches d'encodage vidéo actives, classées de la résolution la plus élevée à la plus faible. Chaque objet de couche comprend : - width (Numbers) — Largeur de la résolution vidéo de ce calque, en pixels - height (Numbers) — La hauteur de la résolution vidéo de ce calque, en pixels - encodedFrameRate (Numbers) — Fréquence d'images de ce calque, en images par seconde - bitrate (Numbers) — Débit binaire utilisé par cette couche, en bits par seconde - totalBitrate (Nombre) — Débit binaire total utilisé par cette couche, en bits par seconde. Ce chiffre inclut les en-têtes RTP, le remplissage et la charge utile - scalabilityMode (Numbers) — Chaîne de caractères décrivant la configuration de l'évolutivité (par exemple, "L1T3" (pour une couche spatiale et trois couches temporelles). Cela indique si l'on utilise la diffusion simultanée ou le SVC - codec (Nombre) — Le codec utilisé par cette couche - qualityLimitationReason (Numbers) — (Facultatif) Chaîne de caractères indiquant pourquoi la qualité vidéo de l'éditeur a pu être altérée. Valeurs possibles : - "bandwidth" — Dégradation de la qualité due à une bande passante réseau insuffisante - "cpu" — Dégradation de la qualité due aux limitations du processeur de l'appareil client - "other" — Autres raisons non précisées - transportStats (Objet) — Cette propriété est obsolète et sera supprimée à l'avenir. Veuillez utiliser à la place mediaLink.transport. - mediaLink.transport.connectionEstimatedBandwidth (Numbers) — Bande passante disponible estimée pour la connexion, en bits par seconde (bps) - mediaLink.transport.networkCondition (Chaîne) — État actuel du réseau. Les valeurs possibles sont les suivantes : unknown, critical, warning, fair, good et excellent. - mediaLink.transport.networkConditionReason (Chaîne de caractères) — Principale cause affectant l'état du réseau. Les valeurs possibles sont : none, unknown, bandwidth et packetLoss. De plus, pour un éditeur dans une session relayée, chaque objet du tableau contient les deux propriétés suivantes : - connectionId (Chaîne) — L'identifiant unique de la connexion du client, qui correspond à l' id de la propriété connection propriété de la connexionCréée événement que l'objet Session a déclenché pour le client distant. - subscriberId (Chaîne) — L'identifiant unique de l'abonné, qui correspond à l' id propriété de l'objet « Subscriber » dans l'application du client abonné. Ces deux propriétés ne sont pas définies pour un éditeur dans une session routée. |
Voir : : - Subscriber.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
Publisher. Vous pouvez modifier les propriétés de cet objet et le transmettre à la
setStyle() méthode de l'objet `Publisher`. (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'éditeur.
getTargetScalabilityMode() → {String|undefined}
Renvoie le mode d'évolutivité cible qui a été explicitement défini via
Publisher.setTargetScalabilityMode().
Renvoie la dernière valeur transmise au setter, ou undefined si la méthode setter
n'a jamais été appelée.
Cela reflète l'intention de l'utilisateur, et non le mode effectivement appliqué (qui peut varier en raison d'une
solution de repli dépendant du codec).
Il s'agit d'une fonctionnalité en version bêta.
Voir : : - Publisher.setTargetScalabilityMode()
Retours :
Le mode d'évolutivité cible défini par l'appelant,
ou undefined si cela n'est pas explicitement défini.
getVideoBitratePreset() → {String}
Renvoie le préréglage de débit binaire pour le Publisher.
Voir : : - Publisher.setVideoBitratePreset() - Publisher Max Bitrate
Retours :
L'une des valeurs suivantes : « custom », « extra_bw_saver », « bw_saver » ou « default »
getVideoContentHint() → {String}
Renvoie l'indication de contenu correspondant à la piste vidéo.
Voir : : - Publisher.setVideoContentHint()
Retours :
L'une des valeurs suivantes : "",
"motion", "detailou "text".
getVideoFilter() → {Object}
Renvoie le filtre vidéo appliqué par l'éditeur.
Voir : : - OT.hasMediaProcessorSupport('vidéo') - Publisher.applyVideoFilter() - Publisher.clearVideoFilter()
Retours :
Le filtre vidéo appliqué à la source d'entrée vidéo utilisée par l'éditeur.
Vérifiez le type propriété de l'objet permettant de connaître le type de filtre vidéo. Les
filtres suivants sont pris en charge :
- Filtre de flou d'arrière-plan - Le
typela propriété de l'objet est définie sur"backgroundBlur". Un objet filtre de flou d'arrière-plan comprend unblurStrengthpropriété, qui définit le rayon de flou, peut être définie soit sur"low"ou"high". - Filtre de remplacement d'arrière-plan - Le
typeLa propriété « type » de l'objet est définie sur"backgroundReplacement". Un objet filtre de remplacement d'arrière-plan comprend un élément supplémentairebackgroundImgUrlpropriété qui définit l'URL de l'image d'arrière-plan à utiliser.
getVideoSource() → {VideoSource}
Renvoie un objet contenant les propriétés définissant la source vidéo actuelle de l'éditeur.
Voir : : - Publisher.setVideoSource() - OT.initPublisher()
Retours :
L'objet de retour possède les propriétés suivantes :
deviceId(Chaîne | null) — L'identifiant de l'appareil.type(Chaîne | null) — Cette valeur est définie sur « camera » (pour une vidéo filmée avec une caméra), « screen » (pour une vidéo de partage d'écran), ou « custom » (pour une vidéo dont la source est un MediaStreamTrack).track(MediaStreamTrack | null) — Le MediaStreamTrack correspondant à la vidéo.
Les propriétés non applicables seront définies sur null.
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.
publishAudio(valeur) → {Éditeur}
Commence la diffusion audio (si celle-ci n'est pas déjà en cours)
lorsque le value est true; interrompt la diffusion audio
(si celle-ci est en cours) lorsque le value est false.
Paramètres :
| Nom | Type | Description |
|---|---|---|
value |
Booléen | Faut-il commencer à publier des fichiers audio (true) ou non (false). |
Voir : : - OT.initPublisher() - Stream.hasAudio - StreamPropertyChangedEvent
Retours :
publishCaptions(valeur) → {Promise.<void>}
Commence à publier les légendes (si la publication n'est pas en cours)
lorsque le value est true; cesse de publier les légendes
(si la publication est en cours) lorsque le value est false.
Remarque : Aucune sous-titrage ne sera publié si l'éditeur ne dispose pas d'une source audio.
Pour plus d'informations, voir le Sous-titres en direct guide du développeur.
Paramètres :
| Nom | Type | Description |
|---|---|---|
value |
Booléen | Faut-il commencer à publier des légendes (true) ou non (false). |
Voir : : - OT.initPublisher() - subscribeToCaptions() - isSubscribedToCaptions() - Stream.hasCaptions - StreamPropertyChangedEvent
Retours :
publishVideo(value, callback) → {Éditeur}
Active ou désactive la diffusion de la vidéo pour l'éditeur. Cette commande déclenche la diffusion de la vidéo
(si celle-ci n'est pas en cours de diffusion, si le client est connecté
et si l'éditeur est en train de diffuser) lorsque le value est true;
il interrompt la diffusion de la vidéo (si celle-ci est en cours de diffusion) lorsque le value
est false.
Remarque : Le comportement de publishVideo varie selon que
l'éditeur est actuellement connecté et en cours de publication :
- Appel
publishVideo(true)lorsque l'éditeur n'est pas connecté à une session, l'éditeur capture et affiche la vidéo localement, mais ne la diffuse pas en continu. - Appel
publishVideo(false)lorsque l'éditeur n'est pas connecté à une session, cela entraîne l'arrêt de la capture vidéo locale par l'éditeur. Aucune vidéo n'est diffusée. - Appel
publishVideo(true)Lorsque l'éditeur est connecté à une session mais qu'il ne diffuse pas de vidéo à ce moment-là, il capture et affiche la vidéo localement, mais ne la diffuse pas en streaming. - Appel
publishVideo(false)Lorsque l'éditeur est connecté à une session mais qu'il ne diffuse pas de contenu à ce moment-là, il cesse de capturer la vidéo localement. Aucune vidéo n'est diffusée. - Appel
publishVideo(true)Lorsque l'éditeur est à la fois connecté à une session et en cours de diffusion, cela l'amène à capturer et à traiter la vidéo localement, puis à la diffuser en continu. - Appel
publishVideo(false)Lorsque l'éditeur est à la fois connecté à une session et en cours de diffusion, cela entraîne l'arrêt de la capture vidéo par l'éditeur et la diffusion d'images vidéo vides.
Paramètres :
| Nom | Type | Description |
|---|---|---|
value |
Booléen | Faut-il se lancer dans la publication de vidéos (true) ou non (false). |
callback |
fonction | (Facultatif) Une fonction qui prend en paramètre un Error paramètre. Une fois la méthode exécutée avec succès, ce error Le paramètre n'est pas défini. Une erreur se produit si l'éditeur ne dispose d'aucun appareil permettant de diffuser le flux multimédia ou si la demande multimédia de l'utilisateur n'est pas prise en charge. |
Voir : : - OT.initPublisher() - Stream.hasVideo - StreamPropertyChangedEvent
Retours :
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
setAudioMediaProcessorConnector(mediaProcessorConnector) → {Promise}
Définit un MediaProcessorConnector pour la piste audio de l'éditeur. Un éditeur 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 Android WebView. Ils ne sont pas pris en charge dans les autres navigateurs (non basés sur Chromium) ni sous iOS. Vous pouvez vérifier si le client prend en charge cette fonctionnalité en appelant la méthode OT.hasMediaProcessorSupport('audio') méthode.
Important : Les processeurs multimédias nécessitent une prise en charge adéquate par le processeur. Même dans les navigateurs pris en charge, les transformateurs peuvent ne pas fonctionner de manière stable lorsque des processus en arrière-plan limitent les ressources de traitement disponibles. Voir Exigences du client.
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 :
- Aucun périphérique d'entrée audio (microphone) n'est disponible.
- Une erreur s'est produite lors de la récupération du son à partir du périphérique d'entrée audio.
- 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.
setAudioSource(audioSource) → {Promise}
Permet de changer la source d'entrée audio utilisée par l'éditeur. Vous pouvez définir la
audioSource vers un identifiant de périphérique (chaîne de caractères) ou un objet `MediaStreamTrack` audio.
Cela entraînera une erreur (la Promise renvoyée par la méthode sera rejetée) dans les conditions suivantes :
- Le navigateur ne prend pas en charge cette méthode. Cette méthode n'est pas prise en charge dans Internet Explorer ni dans les versions d'Edge non basées sur Chromium (antérieures à la version 79).
- Le lecteur n'a pas été lancé avec une source audio. (Le
audioSourcede l'option OT.initPublisher() La méthode a été définie surnulloufalse). - L'utilisateur a refusé l'accès au périphérique d'entrée audio.
- Une erreur s'est produite lors de la récupération du flux audio à partir du périphérique d'entrée audio ou de l'objet MediaStreamTrack .
- Les
audioSourceLa valeur n'est ni une chaîne de caractères ni un objet MediaStreamTrack. - Les
audioSource« string » n'est pas un périphérique d'entrée audio valide disponible pour le navigateur.
Paramètres :
| Nom | Type | Description |
|---|---|---|
audioSource |
Objet | L'identifiant (chaîne de caractères) d'un périphérique d'entrée audio, ou un objet MediaStreamTrack audio. |
Voir : : - Publisher.getAudioSource()
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.
setMaxVideoBitrate(bitrateBps)
Définit un débit binaire vidéo maximal personnalisé pour l'éditeur. Définissez cette valeur entre 5 000 et 10 000 000. Si vous définissez cette valeur sur 0, tout débit binaire personnalisé précédemment défini est supprimé et le comportement par défaut est rétabli.
La configuration du débit binaire maximal est prise en charge dans les versions les plus récentes de tous les navigateurs compatibles.
Paramètres :
| Nom | Type | Description |
|---|---|---|
bitrateBps |
Entier | Valeur du débit binaire vidéo : comprise entre 5 000 et 10 000 000. Définissez cette valeur sur 0 pour supprimer un paramètre de débit binaire personnalisé et revenir au comportement par défaut. |
Voir : : - Publisher.getMaxVideoBitrate() - Publisher.setVideoBitratePreset() - Publisher Max Bitrate
setPreferredFrameRate(frameRate) → {Promise}
Définit la fréquence d'images souhaitée pour la vidéo. Cette fonction permet de définir la fréquence d'images souhaitée pour la publication de la vidéo. La fréquence d'images doit être un nombre entier ≥ 1. En cas de réussite, les nouvelles contraintes de fréquence d'images sont appliquées à la piste vidéo.
Paramètres :
| Nom | Type | Description |
|---|---|---|
frameRate |
Numbers | La fréquence d'images recommandée pour la vidéo. |
Retours :
Se résout lorsque les contraintes vidéo sont appliquées avec succès. Dans le cas contraire, une erreur est levée — par exemple, si l'éditeur ne diffuse pas de vidéo, si la fréquence d'images n'est pas valide ou si l'application des contraintes échoue.
setPreferredResolution(preferredResolution) → {Promise}
Définit la résolution vidéo privilégiée. Cette fonction définit la résolution privilégiée pour l'éditeur de vidéo. Elle vérifie que l'entrée est bien un objet dont les propriétés « width » et « height » sont des entiers positifs, et s'assure que la résolution n'est pas supérieure à la résolution de publication initiale. En cas de réussite, elle applique les nouvelles contraintes à la piste vidéo.
Paramètres :
| Nom | Type | Description | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
preferredResolution |
Objet | La résolution souhaitée. Propriétés | Nom | Type | Description | --- | --- | --- | width |
Numbers | Largeur souhaitée de la vidéo (en pixels). | height |
Numbers | Hauteur recommandée pour la vidéo (en pixels). |
Retours :
S'exécute lorsque les contraintes vidéo ont été correctement appliquées. Dans le cas contraire, une erreur est levée — par exemple, si l'éditeur ne publie pas de vidéo, si les dimensions ne sont pas valides ou si la résolution dépasse la résolution initiale.
setStyle(style, valeur) → {Éditeur}
Définit les propriétés qui déterminent l'apparence de certains contrôles de l'interface utilisateur de Publisher.
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 :
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é).archiveStatusDisplayMode(Chaîne) — Comment afficher l'indicateur d'état d'archivage. Les valeurs possibles sont les suivantes :"auto"(l'indicateur s'affiche lorsque la session est en cours d'enregistrement),"off"(l'indicateur n'apparaît pas). Si vous désactivez l'indicateur d'affichage du statut d'archivage, vous pouvez afficher vos propres notifications dans l'interface utilisateur en fonction duarchiveStartedetarchiveStoppedenvoyés par l'objet Session.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 appelezpublishVideo(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 ladatasché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 Publisher.getImgData() méthode (par exemple, vous pourriez appelermyPublisher.setStyle("backgroundImageURI", myPublisher.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 microphone. Les valeurs possibles sont les suivantes :"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).
Par exemple, le code suivant transmet un paramètre à la méthode :
myPublisher.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ètre à la méthode :
myPublisher.setStyle("nameDisplayMode", "off");
Vous pouvez définir les paramètres initiaux lorsque vous appelez la fonction Session.publish()
ou OT.initPublisher() méthode. Transmettez 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.publish() - OT.initPublisher()
Retours :
L'objet Publisher
setTargetScalabilityMode(scalabilityMode)
Définit le mode d'évolutivité cible (SVC - Scalable Video Coding) pour cet éditeur.
Le mode d'évolutivité détermine le nombre de couches spatiales (résolution) et temporelles (fréquence d'images) que WebRTC encode. Ce mode s'applique au chemin multimédia du Media Router.
Cette méthode peut être appelée à tout moment ; elle ne nécessite pas que la négociation du chemin de transmission soit terminée. Le mode sera appliqué dès que le chemin de transmission du routeur multimédia sera établi.
Si un codec non-SVC (VP8, H.264) est négocié sur le chemin multimédia du routeur multimédia, le mode applicable le plus proche
est utilisé : le nombre de couches spatiales est fixé à 1, tout en conservant la dimension temporelle
(par exemple : L2T2 → L1T2 lorsque le format VP8 est négocié).
Modes valides :
L1T1,L1T2,L1T3,L2T1,L2T2,L2T3,L3T1,L3T2,L3T3
Il s'agit d'une fonctionnalité en version bêta.
Paramètres :
| Nom | Type | Description |
|---|---|---|
scalabilityMode |
Chaîne | L'identifiant du mode d'évolutivité cible (par exemple, "L1T3", "L3T3"). |
Voir : : - Publisher.getTargetScalabilityMode()
Lancers :
setVideoBitratePreset(preset)
Définit le débit binaire vidéo maximal pour l'éditeur sur l'un des préréglages suivants : « default », « bw_saver » ou « extra_bw_saver ». Pour plus de détails, consultez la Publisher Max Bitrate guide du développeur.
La configuration du débit binaire maximal est prise en charge dans les versions les plus récentes de tous les navigateurs compatibles.
Paramètres :
| Nom | Type | Description |
|---|---|---|
preset |
Chaîne | Le préréglage à utiliser : soit « default », « bw_saver », soit « extra_bw_saver ». |
Voir : : - Publisher.getVideoBitratePreset() - Publisher.setMaxVideoBitrate()
setVideoContentHint(videoContentHint) → {Promise.<void>}
Définit l'indicateur de contenu pour la piste vidéo du flux de l'éditeur. Cela permet aux navigateurs d'utiliser des méthodes d'encodage ou de traitement mieux adaptées au type de contenu.
Utilisez cette méthode pour modifier dynamiquement le contenu vidéo affiché. Définissez le contenu vidéo initial
à afficher en configurant le videoContentHint propriété des options transmises à la fonction
OT.initPublisher() méthode.
Chrome 60 et versions ultérieures, Safari 12.1 et versions ultérieures, Edge 79 et versions ultérieures, Opera 47 et versions ultérieures, les versions récentes de Samsung Internet, WebView sous Android 70 et versions ultérieures, ainsi que WebView sous iOS 12.2 et versions ultérieures prennent en charge les indications de contenu vidéo.
Paramètres :
| Nom | Type | Description |
|---|---|---|
videoContentHint |
Chaîne | Vous pouvez définir cette option sur l'une des valeurs suivantes : - "" — Aucun indice n'est donné. - "motion" — La piste doit être traitée comme si elle contenait une vidéo dans laquelle le mouvement joue un rôle important. Par exemple, vous pouvez utiliser ce paramètre pour un flux de partage d'écran contenant de la vidéo. - "detail" — Il convient de traiter cette piste comme si les détails vidéo revêtaient une importance particulière. Vous pouvez, par exemple, utiliser ce paramètre pour un flux de partage d'écran contenant du texte, des dessins ou des illustrations au trait. - "text" — Il convient de considérer cette piste comme si les détails textuels revêtaient une importance particulière. Vous pouvez, par exemple, utiliser ce paramètre pour un flux de partage d'écran contenant du contenu textuel. |
Voir : : - Publisher.getVideoContentHint() - OT.initPublisher()
Retours :
setVideoMediaProcessorConnector(mediaProcessorConnector) → {Promise}
Définit un MediaProcessorConnector pour la piste vidéo de l'éditeur. Un éditeur ne peut avoir qu'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é.
Cette méthode est incompatible avec la
Publisher.applyVideoFilter()
méthode. L'appel de cette méthode après Publisher.applyVideoFilter(filter) renvoie
une promesse rejetée avec une erreur, avec le name propriété de l'ensemble d'erreurs définie sur
'OT_NOT_SUPPORTED'. Vous pouvez désactiver le filtre vidéo en appelant
Publisher.clearVideoFilter().
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 (version 26 et plus) et de WebView iOS (version 26 et plus). Vous pouvez vérifier si le client prend en charge cette fonctionnalité en appelant la méthode OT.hasMediaProcessorSupport('vidéo') méthode.
Important : Les processeurs multimédias nécessitent une prise en charge adéquate par le processeur. Même dans les navigateurs pris en charge, les transformateurs peuvent ne pas fonctionner de manière stable lorsque des processus en arrière-plan limitent les ressources de traitement disponibles. Voir Exigences du client.
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.
- Un filtre vidéo a déjà été appliqué via le
Publisher.applyVideoFilter()méthode. - 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.
setVideoSource(videoSourceId) → {Promise}
Cette méthode permet de définir la source vidéo d'un éditeur utilisant une caméra. Indiquez l'identifiant de l'appareil correspondant à la nouvelle source vidéo.
Les cas suivants entraîneront des erreurs :
- Si le
videoSourceIdSi le paramètre n'est pas une chaîne de caractères ou l'identifiant d'un périphérique d'entrée vidéo valide, la promesse sera rejetée avec une erreur indiquant que lenamepropriété définie sur'OT_INVALID_VIDEO_SOURCE'. - Si l'éditeur n'utilise pas actuellement d'entrée caméra, la promesse
sera rejetée avec une erreur indiquant que le
namepropriété définie sur'OT_SET_VIDEO_SOURCE_FAILURE'.
Paramètres :
| Nom | Type | Description |
|---|---|---|
videoSourceId |
Chaîne | L'identifiant d'un périphérique d'entrée vidéo (caméra). |
Voir : : - OT.getDevices() - Publisher.getVideoSource() - Publisher.cycleVideo()
Retours :
Une promesse qui renvoie une valeur nulle lorsque l'opération s'achève avec succès. En cas d'erreur, la promesse est rejetée.
videoHeight() → {Number}
Renvoie la hauteur, en pixels, de la vidéo locale de l'éditeur, lue à partir du
fichier local <video> élément. Il s'agit de la même valeur que
stream.videoDimensions.height.
Retours :
La hauteur, en pixels, de la vidéo locale de l'éditeur.
videoWidth() → {Number}
Renvoie la largeur, en pixels, de la vidéo locale de l'éditeur, lue à partir du
fichier local <video> élément. Il s'agit de la même valeur que
stream.videoDimensions.width
Retours :
La largeur, en pixels, de la vidéo locale de l'éditeur.
Evénements
accès autorisé
Déclenché lorsque l'utilisateur a cliqué sur le bouton « Autoriser », accordant ainsi à l'
application l'accès à la caméra et au microphone. L'objet Publisher dispose d'un
accessAllowed propriété indiquant si l'utilisateur
a autorisé l'accès à la caméra et au microphone.
Voir : : - Événement
accessDenied
Déclenché lorsque l'utilisateur a cliqué sur le bouton « Refuser », empêchant ainsi l' application d'accéder à la caméra et au microphone.
Cet événement est également déclenché si l'utilisateur retire les autorisations qu'il avait précédemment accordées.
Remarque : Sous macOS 10.15 et versions ultérieures (Catalina), pour publier un flux de partage d'écran,
l'utilisateur doit autoriser le navigateur à accéder à l'écran dans les Préférences Système de macOS >
Sécurité et confidentialité > Confidentialité > Enregistrement d'écran. Sinon,
l'éditeur enverra un accessDenied événement.
Voir : : - Événement
accessDialogClosed
Envoyé lorsque la boîte de dialogue « Autoriser/Refuser » est fermée. (Il s'agit de la boîte de dialogue dans laquelle l' utilisateur peut autoriser l'application à accéder à la caméra et au microphone.)
Voir : : - Événement
accessDialogOpened
Envoyé lorsque la boîte de dialogue « Autoriser/Refuser » s'ouvre. (Il s'agit de la boîte de dialogue dans laquelle l'utilisateur peut autoriser l'application à accéder à la caméra et au microphone.)
Voir : : - Événement
audioInputDeviceChanged
Déclenché lorsque le périphérique d'entrée audio est modifié.
Voir : : - Événement - Événement « AudioInputDeviceChanged »
audioLevelUpdated
Envoyé périodiquement pour indiquer le niveau audio du lecteur. Cet é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' éditeur. Notez que le niveau audio est ajusté de manière logarithmique et qu'une moyenne mobile est appliquée :
var movingAvg = null;
publisher.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('publisherMeter').value = logLevel;
});
Cet exemple illustre l'algorithme utilisé par l'indicateur de niveau audio par défaut affiché dans un Publisher « audio uniquement ».
Voir : : - Événement de mise à jour du niveau audio
détruit
Cet événement est déclenché lorsque l'élément « Publisher » 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'éditeur.
mediaStopped
L'utilisateur qui publie le flux a cessé de partager un ou tous les types de médias (vidéo, audio et/ou écran). Cela peut se produire lorsqu'un utilisateur déconnecte une caméra ou un microphone utilisé comme source multimédia pour l'éditeur. Cela peut également se produire lorsqu'un utilisateur ferme une fenêtre alors que les sources vidéo et audio du flux sont des éléments MediaStreamTrack et que les pistes sont arrêtées ou détruites.
Voir : : - MediaStoppedEvent
mediaStreamAvailable
Envoyé dès que le MediaStream est disponible.
Voir : : - Événement
muteForced
Un modérateur a désactivé le son de ce client.
Voir : : - Événement - Session.forceMuteAll() - Session.forceMuteStream() - Couper le son des flux vidéo dans une session
networkConditionChanged
Envoyé lorsqu'un changement d'état du réseau est détecté pour l'éditeur.
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'éditeur. 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"statsContainer— Objet contenant un instantané complet des statistiques actuelles, structuré de la même manière que l'objet renvoyé par unegetStats()invocation. Notez que pour un éditeur dans une session relayée, l'objet stats contient unconnectionIdet unsubscriberId, car l'éditeur envoie un flux distinct à chaque abonné et les statistiques sont communiquées par abonné. Cela permet à l'utilisateur d'identifier quel abonné est susceptible de subir une dégradation du réseau. Dans les sessions relayées, seules les statistiques correspondant à l'abonné concerné sont incluses dans l'événement.
Voir : : - Événement
streamCreated
L'éditeur a commencé la diffusion en continu de la session.
Voir : : - Événement de flux - Session.publish()
streamDestroyed
L'éditeur a cessé la diffusion en continu vers la session. Par défaut,
l'objet Publisher est supprimé du DOM HTML. L'objet Publisher déclenche un
destroyed événement déclenché lorsque l'élément est supprimé du DOM HTML. Si vous appelez la méthode
preventDefault() méthode de l'objet événement dans l'écouteur d'événement, le comportement par défaut
est désactivé, et vous pouvez, si vous le souhaitez, conserver l'éditeur pour le réutiliser ou le nettoyer
à l'aide de votre propre code.
Voir : : - Événement de flux
videoDimensionsChanged
Envoyé lorsque l'éditeur local <video> L'élément détecte un changement de dimension.
Lorsque l'éditeur est en cours de publication, cela met également à jour le
stream.videoDimensions propriété. Exemples de facteurs pouvant entraîner un redimensionnement de l'élément vidéo
local :
- Quand
stream.videoTypeest 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.
Voir : : - Événement « VideoDimensionsChanged »
vidéo désactivée
Envoyé lorsque la vidéo de l'éditeur est désactivée.
Avant d'envoyer cet événement, lorsque la qualité du flux de l'éditeur se détériore à un niveau
suffisamment bas pour que le flux vidéo risque d'être désactivé, l'éditeur
envoie un videoDisableWarning événement.
Si la connexion s'améliore et permet à nouveau la lecture de vidéos, l'objet Publisher déclenche
un videoEnabled événement, et l'abonné recommence à recevoir la vidéo.
Par défaut, Publisher 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 correspondant à ce motif est déclenché. Vous pouvez contrôler
l'affichage de cette icône en configurant le videoDisabledDisplayMode avec le
Publisher.setStyle() méthode ou en configurant le videoDisabledDisplayMode
style propriété lors de l'initialisation du Publisher avec le
OT.initPublisher() méthode.
Vous pouvez activer cette fonctionnalité de repli « audio uniquement » en configurant le paramètre
publisher à la propriété true dans le
audioFallback option transmise
à la OT.initPublisher() méthode pour le client de publication. (Voir
OT.initPublisher().)
Voir : : - Événement - videoDisableWarning événement - videoEnabled événement
videoDisableWarning
Envoyé lorsque l'éditeur constate une dégradation de la qualité du flux
; la vidéo sera désactivée si la qualité continue de se dégrader. Si la qualité continue de se dégrader,
l'éditeur désactive la vidéo et envoie un videoDisabled événement.
Par défaut, Publisher 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 de l'éditeur et
la configuration de la videoDisabledDisplayMode propriété, ou vous pouvez définir la
videoDisabledDisplayMode propriété lors de l'appel de la
OT.initPublisher() méthode et en définissant le style propriété
de la properties paramètre.
Voir : : - Événement - vidéo désactivée événement - videoDisableWarningLifted événement
videoDisableWarningLifted
Déclenché lorsque l'éditeur estime 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 Éditeur a déclenché un videoDisableWarning événement.
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'éditeur. Ajoutez un écouteur pour cet événement lorsque
vous définissez le insertDefaultUI à l'option false dans l'appel à la
OT.initPublisher() méthode. La méthode element
La propriété de l'objet événement est une référence à l'éditeur 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 Publisher.
Voir : : - Événement de création d'un élément vidéo
videoEnabled
Déclenché lorsque l'éditeur reprend l'envoi de la vidéo à l'éditeur après que la vidéo ait été désactivée auparavant.
Voir : : - Événement - vidéo désactivée événement
videoQualityChanged
Envoyé lorsque l'éditeur détecte un changement significatif de la qualité vidéo, tel qu'une baisse de résolution ou une dégradation de la qualité due à la bande passante ou au processeur.
Cet événement diffère de videoDisabled et videoEnabled Événements liés à l'éditeur, dans la mesure où
ils signalent des changements ayant une incidence sur la qualité vidéo. videoDisabled et videoEnabled indique uniquement
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 audio). En revanche, cet événement fournit des informations de diagnostic sur les causes de la dégradation de la qualité — telles que
les limitations du processeur ou de la bande passante — et peut également être déclenché même lorsque la vidéo reste activée.
Cet événement a pour objectif principal d'indiquer les causes des limitations de qualité. Il est possible que la résolution
ou la couche vidéo change même lorsque la cause n'est pas explicitement un changement de résolution — par exemple, en raison
de limitations du processeur. Veuillez vous reporter aux statistiques mises à jour fournies dans l’événement pour obtenir le contexte complet. Lorsqu’une
cause de dégradation de la qualité précédemment active disparaît, l’événement est à nouveau déclenché avec "none"
comme raison.
Les reason Cette propriété définit la raison du changement de qualité vidéo. Elle peut prendre l'une des
valeurs suivantes :
"bandwidth"— Dégradation de la qualité due à une bande passante réseau insuffisante"cpu"— Dégradation de la qualité due aux limitations du processeur de l'appareil client"other"— Autres raisons non précisées"codecChange"— Indique que le codec vidéo a changé"resolutionChange"— Ce phénomène peut être dû à des contraintes de débit binaire, à l'adaptation de l'encodeur, à des modifications de la source vidéo (par exemple, changement de caméra ou de résolution d'entrée) ou à des modifications de configuration, et n'implique pas nécessairement une dégradation de la qualité."none"— Lorsqu’un motif de dégradation de la qualité précédemment actif est levé
Les statsContainer 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. Notez que pour un éditeur dans
une session relayée, l'objet stats contient un connectionId et un subscriberId, car l'
éditeur envoie un flux distinct à chaque abonné et les statistiques sont communiquées par abonné. Cela permet à l'utilisateur de
déterminer quel abonné est susceptible de subir une dégradation de la qualité. Dans les sessions relayées, seules les statistiques
correspondant à l'abonné concerné sont incluses dans l'événement.
Voir : : - Événement