El objeto «Subscriber» es una representación del elemento de vídeo local que está reproduciendo
una transmisión remota. El objeto «Subscriber» incluye métodos que permiten desactivar y activar
la reproducción de audio local para la transmisión a la que se está suscrito. El subscribe() método del
Sesión El objeto devuelve un objeto Subscriber.
Propiedades
| Nombre | Tipo | Descripción |
|---|---|---|
element |
Elemento | El elemento DOM HTML que contiene al suscriptor. |
id |
Cadena | El identificador DOM del suscriptor. |
stream |
Transmisión | El canal al que te estás suscribiendo. |
Métodos
| Nombre | Descripción | |
|---|---|---|
addEventListener(type, listener, context) |
En desuso. | |
getAudioVolume() → {Number} |
Devuelve el volumen de audio, entre 0 y 100, del suscriptor. | |
| `getCaptionsTranslationLanguage() → {CaptionsLanguageCode | null}` | Devuelve el código de idioma de traducción de los subtítulos actual para este suscriptor. |
getImgData() → {String} |
Devuelve la cadena de datos PNG codificada en base 64 que representa el vídeo del suscriptor. | |
getRtcStatsReport() → {Promise} |
Devuelve una promesa que, en caso de éxito, se resuelve con un objeto RtcStatsReport correspondiente a la transmisión a la que se está suscrito. | |
getStats(completionHandler) → {Promise.<SubscriberStats>} |
Devuelve los detalles sobre la calidad de la transmisión del suscriptor, incluyendo lo siguiente: - Total de paquetes de audio y vídeo perdidos - Total de paquetes de audio y vídeo recibidos - Total de bytes de audio y vídeo recibidos - Resolución real del vídeo recibido (a través de videoWidth() y videoHeight()) - Frecuencia de fotogramas real del vídeo descodificado (a través de video. |
|
getStyle() → {Object} |
Devuelve un objeto que contiene las propiedades que definen los controles actuales de la interfaz de usuario del suscriptor. | |
isAudioBlocked() |
Indica si el audio del suscriptor está bloqueado debido a la política de reproducción automática de audio del navegador. | |
isSubscribedToCaptions() |
Si el suscriptor está recibiendo subtítulos. | |
off(type, handler, context) → {Object} |
Elimina uno o varios controladores de eventos. | |
on(type, handler, context) → {EventDispatcher} |
Añade una función de gestión de eventos para uno o varios eventos. | |
once(type, handler, context) → {Object} |
Añade una función de gestión de eventos para uno o varios eventos. | |
removeEventListener(type, listener, context) |
En desuso. | |
restrictFrameRate(value) → {Subscriber} |
Limita la frecuencia de fotogramas de la transmisión de vídeo del suscriptor cuando se pasa true. |
|
setAudioMediaProcessorConnector(mediaProcessorConnector) → {Promise} |
Establece un MediaProcessorConnector para la pista de audio del suscriptor. | |
setAudioVolume(value) → {Subscriber} |
Establece el volumen de audio del suscriptor, entre 0 y 100. | |
setCaptionsTranslationLanguage(langCode) |
Establece el idioma preferido para la traducción de los subtítulos de este suscriptor. | |
setPreferredFrameRate(frameRate) → {Promise.<void>} |
Establece la frecuencia de fotogramas preferida del vídeo del suscriptor. | |
setPreferredResolution(resolution) → {Promise.<void>} |
Establece la resolución preferida del vídeo del suscriptor. | |
setStyle(style, value) → {Subscriber} |
Establece las propiedades que definen el aspecto de algunos controles de la interfaz de usuario del Suscriptor. | |
setVideoMediaProcessorConnector(mediaProcessorConnector) → {Promise} |
Establece un MediaProcessorConnector para la pista de vídeo del suscriptor. | |
subscribeToAudio(value) → {Subscriber} |
Activa y desactiva el audio. | |
subscribeToCaptions(value) → {Promise.<void>} |
Activa y desactiva los subtítulos. | |
subscribeToVideo(value) → {Subscriber} |
Activa y desactiva el vídeo. | |
videoHeight() → {Number} |
Devuelve la altura real recibida, en píxeles, del vídeo del suscriptor. | |
videoWidth() → {Number} |
Devuelve la anchura real recibida, en píxeles, del vídeo del suscriptor. |
addEventListener(tipo, oyente, contexto)
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
type |
Cadena | La cadena que identifica el tipo de evento. |
listener |
función | La función que se invocará cuando el objeto dispache el evento. |
context |
Objeto | (Opcional) Define el valor de this en la función del controlador de eventos. |
En desuso — uso on() o una vez() en su lugar.
Este método registra un método como detector de eventos para un evento concreto.
Si no hay ningún controlador registrado para un evento, dicho evento se ignora a nivel local. Si la función de escucha de eventos no existe, el evento se ignora a nivel local.
Lanza una excepción si el listener El nombre no es válido.
Véase: : - on() - una vez() - Eventos
getAudioVolume() → {Number}
Devuelve el volumen de audio, entre 0 y 100, del suscriptor.
Por lo general, este método se utiliza junto con el setAudioVolume()
método.
Véase: : - setAudioVolume()
Devoluciones:
El volumen del audio, entre 0 y 100, del suscriptor.
getCaptionsTranslationLanguage() → {CaptionsLanguageCode|null}
Devuelve el código del idioma de traducción de los subtítulos actual para este suscriptor.
Si no se ha establecido ningún idioma de traducción, devuelve null para indicar que se utiliza el idioma predeterminado.
Esta es una función en fase beta privada.
Devoluciones:
El código de idioma establecido actualmente para
la traducción de los subtítulos, o null si es el valor por defecto.
getImgData() → {String}
Devuelve la cadena de datos PNG codificada en base 64 que representa el vídeo del suscriptor.
Puedes utilizar la cadena como valor para un esquema de URL de datos que se pase al parámetro «src» de un archivo de imagen, tal y como se muestra a continuación:
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);
Devoluciones:
La cadena codificada en base 64. Devuelve una cadena vacía si no hay ningún vídeo.
getRtcStatsReport() → {Promise}
Devuelve una promesa que, en caso de éxito, se resuelve con un objeto RtcStatsReport para el flujo al que se está suscrito. (Véase Informe de estadísticas de RTC.)
La Promesa será rechazada en las siguientes condiciones:
- El navegador no admite este método (por ejemplo, en Chrome versión 57 y anteriores, que no admiten el RTCPeerConnection.getStats() (estándar).
- El PeerConnection porque el abonado no está conectado.
Véase: : - Publisher.getRtcStatsReport()
Devoluciones:
Una promesa que se resuelve cuando la operación se completa con éxito. Si se produce un error, la promesa se rechaza.
getStats(completionHandler) → {Promise.<SubscriberStats>}
Devuelve los detalles sobre la calidad de la transmisión del suscriptor, incluyendo lo siguiente:
- Total de paquetes de audio y vídeo perdidos
- Total de paquetes de audio y vídeo recibidos
- Total de bytes de audio y vídeo recibidos
- Resolución real del vídeo recibido (a través de videoWidth() y videoHeight())
- Frecuencia de fotogramas real del vídeo descodificado (a través de
video.decodedFrameRate)
Puedes publicar un flujo de prueba, suscribirte a él (en el cliente de publicación) y utilizar este método
para comprobar su calidad. En función de la calidad del flujo, puedes determinar qué resolución de vídeo es
compatible y si las condiciones permiten la transmisión de vídeo o audio. A continuación, puede publicar una
transmisión adecuada, en función de los resultados. Al utilizar este método para probar una transmisión publicada por su
propio cliente, establezca el testNetwork propiedad a true en las opciones que
pasas a la Session.subscribe() método. Por ejemplo,
consulta el prueba-de-red-opentok
proyecto en GitHub.
También puedes utilizar estas estadísticas para que un suscriptor pase a un modo solo de audio si la pérdida de paquetes de audio
alcanza un umbral determinado. Si decides hacerlo, debes configurar el
subscriber propiedad del audioFallback oponerse a false
al inicializar los objetos Publisher para la sesión. Esto evita que el
Vonage Video Media Router utilice su propia implementación de conmutación a solo audio.
(Consulta la documentación de OT.initPublisher() método).
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
completionHandler |
función | Una función opcional que toma los siguientes parámetros: - error (Error) — La propiedad «error» se establece si el cliente no está conectado. Una vez completada con éxito la llamada al método, esta propiedad queda sin definir. - stats (Objeto) — Un objeto con las siguientes propiedades: - audio.bytesReceived (Número) — El número total de bytes de audio recibidos por el abonado - audio.packetsLost (Número) — Total de paquetes de audio que no llegaron al abonado - audio.packetsReceived (Número) — Número total de paquetes de audio recibidos por el abonado - timestamp (Número) — La marca de tiempo, en milisegundos desde la época Unix, en la que se recopilaron estas estadísticas - video.bytesReceived (Número) — Total de bytes de vídeo recibidos por el abonado - video.packetsLost (Número) — El número total de paquetes de vídeo que no llegaron al abonado - video.packetsReceived (Número) — El número total de paquetes de vídeo recibidos por el abonado - video.frameRate (Número) — La frecuencia media actual de fotogramas del vídeo. Esta propiedad está en desuso y se eliminará en el futuro. En su lugar, utiliza la video.decodedFrameRate propiedad. - video.decodedFrameRate (Número) — La frecuencia de fotogramas del vídeo descodificado (en fotogramas por segundo) - video.codec (Cadena) — El códec de vídeo utilizado por este abonado - video.pauseCount (Número) — Número de veces que se ha pausado la reproducción del vídeo del suscriptor. Se detecta una pausa si no se reproduce ningún fotograma durante más de 5 segundos - video.totalPausesDuration (Número) — Duración acumulada (en milisegundos) de todas las pausas detectadas en la reproducción de vídeo - video.freezeCount (Número) — Número de veces que se ha congelado el vídeo del suscriptor. Una congelación se define en función de la Especificación de estadísticas de WebRTC - video.totalFreezesDuration (Número) — Duración acumulada (en milisegundos) de todas las interrupciones detectadas en la reproducción de vídeo del abonado - senderStats.connectionMaxAllocatedBitrate (Número) — La velocidad de transmisión máxima que se puede estimar para la conexión del remitente, en bps (bits por segundo) - senderStats.connectionEstimatedBandwidth (Número) — Estimación actual del ancho de banda de la conexión del remitente, en bps (bits por segundo) - transport.connectionEstimatedBandwidth (Número) — El ancho de banda disponible estimado para la conexión local, en bits por segundo (bps) - transport.networkCondition (Cadena) — Estado actual de la conexión local. Los valores posibles son: unknown, critical, warning, fair, good y excellent. - transport.networkConditionReason (Cadena) — Motivo principal que afecta al estado de la red local. Los valores posibles son: none, unknown, bandwidth y packetLoss. - remotePublisherTransport.connectionEstimatedBandwidth (Número) — El ancho de banda disponible estimado para la conexión del editor remoto, en bits por segundo (bps) - remotePublisherTransport.networkCondition (Cadena) — Estado actual de la conexión de red con el editor remoto. Los valores posibles son: unknown, critical, warning, fair, good y excellent. - remotePublisherTransport.networkConditionReason (Cadena) — Motivo principal que afecta al estado de la red del editor remoto. Los valores posibles son: none, unknown, bandwidth y packetLoss. - networkDegradationSource (Cadena) — En caso de deterioro de la red, indica qué lado lo ha provocado. Los valores posibles son: none, bothOrUnclear, local y remote. |
Véase: : - Publisher.getStats() - Publisher.getRtcStatsReport()
Devoluciones:
getStyle() → {Object}
Devuelve un objeto que contiene las propiedades que definen los controles actuales de la interfaz de usuario del
Suscriptor. Puedes modificar las propiedades de este objeto y pasar el objeto a la
setStyle() método del objeto Subscriber. (Consulta la documentación de
setStyle() para ver los estilos que definen este objeto.)
Véase: : - setStyle()
Devoluciones:
El objeto que define los estilos del suscriptor.
isAudioBlocked()
Indica si el audio del suscriptor está bloqueado debido a la política de reproducción automática de audio del navegador.
Véase:
: - OT.desbloquearAudio()
- El audioBloqueado
y audio sin restricciones
Eventos para suscriptores
- El style.audioBlockedDisplayMode propiedad del
options del
Session.subscribe() método
isSubscribedToCaptions()
Si el suscriptor está recibiendo subtítulos. Esta propiedad puede cambiar si el suscriptor activa
o desactiva los subtítulos (mediante la llamada a la función Subscriber.subscribeToCaptions()
método). El valor por defecto es
el hasCaptions propiedad del editor del flujo en el momento de la inicialización del suscriptor (véase el
Propiedad Stream.hasCaptions).
Puedes establecer el valor inicial de esta propiedad configurando el subscribeToCaptions
propiedad de la options del Session.subscribe()
método.
Véase: : - Subscriber.subscribeToCaptions() - Session.subscribe()
off(tipo, controlador, contexto) → {Object}
Elimina uno o varios controladores de eventos.
Si se pasa un nombre de evento y un método de gestión, dicho método se elimina para ese evento:
obj.off("eventName", eventHandler);
Si se pasan varios nombres de eventos y un método de gestión, dicho método se elimina para esos eventos:
obj.off("eventName1 eventName2", eventHandler);
Si pasas un nombre de evento (o varios nombres) y no método de controladores: se eliminan todos los controladores para esos eventos:
obj.off("event1Name event2Name");
Si no se pasan argumentos, todos Se eliminan los controladores de eventos para todos los eventos enviados por el objeto:
obj.off();
El método también admite una sintaxis alternativa, en la que el primer parámetro es un objeto que consta de un mapa hash con los nombres de los eventos y las funciones de gestión, y el segundo parámetro (opcional) es el contexto para cada una de estas funciones:
obj.off(
{
eventName1: event1Handler,
eventName2: event2Handler
});
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
type |
Cadena | (Opcional) La cadena que identifica el tipo de evento. Puedes utilizar un espacio para especificar varios eventos, como en «accessAllowed accessDenied accessDialogClosed». Si no pasas ningún type valor (u otros argumentos), se eliminan todos los controladores de eventos del objeto. |
handler |
función | (Opcional) La función de gestión de eventos que se va a eliminar. El gestor debe ser el mismo objeto de función que se pasó a on(). Ten cuidado con los ayudantes como bind() que devuelven una nueva función cuando se invocan. Si no se pasa ningún handler, se eliminan todos los controladores de eventos para el evento especificado type. |
context |
Objeto | (Opcional) Si especificas un context, se elimina el controlador de eventos para todos los eventos especificados y los controladores que utilicen el contexto especificado. (El contexto debe coincidir con el contexto pasado a on().) |
Véase: : - on() - una vez() - Eventos
Devoluciones:
El objeto que ha activado el evento.
on(tipo, controlador, contexto) → {EventDispatcher}
Añade una función de gestión de eventos para uno o varios eventos.
El siguiente código añade un controlador de eventos para un evento:
obj.on("eventName", function (event) {
// This is the event handler.
});
Si se pasan varios nombres de eventos y un método de gestión, dicho método se registra para cada uno de esos eventos:
obj.on("eventName1 eventName2",
function (event) {
// This is the event handler.
});
También puedes pasar un tercer context parámetro (que es opcional) para
definir el valor de this en el método del controlador:
obj.on("eventName",
function (event) {
// This is the event handler.
},
obj);
El método también admite una sintaxis alternativa, en la que el primer parámetro es un objeto que constituye un mapa hash de nombres de eventos y funciones de gestión, y el segundo parámetro (opcional) es el contexto para cada una de estas funciones de gestión:
obj.on(
{
eventName1: function (event) {
// This is the handler for eventName1.
},
eventName2: function (event) {
// This is the handler for eventName2.
}
},
obj);
Si no se añade un controlador para un evento, este se ignora a nivel local.
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
type |
Cadena | La cadena que identifica el tipo de evento. En esta cadena puedes especificar varios nombres de eventos, separándolos con un espacio. El controlador de eventos procesará cada uno de ellos. |
handler |
función | La función de gestión encargada de procesar el evento. Esta función toma el objeto del evento como parámetro. |
context |
Objeto | (Opcional) Define el valor de this en la función del controlador de eventos. |
Véase: : - off() - una vez() - Eventos
Devoluciones:
El objeto EventDispatcher.
once(tipo, controlador, contexto) → {Object}
Añade una función de gestión de eventos para uno o varios eventos. Una vez que se invoca el gestor,
el método de gestión especificado deja de ser el gestor de este evento. (Cuando se utiliza
el on() método para añadir un controlador de eventos; el controlador es no
se elimina cuando se invoca.) El once() El método es equivalente a
llamar a la on()
método y llamada off() la primera vez que se invoca el controlador.
El siguiente código añade un controlador de eventos de uso único para un evento:
obj.once("eventName", function (event) {
// This is the event handler.
});
Si se pasan varios nombres de eventos y un método de gestión, dicho método se registra para cada uno de esos eventos:
obj.once("eventName1 eventName2"
function (event) {
// This is the event handler.
});
También puedes pasar un tercer context parámetro (que es opcional) para definir
el valor de
this en el método del controlador:
obj.once("eventName",
function (event) {
// This is the event handler.
},
obj);
El método también admite una sintaxis alternativa, en la que el primer parámetro es un objeto que consta de un mapa hash con los nombres de los eventos y las funciones de gestión, y el segundo parámetro (opcional) es el contexto para cada una de estas funciones:
obj.once(
{
eventName1: function (event) {
// This is the event handler for eventName1.
},
eventName2: function (event) {
// This is the event handler for eventName1.
}
},
obj);
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
type |
Cadena | La cadena que identifica el tipo de evento. En esta cadena puedes especificar varios nombres de eventos, separándolos con un espacio. El controlador de eventos procesará la primera aparición de dichos eventos. Tras el primer evento, el controlador se elimina (para todos los eventos especificados). |
handler |
función | La función de gestión encargada de procesar el evento. Esta función toma el objeto del evento como parámetro. |
context |
Objeto | (Opcional) Define el valor de this en la función del controlador de eventos. |
Véase: : - on() - off() - Eventos
Devoluciones:
El objeto que ha activado el evento.
removeEventListener(tipo, oyente, contexto)
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
type |
Cadena | La cadena que identifica el tipo de evento. |
listener |
función | La función de escucha de eventos que hay que eliminar. |
context |
Objeto | (Opcional) Si especificas un context, se elimina el controlador de eventos para todos los eventos especificados y los oyentes de eventos que utilicen el contexto especificado. (El contexto debe coincidir con el contexto pasado a addEventListener().) |
En desuso — uso off() en su lugar.
Elimina un detector de eventos para un evento concreto.
Lanza una excepción si el listener El nombre no es válido.
restrictFrameRate(valor) → {Suscriptor}
Limita la frecuencia de fotogramas de la transmisión de vídeo del suscriptor cuando se pasa
true. Cuando pasas false, la frecuencia de fotogramas de la transmisión de vídeo
no está limitada.
Cuando se limita la frecuencia de fotogramas, el fotograma de vídeo del suscriptor se actualizará una vez o menos por segundo.
Esta función solo está disponible en las sesiones que utilizan el enrutador multimedia de la Video API de Vonage (sesiones con el modo multimedia (configurado en «routed»), pero no en sesiones cuyo modo multimedia esté configurado en «relayed». En sesiones de tipo «relayed», la llamada a este método no tiene ningún efecto.
La restricción de la frecuencia de imagen del abonado tiene las siguientes ventajas:
- Reduce el uso de la CPU.
- Reduce el ancho de banda de la red que se consume.
- Te permite suscribirte a más flujos simultáneamente.
La reducción de la frecuencia de fotogramas de un suscriptor no afecta a la frecuencia de fotogramas del vídeo en otros clientes.
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
value |
Booleano | Si se debe limitar la frecuencia de fotogramas del vídeo del suscriptor (true) o no (false). |
Devoluciones:
El objeto «Subscriber». Esto te permite encadenar llamadas a métodos, como en el siguiente ejemplo:
mySubscriber.restrictFrameRate(false).subscribeToAudio(true);
setAudioMediaProcessorConnector(mediaProcessorConnector) → {Promise}
Establece un MediaProcessorConnector para la pista de audio del suscriptor. Un suscriptor solo puede tener una pista de audio MediaProcessorConnector se aplica de una sola vez. Al configurar un nuevo conector, se elimina el conector de audio configurado anteriormente.
Nota: Los MediaProcessors solo son compatibles con las versiones recientes de Chrome, Electron, Opera, Edge, Samsung Internet y WebView para Android. No son compatibles con otros navegadores (que no estén basados en Chromium) ni con iOS. Puedes comprobar si el cliente admite esta función llamando a la función OT.hasMediaProcessorSupport('audio') método.
La llamada a este método da lugar a un error (la Promise devuelta por el método se rechaza) en las siguientes condiciones:
- Se ha producido un error al obtener la pista procesada del MediaProcessorConnector.
Puedes borrar el conector actual llamando a este método con null.
Para más información, consulte el Uso de la biblioteca Vonage Media Processor guía del desarrollador.
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
mediaProcessorConnector |
MediaProcessorConnector | Una instancia de MediaProcessorConnector. Consulta el Documentación de la biblioteca de Vonage Media Processor. |
Véase: : - OT.hasMediaProcessorSupport('audio')
Devoluciones:
Una promesa que se resuelve cuando la operación se completa con éxito. Si se produce un error, la promesa se rechaza y no se establece ningún conector.
setAudioVolume(valor) → {Suscriptor}
Establece el volumen de audio del suscriptor, entre 0 y 100.
Puedes configurar el volumen inicial al llamar a la función Session.subscribe()
método. Pasa un audioVolume propiedad del properties parámetro
del método.
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
value |
Numbers | El volumen del audio, entre 0 y 100. |
Véase: : - getAudioVolume() - Session.subscribe()
Devoluciones:
El objeto «Subscriber». Esto te permite encadenar llamadas a métodos, como en el siguiente ejemplo:
mySubscriber.setAudioVolume(50).setStyle(newStyle);
setCaptionsTranslationLanguage(código de idioma)
Establece el idioma preferido para la traducción de los subtítulos de este suscriptor.
Esta es una función en fase beta privada.
Parámetros:
| Nombre | Tipo | Descripción | |
|---|---|---|---|
langCode |
Código de idioma de los subtítulos | null | El código de idioma al que se deben traducir los subtítulos. Omitir null utilizar el idioma predeterminado de la sesión (sin traducción). |
setPreferredFrameRate(frameRate) → {Promise.<void>}
Establece la frecuencia de fotogramas preferida del vídeo del suscriptor.
Reducir la frecuencia de fotogramas preferida disminuye la calidad del vídeo en el cliente suscriptor, pero también reduce el uso de la red y de la CPU. Quizá te interese utilizar una frecuencia de fotogramas más baja para un suscriptor de una transmisión que sea menos importante que otras transmisiones.
Este método solo se aplica al suscribirse a una transmisión que utilice el función de vídeo escalable. Hay vídeo escalable disponible:
- Solo en las sesiones que utilizan el enrutador multimedia de la Video API de Vonage (sesiones con el medios modo enrutado).
- Solo para transmisiones publicadas por clientes que admitan vídeo escalable: clientes que utilicen el SDK para iOS de la Video API de Vonage (en determinados dispositivos), el SDK para Android de la Video API de Vonage (en determinados dispositivos) u OpenTok.js en Chrome y Safari.
En las transmisiones que no utilizan vídeo escalable, llamar a este método no tiene ningún efecto.
Nota: La frecuencia de fotogramas de las transmisiones de vídeo escalables se ajusta automáticamente para cada suscriptor, en función de las condiciones de la red y del uso de la CPU, incluso si no se invoca este método. Invoca este método si deseas establecer una frecuencia de fotogramas máxima para este suscriptor.
No todas las frecuencias de fotogramas están disponibles para un suscriptor. Cuando estableces la frecuencia de fotogramas preferida para
el suscriptor, OpenTok.js selecciona la mejor frecuencia de fotogramas disponible que se ajuste a tu configuración.
Las frecuencias de fotogramas disponibles dependen del valor de la propiedad del objeto «Subscriber»
stream.frameRate propiedad, que representa el valor máximo disponible para la
transmisión. Las velocidades de fotogramas reales disponibles dependen, de forma dinámica, de los recursos de red y de CPU
de los que dispongan el emisor y el receptor.
Puedes configurar la frecuencia de fotogramas preferida inicial mediante el ajuste de la preferredFrameRate
propiedad de la options que se pasa al objeto Session.subscribe()
método.
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
frameRate |
Numbers | Establece este valor en la frecuencia de fotogramas deseada (en fotogramas por segundo). Establece este valor en null para eliminar la frecuencia de fotogramas preferida, y el cliente utilizará la frecuencia de fotogramas más alta disponible. |
Véase: : - Subscriber.setPreferredResolution() - Session.subscribe()
Devoluciones:
Una promesa que se resuelve cuando la frecuencia de fotogramas preferida se ha
aplicado correctamente, o que se rechaza con un Error en las siguientes condiciones:
- El suscriptor se ha eliminado o aún no se ha conectado a un editor.
- La sesión utiliza el modo multimedia entre pares, que no admite esta función.
- La actualización del flujo subyacente falla.
setPreferredResolution(resolution) → {Promise.<void>}
Establece la resolución preferida del vídeo del suscriptor.
Reducir la resolución preferida disminuye la calidad del vídeo en el cliente suscrito, pero también reduce el uso de la red y de la CPU. Es posible que desee utilizar una resolución más baja en función de las dimensiones del vídeo del suscriptor en la página web. También puede optar por utilizar una resolución para un suscriptor de una transmisión que sea menos importante (y más pequeña) que otras transmisiones.
Este método solo se aplica al suscribirse a una transmisión que utilice el función de vídeo escalable. Hay vídeo escalable disponible:
- Solo en las sesiones que utilizan el enrutador multimedia de la Video API de Vonage (sesiones con el medios modo enrutado).
- Solo para transmisiones publicadas por clientes que admitan vídeo escalable: clientes que utilicen el SDK para iOS de la Video API de Vonage (en determinados dispositivos), el SDK para Android de la Video API de Vonage (en determinados dispositivos) u OpenTok.js en Chrome y Safari.
En las transmisiones que no utilizan vídeo escalable, llamar a este método no tiene ningún efecto.
Nota: La resolución de las transmisiones de vídeo escalables se ajusta automáticamente para cada suscriptor, en función de las condiciones de la red y del uso de la CPU, incluso si no se invoca este método. Invoca este método si deseas establecer una resolución máxima para este suscriptor.
En las transmisiones que no utilizan vídeo escalable, llamar a este método no tiene ningún efecto.
No todas las velocidades de fotogramas están disponibles para un suscriptor. Cuando estableces la resolución preferida para
el suscriptor, OpenTok.js selecciona la mejor resolución disponible que se ajuste a tu configuración.
Las resoluciones disponibles dependen del valor de la propiedad del objeto «Subscriber»
stream.resolution propiedad, que representa la resolución máxima disponible para
la transmisión. Las resoluciones reales disponibles dependen, de forma dinámica, de los recursos de red y de CPU
de los que dispongan el emisor y el suscriptor.
Puedes configurar la resolución preferida inicial que se utilizará estableciendo el
preferredResolution propiedad del options que se pasa al objeto
Session.subscribe() método.
Nota: Si configuras la resolución preferida inicial en "auto" al llamar
Session.subscribe(), llamando a setPreferredResolution() se interrumpe sin mostrar ningún mensaje,
y recibirás una advertencia.
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
resolution |
Objeto | Establece esto como un objeto con dos propiedades: width y height (ambos números), como por ejemplo {width: 320, height: 240}. Ajústelo a null para eliminar la resolución preferida, y el cliente utilizará la resolución más alta disponible. |
Véase: : - Subscriber.setPreferredFrameRate() - Session.subscribe()
Devoluciones:
Una promesa que se resuelve cuando la resolución preferida se ha
aplicado correctamente, o se rechaza con un Error en las siguientes condiciones:
- El suscriptor se inicializó con
preferredResolution: 'auto'. - El valor
'auto'se pasa directamente a este método. - El suscriptor se ha eliminado o aún no se ha conectado a un editor.
- La sesión utiliza el modo multimedia entre pares, que no admite esta función.
setStyle(estilo, valor) → {Suscriptor}
Establece las propiedades que definen el aspecto de algunos controles de la interfaz de usuario del Suscriptor.
Puedes pasar uno o dos parámetros a este método.
Si pasas un parámetro, style, es un objeto que tiene las siguientes
propiedades:
audioBlockedDisplayMode(Cadena) — Indica si se debe mostrar el icono predeterminado de audio bloqueado en «Suscriptores» (en los navegadores en los que se bloquea la reproducción automática de audio). Los valores posibles son:"auto"(el icono predeterminado se muestra cuando el audio está desactivado) y"off"(el icono no se muestra). Configúralo en"off"si quieres mostrar tu propio elemento de interfaz de usuario que indique que el audio está bloqueado. En respuesta a un elemento HTML que envía unclickevento, puedes llamar a la OT.desbloquearAudio() Método para iniciar la reproducción de audio en este y en todos los demás suscriptores bloqueados.audioLevelDisplayMode(Cadena) — Cómo mostrar el indicador de nivel de audio. Los valores posibles son:"auto"(el indicador aparece cuando el vídeo está desactivado),"off"(el indicador no se muestra), y"on"(el indicador siempre está visible).backgroundImageURI(Cadena) — Un URI de una imagen que se mostrará como imagen de fondo cuando no se muestre ningún vídeo. (Es posible que no se muestre ningún vídeo si se llama asubscribeToVideo(false)en el objeto Publisher). Puedes pasar un URI http o https a la ubicación de un archivo PNG, JPEG o GIF no animado. También puedes utilizar eldataEsquema URI (en lugar de http o https) y pasar datos PNG cifrados en base-64, como los obtenidos de la Subscriber.getImgData() método (por ejemplo, podrías llamar amySubscriber.setStyle("backgroundImageURI", mySubscriber.getImgData())). Si la URL o los datos de la imagen no son válidos, se ignora la propiedad (el intento de establecer la imagen falla sin mostrar ningún mensaje). Se eliminará el fondo actual si no se pasa ninguna imagen y se mostrarán las iniciales si se han establecido previamente.buttonDisplayMode(Cadena) — Cómo mostrar los controles del altavoz. Los valores posibles son:"auto"(los controles se muestran cuando se visualiza la transmisión por primera vez y cuando el usuario pasa el ratón por encima de la pantalla),"off"(los controles no se muestran), y"on"(los controles siempre están visibles).nameDisplayMode(Cadena) — Indica si se debe mostrar el nombre de la transmisión. Los valores posibles son:"auto"(el nombre aparece cuando se muestra la transmisión por primera vez y cuando el usuario pasa el ratón por encima de la pantalla),"off"(el nombre no aparece), y"on"(el nombre siempre aparece en pantalla).videoDisabledDisplayMode(Cadena) — Indica si se deben mostrar el indicador de vídeo desactivado y los iconos de advertencia de vídeo desactivado para un suscriptor. Estos iconos indican que el vídeo se ha desactivado (o que corre el riesgo de desactivarse, en el caso del icono de advertencia) debido a la mala calidad de la transmisión. Los valores posibles son:"auto"(los iconos aparecen automáticamente cuando el vídeo que se está reproduciendo se desactiva o corre el riesgo de desactivarse debido a la mala calidad de la transmisión),"off"(no mostrar los iconos), y"on"(mostrar los iconos).
Por ejemplo, el siguiente código pasa un parámetro al método:
mySubscriber.setStyle({nameDisplayMode: "off"});
Si pasas dos parámetros, style y value, son pares clave-valor
que definen una propiedad del estilo de visualización. Por ejemplo, el siguiente código pasa
dos valores de parámetro al método:
mySubscriber.setStyle("nameDisplayMode", "off");
Puedes configurar los ajustes iniciales al llamar a la función Session.subscribe() método.
Pasa un style propiedad como parte de la properties parámetro del
método.
El objeto OT envía un exception incluso si se pasa un estilo no válido
al método. El code La propiedad del objeto ExceptionEvent está establecida en 1011.
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
style |
Objeto | Puede ser un objeto que contenga propiedades que definan el estilo, o bien una cadena que defina esta única propiedad de estilo que se va a establecer. |
value |
Cadena | El valor que hay que establecer para el style se ha pasado. Pasa un valor para este parámetro solo si el valor del style El parámetro es una cadena de caracteres. |
Véase: : - getStyle() - setStyle() - Session.subscribe()
Devoluciones:
El objeto «Subscriber».
setVideoMediaProcessorConnector(mediaProcessorConnector) → {Promise}
Establece un MediaProcessorConnector para la pista de vídeo del suscriptor. Un suscriptor solo puede tener una pista de vídeo MediaProcessorConnector se aplica de una sola vez. Al configurar un nuevo conector, se elimina el conector de vídeo configurado anteriormente.
Nota: Los MediaProcessors solo son compatibles con las versiones recientes de Chrome, Firefox, Electron, Opera, Edge, Samsung Internet, WebView para Android y las últimas versiones de Safari y WebView para iOS. Puedes comprobar si el cliente es compatible con esta función llamando a la función OT.hasMediaProcessorSupport('video') método.
La llamada a este método da lugar a un error (la Promise devuelta por el método se rechaza) en las siguientes condiciones:
- No hay ningún dispositivo de entrada de vídeo (cámaras) disponible.
- Se ha producido un error al adquirir vídeo desde el dispositivo de entrada de vídeo.
- Se ha producido un error al obtener la pista procesada del MediaProcessorConnector.
Puedes borrar el conector actual llamando a este método con null.
Para más información, consulte el Uso de la biblioteca Vonage Media Processor guía del desarrollador.
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
mediaProcessorConnector |
MediaProcessorConnector | Una instancia de MediaProcessorConnector. Consulta el Documentación de la biblioteca de Vonage Media Processor. |
Véase: : - OT.hasMediaProcessorSupport('video')
Devoluciones:
Una promesa que se resuelve cuando la operación se completa con éxito. Si se produce un error, la promesa se rechaza y no se establece ningún conector.
subscribeToAudio(valor) → {Suscriptor}
Activa y desactiva el audio. Inicia la suscripción al audio (si está disponible y aún
no se está suscrito a él) cuando el value es true; deja de
suscribirse al audio (si está suscrito en ese momento) cuando el value
es false.
Nota: Este método solo afecta a la reproducción local del audio. No tiene ningún impacto en el audio de otras conexiones suscritas a la misma transmisión. Si el editor no está publicando audio, activar el audio del suscriptor no tendrá ningún efecto práctico.
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
value |
Booleano | Si quieres empezar a suscribirte al contenido de audio (true) o no (false). |
Véase: : - subscribeToVideo() - Session.subscribe() - StreamPropertyChangedEvent
Devoluciones:
El objeto «Subscriber». Esto te permite encadenar llamadas a métodos, como en el siguiente ejemplo:
mySubscriber.subscribeToAudio(true).subscribeToVideo(false);
subscribeToCaptions(valor) → {Promise.<void>}
Activa y desactiva los subtítulos. Inicia la suscripción a los subtítulos (si están disponibles y actualmente
no se está suscrito a ellos) cuando el value es true; deja de
estar suscrito a los subtítulos (si actualmente está suscrito) cuando el value
es false.
El valor inicial se puede establecer configurando el subscribeToCaptions
propiedad de la options del Session.subscribe()
método. El valor por defecto es el hasCaptions propiedad del editor del flujo en el momento de la
inicialización del suscriptor (véase el
Propiedad Stream.hasCaptions).
Para más información, consulte el Subtítulos en directo guía del desarrollador.
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
value |
Booleano | Si quieres empezar a recibir los subtítulos (true) o no (false). |
Véase: : - isSubscribedToCaptions() - leyendaRecibido evento - StreamPropertyChangedEvent - Session.subscribe()
Devoluciones:
Una promesa que se resuelve cuando el servidor ha confirmado la actualización del canal de subtítulos. La promesa se rechaza si se produce un error al enviar la actualización.
subscribeToVideo(valor) → {Suscriptor}
Activa y desactiva el vídeo. Inicia la suscripción al vídeo (si está disponible y
aún no se está suscrito a él) cuando el value es true;
deja de suscribirse al vídeo (si ya está suscrito) cuando el
value es false.
Nota: Este método solo afecta a la reproducción local del vídeo. No tiene ningún impacto en el vídeo de otras conexiones suscritas a la misma transmisión. Si el editor no está publicando vídeo, activar el vídeo del suscriptor no tendrá ningún efecto práctico.
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
value |
Booleano | Si te conviene empezar a suscribirte a los vídeos (true) o no (false). |
Véase: : - subscribeToAudio() - Session.subscribe() - StreamPropertyChangedEvent
Devoluciones:
El objeto «Subscriber». Esto te permite encadenar llamadas a métodos, como en el siguiente ejemplo:
mySubscriber.subscribeToVideo(true).subscribeToAudio(false);
videoHeight() → {Number}
Devuelve la altura real recibida, en píxeles, del vídeo del suscriptor. Esto refleja la resolución descodificada del flujo de vídeo entrante, que puede diferir de la resolución de captura del editor debido a la adaptación de la red o de la CPU, o a la selección de la capa de vídeo escalable. Utiliza este método para observar la resolución real que se está reproduciendo para este suscriptor.
Para obtener más información sobre el control de la calidad de los cursos de agua, consulta el Observabilidad del cliente guía del desarrollador.
Véase: : - Subscriber.getStats()
Devoluciones:
La altura real recibida, en píxeles, del vídeo del suscriptor.
videoWidth() → {Number}
Devuelve el ancho real recibido, en píxeles, del vídeo del suscriptor. Esto refleja la resolución decodificada del flujo de vídeo entrante, que puede diferir de la resolución de captura del editor debido a la adaptación de la red o la CPU, o a la selección de la capa de vídeo escalable. Utiliza este método para observar la resolución real que se está reproduciendo para este suscriptor.
Para obtener más información sobre el control de la calidad de los cursos de agua, consulta el Observabilidad del cliente guía del desarrollador.
Véase: : - Subscriber.getStats()
Devoluciones:
La anchura real recibida, en píxeles, del vídeo del suscriptor.
Eventos
audioBloqueado
Se envía cuando el audio del suscriptor queda bloqueado debido a la política de reproducción automática del navegador.
Véase:
: - OT.desbloquearAudio()
- Subscriber.isAudioBlocked()
- El audio sin restricciones evento
- El style.audioBlockedDisplayMode propiedad del
options del
Session.subscribe() (método)
audioLevelUpdated
Se envía periódicamente para indicar el nivel de audio del suscriptor. El evento se envía
hasta 60 veces por segundo, dependiendo del navegador. El audioLevel La propiedad
del evento es el nivel de audio, que va de 0 a 1,0. Véase Evento de actualización del nivel de audio Para obtener
más información.
En el siguiente ejemplo se ajusta el valor de un elemento «meter» que muestra el volumen del suscriptor. Ten en cuenta que el nivel de audio se ajusta de forma logarítmica y que se aplica una media móvil:
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;
});
Este ejemplo muestra el algoritmo que utiliza el indicador de nivel de audio predeterminado que se muestra en un suscriptor de solo audio.
Véase: : - Evento de actualización del nivel de audio
audio sin restricciones
Se envía cuando se desbloquea el audio del suscriptor tras haber estado en pausa debido a la política de reproducción automática del navegador.
El audio del abonado se desbloquea cuando ocurre alguna de las siguientes situaciones:
- El usuario hace clic en el icono predeterminado de reproducción de audio del suscriptor
- El OT.desbloquearAudio()
El método se invoca en respuesta a la activación de un elemento HTML
que envía un
clickevento (si has desactivado el icono predeterminado de reproducción de audio) - El cliente local obtiene acceso a la cámara o al micrófono
(por ejemplo, tras una llamada satisfactoria a
OT.initPublisher()).
Véase:
: - OT.desbloquearAudio()
- El audioBloqueado evento
- El style.audioBlockedDisplayMode propiedad del
options del
Session#subscribe() (método)
leyendaRecibido
Se envía cuando el abonado recibe una leyenda del servicio de transcripción.
Primero debes llamar al Subscriber.subscribeToCaptions()
método (y el emisor de la transmisión debe estar emitiendo subtítulos) antes de recibir
captionReceived eventos.
Véase: : - CaptionReceivedEvent - Subtítulos en directo
conectado
Se envía cuando se reanuda la transmisión del suscriptor, después de que este envíe un
disconnected evento.
Véase: : - evento aislado - Evento
destruido
Se activa cuando el elemento «Subscriber» se elimina del DOM HTML. Cuando se activa este evento, puedes optar por modificar o eliminar los elementos del DOM HTML relacionados con el suscriptor.
Para evitar que el suscriptor sea eliminado del DOM cuando se destruya el flujo,
hay que estar atento al Evento «streamDestroyed»
enviado por el objeto Session. El streamDestroyed El evento enviado por el
objeto Session se puede cancelar, y al llamar a la función preventDefault() El método del
objeto de evento evita que los suscriptores del flujo sean eliminados del DOM HTML.
Véase: : - Evento
desconectado
Se envía cuando se ha interrumpido la transmisión del suscriptor.
En respuesta a este suceso, quizá te interese mostrar una notificación en la interfaz de usuario para informar al usuario de que la transmisión de audio y vídeo se ha desconectado temporalmente y de que la aplicación está intentando volver a conectarse a ella.
Si el cliente se vuelve a conectar a la transmisión, el objeto «Subscriber» envía un
connected evento. De lo contrario, si el cliente no puede volver a conectarse al flujo,
el objeto Subscriber envía un destroyed evento.
Véase: : - evento relacionado - Evento
encryptionSecretMatch
Se envía cuando es posible descifrar los datos multimedia de un suscriptor porque las claves de cifrado coinciden. Esto solo se envía cuando anteriormente se había producido una discrepancia entre las claves.
Véase: : - Evento - encryptionSecretMismatch evento - OT.initSession - session.setEncryptionSecret
encryptionSecretMismatch
Se envía cuando no es posible descifrar el contenido multimedia de un suscriptor porque las claves de cifrado no coinciden. En este caso, el usuario seguirá suscrito a la transmisión, pero el vídeo aparecerá en negro y el audio estará silenciado. Se considera una buena práctica explicar al usuario por qué no puede ver el contenido multimedia.
Véase: : - Evento - encryptionSecretMatch evento - OT.initSession - session.setEncryptionSecret
mediaStreamAvailable
Se envía cuando MediaStream está disponible.
Véase: : - Evento
cambio en el estado de la red
Se envía cuando se detecta un cambio en las condiciones de red del abonado o del editor remoto.
La implementación actual activa este evento únicamente cuando las condiciones de red han cambiado en cualquiera de las dos partes.
Este evento se diferencia de videoDisabled y videoEnabled eventos, en el sentido de que informa de
cambios en el estado de la red, en lugar de cambios en el estado de la pista de vídeo del suscriptor. Las aplicaciones pueden utilizar este evento para responder
a problemas de red, como actualizar la interfaz de usuario, registrar datos de telemetría o activar un comportamiento adaptativo.
Las características de este evento son las siguientes:
reason— Indica la causa del evento. Actualmente, siempre será"networkConditionChanged"stats— Objeto que contiene una instantánea completa de las estadísticas actuales, estructurado de forma idéntica al objeto devuelto por unagetStats()la invocación, incluyendo el estado de la red y el motivo de los problemas de transporte o de red, tanto locales como remotos, así como el origen del deterioro de la red.
Véase: : - Evento
qualityScoreChanged
Se envía cuando cambia la puntuación de la calidad de audio o de vídeo. Las puntuaciones son un valor heurístico que representa la experiencia esperada del suscriptor. Los valores oscilan entre 5 y 1, y los valores enteros se corresponden con «Excelente» | «Bueno» | «Aceptable» | «Deficiente» | «Malo».
Véase: : - Evento de cambio en la puntuación de calidad
videoDimensionsChanged
Se envía cuando el stream.videoDimensions La propiedad la actualiza el
editor. Esto ocurre cuando el elemento de vídeo local del editor detecta un cambio en las dimensiones
y notifica la actualización a todos los participantes de la sesión. Ejemplos de lo que puede provocar esto:
- En
stream.videoTypese establece en"screen"(compartir pantalla) y el usuario cambia el tamaño de la ventana capturada. - Cuando el vídeo se publica desde un dispositivo móvil y el usuario gira el dispositivo, lo que provoca que cambie la orientación de la cámara.
- Cuando llama la editorial Editor#setPreferredResolution, modificando la resolución de captura deseada.
Este objeto de evento tiene un newValue propiedad y un oldValue propiedad,
que representa las dimensiones nuevas y antiguas del vídeo. Cada una de ellas tiene una height
propiedad y un width propiedad que representa la altura y la anchura, en píxeles.
Nota: estas dimensiones corresponden a las indicadas por la editorial captura resolución (lo que el emisor codifica y envía), no la resolución realmente descodificada por este suscriptor. La resolución descodificada puede variar debido a la adaptación de la red o a la codificación de vídeo escalable. Utilizar N.º de suscriptor#ancho del vídeo y N.º de suscriptor#altura del vídeo para la resolución realmente recibida.
Véase: : - Evento de cambio de dimensiones del vídeo
vídeo desactivado
Se envía cuando el vídeo está desactivado para el suscriptor.
El reason La propiedad define el motivo por el que se ha desactivado el vídeo. Se puede establecer en
uno de los siguientes valores:
-
"codecNotSupported"— El navegador del cliente no es compatible con el códec de vídeo utilizado por la transmisión. Por ejemplo, en Safari, si te conectas a un sesión enrutada en un Video API de Vonage (excepto Safari) proyecto, y si intentas suscribirte a un flujo que incluya vídeo, el Suscriptor enviará unvideoDisabledevento con elreasonpropiedad establecida en"codecNotSupported". (En las sesiones enrutadas de un proyecto que no sea de Safari, los flujos utilizan el códec de vídeo VP8, que no es compatible con Safari.) El elemento «subscriber» también mostrará el mensaje «Formato de vídeo no compatible». (Véase OT.getSupportedCodecs().) -
"publishVideo"— La editorial dejó de publicar vídeos tras recibir una llamadapublishVideo(false). -
"quality"— El Vonage Video Media Router o el cliente de publicación dejó de enviar vídeo al suscriptor debido a cambios en la calidad de la transmisión provocados por una deterioro de la conectividad.En las sesiones enrutadas, el origen de este evento puede ser el Vonage Video Media Router (recaída de audio del abonado) o el cliente emisor (recaída de audio del emisor). En ambos casos, la transmisión de vídeo se interrumpe específicamente para el abonado afectado, mientras que la transmisión de audio (si la hay) continúa sin interrupciones. Cuando el origen es el cliente de publicación, el evento va seguido de un
streamPropertyChangedEvento enviado por el objeto de sesión que indica que el canal de vídeo al que se está suscrito ya no está activo. En general, este evento adicional indica un deterioro de la red por parte del editor; sin embargo, las métricas comunicadas por el suscriptor pueden influir en las decisiones de recambio del editor, lo que puede complicar la determinación del origen exacto del deterioro.En las sesiones retransmitidas, el
"quality"El evento se activa exclusivamente debido a la lógica interna de recambio de audio del editor (Publisher Audio Fallback). Este evento no va seguido de unstreamPropertyChangedevento que indica que el vídeo está inactivo, ya que es posible que otros suscriptores con mejores condiciones de red sigan recibiendo la transmisión. Ten en cuenta que, en las sesiones retransmitidas, aunque los eventos de recambio de audio se originan en el emisor, la degradación de la red puede producirse tanto en el lado del emisor como en el del suscriptor.Antes de enviar este evento, cuando la calidad de la transmisión del suscriptor se deteriora hasta un nivel tan bajo que la transmisión de vídeo corre el riesgo de desactivarse, el suscriptor envía un
videoDisableWarningevento.Si la conectividad mejora y vuelve a permitir la transmisión de vídeo, el objeto «Subscriber» envía un
videoEnabledevento, y el suscriptor vuelve a recibir el vídeo.Por defecto, el Suscriptor muestra un indicador de vídeo desactivado cuando un
videoDisabledEl evento con este motivo se envía y elimina el indicador cuando elvideoEnabledSe envía un evento con este motivo. Puedes controlar la visualización de este icono llamando a la funciónsetStyle()método del suscriptor, estableciendo elvideoDisabledDisplayModepropiedad (o también puedes establecer el estilo al llamar a laSession.subscribe()método, configurando elstylepropiedad de lapropertiesparámetro).Puedes controlar el comportamiento de la opción de reserva de solo audio configurando el
audioFallbackpropiedad del objeto pasado aOT.initPublisher()en el cliente de publicación. De forma predeterminada, la opción de audio alternativo del suscriptor está activada (excepto cuando se utiliza la función de compartir pantalla, en cuyo caso está desactivada de forma predeterminada) y la opción de audio alternativo del editor está desactivada. Para cambiar esto, configuraaudioFallback.subscriberafalsepara desactivar la alternativa de reserva del suscriptor, o configuraraudioFallback.publisheratruepara habilitar la opción de reserva del editor. (Véase OT.initPublisher().) -
"subscribeToVideo"— El suscriptor se ha dado de alta o ha cancelado su suscripción a un servicio de vídeo llamando alsubscribeToVideo(false).
Véase: : - Evento VideoEnabledChangedEvent - videoDesactivarAviso evento - videoEnabled evento
videoDesactivarAviso
Se envía cuando el enrutador multimedia de la Video API de Vonage detecta que la calidad de la transmisión se ha deteriorado
y el vídeo se desactivará si la calidad sigue empeorando. Si la calidad sigue empeorando,
el suscriptor desactiva el vídeo y envía un videoDisabled evento.
De forma predeterminada, el Suscriptor muestra un indicador de advertencia de vídeo desactivado cuando se envía este evento
(y el vídeo está desactivado). Puedes controlar la visualización de este icono llamando a la función setStyle() método y configurando el
videoDisabledDisplayMode propiedad (o puedes establecer el estilo al llamar
al Session.subscribe() método y configurando el style propiedad
de la properties parámetro).
Esta función solo está disponible en las sesiones que utilizan el enrutador multimedia de la Video API de Vonage (sesiones con el modo multimedia (configurado en «enrutado»), no en sesiones con el modo multimedia configurado en «retransmitido».
Véase: : - Evento - vídeo desactivado evento - videoAdvertencia desactivada evento
videoAdvertencia desactivada
Se envía cuando el enrutador multimedia de la Video API de Vonage determina que la calidad de la transmisión ha mejorado
hasta el punto de que la desactivación del vídeo no supone un riesgo inmediato. Este evento se
envía después de que el objeto «Suscriptor» envíe un videoDisableWarning evento.
Esta función solo está disponible en las sesiones que utilizan el enrutador multimedia de la Video API de Vonage (sesiones con el modo multimedia (configurado en «enrutado»), no en sesiones con el modo multimedia configurado en «retransmitido».
Véase: : - Evento - videoDesactivarAviso evento - vídeo desactivado evento
videoElementCreated
Se activa cuando se crea el elemento de vídeo del suscriptor. Añade un oyente para este evento cuando
configure el insertDefaultUI opción de false en la llamada a la
Session.subscribe() método. En element
La propiedad del objeto de evento es una referencia al Suscriptor video elemento
(o, en Internet Explorer, el object elemento que contiene el vídeo). Añádelo al
DOM HTML para mostrar el vídeo. Cuando establezcas el insertDefaultUI opción de
falseEl video (o object) no se inserta automáticamente
en el DOM.
Añade un oyente para este evento solo si has configurado el insertDefaultUI opción de
false. Si aún no has configurado insertDefaultUI opción de
false, no muevas el video (o object) en
el DOM de HTML. Al hacerlo, se destruye el objeto «Subscriber».
Véase: : - Evento de creación de un elemento de vídeo
videoEnabled
Se envía cuando el enrutador multimedia de la Video API de Vonage reanuda el envío de vídeo al abonado después de que el vídeo se hubiera desactivado previamente.
El reason La propiedad define el motivo por el que se activó el vídeo. Se puede establecer en
uno de los siguientes valores:
-
"codecChanged"— El vídeo para suscriptores se ha activado tras un cambio de códec a partir de uno incompatible. -
"publishVideo"— La editorial comenzó a publicar vídeos llamando apublishVideo(true). -
"quality"— El enrutador multimedia de la Video API de Vonage reanudó el envío de vídeo al abonado en función de los cambios en la calidad de la transmisión. Esta función del enrutador multimedia de la Video API de Vonage hace que el abonado interrumpa la transmisión de vídeo cuando la conectividad se deteriora y, a continuación, reanude la transmisión de vídeo si la calidad de la misma mejora.Esta función solo está disponible en las sesiones que utilizan el enrutador multimedia de la Video API de Vonage (sesiones con el modo multimedia (configurado en «enrutado»), no en sesiones con el modo multimedia configurado en «retransmitido».
-
"subscribeToVideo"— El suscriptor se ha dado de alta o ha cancelado su suscripción a un servicio de vídeo llamando alsubscribeToVideo(false).
Véase: : - Evento VideoEnabledChangedEvent - vídeo desactivado evento
videoQualityChanged
Se envía cuando se detecta una interrupción en la calidad del vídeo —una pausa— o un cambio de códec.
Las bloqueos se registran internamente y se muestran a través de estadísticas, pero no se activa ningún evento por cada bloqueo debido a su corta duración y a su elevada frecuencia potencial.
Un evento solo se activa cuando se detecta una pausa (por ejemplo, cuando no se reproduce ningún fotograma durante más de 5 segundos), ya que esto supone una interrupción más significativa en la reproducción multimedia.
Este evento se diferencia de videoDisabled y videoEnabled Eventos de suscriptor en los que
se notifican cambios relevantes en la calidad del vídeo. videoDisabled y videoEnabled «only»
indica que la pista de vídeo del suscriptor se ha activado o desactivado (por ejemplo, debido a una actualización de las propiedades de la transmisión
o a un cambio a audio alternativo). Por el contrario, este evento proporciona información de diagnóstico sobre las causas de la pérdida de calidad,
como el número de congelaciones y pausas, así como estadísticas actualizadas.
Este evento tiene en cuenta todo tipo de interrupciones de vídeo que duren 5 segundos o más. Esto significa que, en el
caso concreto de la conmutación a audio o de los cambios en las propiedades de la transmisión (como la desactivación del vídeo), además de activar
el videoEnabled y videoDisabled En estos casos, la interrupción también se registra como una
pausa en las estadísticas de vídeo, y se activará el evento correspondiente de cambio de calidad por interrupción del vídeo
una vez que se restablezca la transmisión.
El reason Esta propiedad define el motivo del cambio en la calidad del vídeo. Se puede establecer en uno de los
siguientes valores:
"videoInterruption"— Indica que se ha detectado un nuevo evento de pausa"codecChange"— Indica que ha cambiado el códec de vídeo
El stats La propiedad define un objeto que contiene una instantánea completa de las estadísticas actuales,
con una estructura idéntica a la del objeto devuelto por una getStats() invocación, incluyendo pausas y
congelaciones, si las hay.
Véase: : - Evento