Ajustar el audio y el vídeo — Web

Puedes realizar ajustes de audio y vídeo en publicado y suscrito fuentes:

Publicar sólo audio o vídeo

Cuando crear un objeto Publisherpuede especificar si desea publicar inicialmente sólo audio o sólo vídeo. Por ejemplo, el siguiente código crea un Publisher sólo de audio:

var pubOptions = {publishAudio:true, publishVideo:false};

// Replace replacementElementId with the ID of the DOM element to replace:
publisher = OT.initPublisher(replacementElementId, pubOptions);

Por defecto, un objeto «Subscriber» se inicializa para suscribirse al audio y al vídeo, si están disponibles.

Una vez que haya ha creado un objeto Publisher, puedes activar o desactivar el audio y el vídeo llamando a la función publishAudio() y publishVideo() (pasando un valor booleano). Por ejemplo, el siguiente código desactiva el audio:

publisher.publishAudio(false);

Al activar o desactivar el vídeo con el publishVideo() En este método, puedes pasar un controlador de finalización opcional que se ejecutará una vez que el vídeo comience o deje de publicarse. Por ejemplo, el siguiente código podría utilizarse para realizar cambios en la interfaz de usuario tras la publicación del vídeo:

publisher.publishVideo(true, (error) => { if (!error) { // You may want to adjust the user interface to let users know // their video is visible to others } });

Al activar o desactivar el audio o el vídeo, el objeto «Session» de cada cliente conectado envía un streamPropertyChanged evento. Para obtener más información, consulta StreamPropertyChangedEvent.

Configuración de la resolución y la velocidad de fotogramas de un vídeo

Puedes configurar la velocidad de fotogramas y la resolución de la retransmisión de un creador estableciendo un resolution propiedad de las opciones que pasas a la OT.initPublisher() método. Véase Configuración de la resolución de vídeo de una transmisión y Ajuste de la frecuencia de imagen de un flujo.

También puede cambiar sobre la marcha la frecuencia de imagen y la resolución del flujo de un editor llamando a la función setPreferredResolution y setPreferredFrameRate API de los editores. Véase Cambiar la frecuencia de imagen y la resolución preferidas por los editores.

Puedes configurar la velocidad de fotogramas y la resolución de la transmisión de un suscriptor ajustando el preferredFrameRate y preferredResolution propiedades de las opciones que pasas a la session.subscribe() método. Recomendamos configurar el preferreResolution opción de "auto" para optimizar el uso de la CPU y de la red. Véase Configuración de la frecuencia de fotogramas y la resolución preferidas para los suscriptores.

Cambiar la cámara que utiliza un editor

Puedes cambiar el dispositivo de entrada de vídeo (cámara) que se utiliza como fuente de vídeo para un Publisher llamando a la función Publisher.cycleVideo() o Publisher.setVideoSource() método:

Publisher.cycleVideo()

El Publisher.cycleVideo() te permite alternar entre las fuentes de vídeo disponibles (cámaras). Por ejemplo, en un dispositivo móvil puedes cambiar entre la cámara frontal y la trasera. El método devuelve una promesa que se resuelve cuando la operación se completa con éxito. La promesa se resuelve con un objeto que tiene un valor deviceId con el ID del dispositivo de la cámara utilizada:

publisher.cycleVideo().then(console.log);
// Output: {deviceId: "967a86e52..."}

Si se produce un error, se rechaza la promesa. Esto puede ocurrir en las siguientes condiciones:

  • Se ha denegado al usuario el acceso al dispositivo de entrada de vídeo.
  • El editor no utiliza una fuente de vídeo de cámara. Este método no funciona para un editor que comparta pantalla, un editor que utilice una fuente MediaStreamTrack o un editor que no incluya una pista de vídeo (un editor sólo de audio).
  • 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.

Ten en cuenta que este método solo funciona para un editor que utilice una fuente de vídeo de cámara.

Publisher.setVideoSource()

El Publisher.setVideoSource() Este método te permite pasar el ID del dispositivo de la nueva fuente de vídeo (cámara). El método devuelve una promesa que se resuelve cuando finaliza la operación:

publisher.setVideoSource(deviceId)
  .then(() => console.log('video source set'))
  .catch((error) => console.error(error.name));

Lo siguiente dará lugar a errores:

  • Si el videoSourceId Si el parámetro no es una cadena de caracteres ni el identificador de un dispositivo de entrada de vídeo válido, la promesa se rechazará con un error con el name con el valor 'OT_INVALID_VIDEO_SOURCE'.
  • Si el editor no utiliza actualmente una entrada de cámara, la promesa se rechazará con un error con el name con el valor 'OT_SET_VIDEO_SOURCE_FAILURE'.

Puedes utilizar el OT.getDevices() para enumerar los dispositivos de entrada de vídeo disponibles (y obtener sus ID de dispositivo).

Puedes utilizar el Publisher.getVideoSource() Método para obtener la fuente de vídeo actual y el ID de su dispositivo (si se trata de un dispositivo de entrada de vídeo).

Duplicar la pantalla local de un vídeo de Publisher

Puede ajustar el mirror de las opciones introducidas en el campo OT.initPublisher() método para que el vídeo reproducido localmente por el editor se refleje (true) o no (false). Por defecto, el vídeo se reproduce en modo espejo para un presentador que disponga de una fuente de vídeo de cámara, y no se reproduce en modo espejo para un vídeo de pantalla compartida.

Esta configuración solo afecta al vídeo reproducido en la aplicación cliente del editor. No tiene ningún efecto sobre el vídeo en los clientes suscritos.

Cambiar la fuente de audio utilizada por un Publisher

Puedes cambiar el micrófono o el objeto MediaStreamTrack que se utiliza como fuente de audio para un Publisher llamando a la función setAudioSource() método del objeto Publisher.

Pasa un identificador de dispositivo correspondiente a un micrófono o a un objeto `MediaStreamTrack` de audio a la Publisher.setAudioSource() método. El método devuelve una Promise que se rechaza en caso de error (consulta la documentación de referencia para setAudioSource()).

Por ejemplo, el siguiente código muestra cómo implementar un cycleMicrophone() que recorre los micrófonos disponibles:

// Setting an audio source to a new MediaStreamTrack
const stream = await OT.getUserMedia({
  videoSource: null
});

const [audioSource] = stream.getAudioTracks();
publisher.setAudioSource(audioSource).then(() => console.log('Audio source updated'));

// Cycling through microphone inputs
let audioInputs;
let currentIndex = 0;
OT.getDevices((err, devices) => {
  audioInputs = devices.filter((device) => device.kind === 'audioInput');
  // Find the right starting index for cycleMicrophone
  audioInputs.forEach((device, idx) => {
    if (device.label === publisher.getAudioSource().label) {
      currentIndex = idx;
    }
  });
});

const cycleMicrophone = () => {
  currentIndex += 1;
  let deviceId = audioInputs[currentIndex % audioInputs.length].deviceId;
  publisher.setAudioSource(deviceId);
};

El Publisher.setAudioSource() Este método solo funciona con un editor que tenga una fuente de audio. Si configuras audioSource a null (o false) al llamar a OT.initPublisher()no podrá añadir posteriormente una fuente de audio al editor.

El Publisher.getAudioSource() devuelve el objeto MediaStreamTrack utilizado como fuente de entrada de audio actual para el editor.

El OT.getDevices() enumera los dispositivos de entrada de audio y vídeo disponibles en el navegador.

Cambiar la salida de audio utilizada

Puedes cambiar el dispositivo de salida de audio (un altavoz o unos auriculares) que se utiliza para reproducir el audio de todos los emisores y receptores (en todas las sesiones de OpenTok en el navegador).

El OT.getAudioOutputDevices() enumera los dispositivos de entrada de audio y vídeo disponibles en el navegador.

El OT.getActiveAudioOutputDevice() identifica el dispositivo de salida de audio activo en ese momento.

Utiliza el OT.setAudioOutputDevice() para configurar el dispositivo de salida de audio.

Por ejemplo, el siguiente código muestra cómo implementar un cycleAudioOutput() función que recorre los dispositivos de salida de audio disponibles:

// Cycling through audio output devices
let currentIndex = 0;
const audioOutputs = await OT.getAudioOutputDevices();
const currentOutputDevice = await OT.getActiveAudioOutputDevice();
audioOutputs.forEach((device, index) => {
  if (device.label === currentOutputDevice.label) {
    currentIndex = index;
  }
});

const cycleAudioOutput = async () => {
  currentIndex += 1;
  let deviceId = audioOutputs[currentIndex % audioOutputs.length].deviceId;
  await OT.setAudioOutputDevice(deviceId);
};

Detectar cuándo un reproductor cambia de dispositivo de entrada de audio

De forma predeterminada, el SDK gestiona automáticamente el cambio de dispositivo de entrada de audio para cualquier objeto Publisher cuando se añade o se elimina un dispositivo de entrada de audio, a menos que se haya desactivado la gestión de dispositivos de entrada de audio. Véase Desactivación de la gestión predeterminada de los dispositivos de entrada de audio si desea desactivar la conmutación automática de dispositivos de entrada de audio.

El objeto Publisher envía un audioInputDeviceChanged evento que se produce cuando el SDK cambia automáticamente la entrada de audio. Este evento se activará cuando se añada un nuevo dispositivo de entrada de audio, se elimine el dispositivo de entrada de audio actual o cuando el sistema operativo del editor cambie de dispositivo de entrada de audio. El evento activado tiene un device que contiene información sobre el dispositivo de entrada de audio. Es posible que desee que sus usuarios sepan que su micrófono ha cambiado:

publisher.on('audioInputDeviceChanged', (event) => {
  console.log('audio input device', event.device);
  console.log(`changing device to: ${event.device.label}`);
});

Publicar en una sesión solo de voz

Para configurar una sesión solo de voz, establece el videoSource propiedad a null o false cuando tú crear cada objeto Publisher en la sesión. Por ejemplo, el siguiente código crea un «Publisher» para una sesión solo de voz:

var pubOptions = {videoSource: null};

// Replace replacementElementId with the ID of the DOM element to replace:
publisher = OT.initPublisher(replacementElementId, pubOptions);

Cuando ajuste el videoSource propiedad a null, el cliente de publicación no solicita acceso a la cámara y no se publica ningún vídeo.

Suscribirse solo a contenido de audio o vídeo

Cuando suscribirse a un flujo, puedes especificar si deseas suscribirte inicialmente al audio o al vídeo (si están disponibles). Por ejemplo, el siguiente código se suscribe únicamente a la transmisión de audio:

var options = {subscribeToAudio:true, subscribeToVideo:false};

// Replace stream and replacementElementId with your own values:
subscriber = session.subscribe(stream,
                             replacementElementId,
                             options);

Una vez creado el objeto «Subscriber», puedes activar o desactivar el audio llamando a la función subscribeToAudio() del objeto Subscriber:

subscriber.subscribeToAudio(false); // audio off
subscriber.subscribeToAudio(true); // audio on

Para activar o desactivar el vídeo, llame al botón subscribeToVideo() del objeto Subscriber:

subscriber.subscribeToVideo(false); // video off
subscriber.subscribeToVideo(true); // video on

Ten en cuenta, sin embargo, que solo puedes suscribirte al audio o al vídeo si el cliente que publica la transmisión incluye audio o vídeo. Por ejemplo, al llamar a subscribeToVideo(false) no tendrá ningún efecto si el cliente que publica el flujo sólo publica audio.

Modificar el nivel de audio de un abonado

Cuando suscribirse a un flujopuede ajustar el volumen inicial del abonado cuando llama al subscribe() del objeto Session:

// Set a value between 0 (silent) and 100 (full volume):
var subOptions = {audioVolume = 10};

// Replace stream and replacementElementId with your own values:
subscriber = session.subscribe(stream,
                             replacementElementId,
                             subOptions);

Después de crear un objeto Suscriptor, puede establecer su volumen llamando a su función setAudioVolume() pasando un valor de 0 (silencio) a 100 (volumen máximo):

subscriber.setAudioVolume(0); (silent)

Ten en cuenta que el usuario también puede silenciar al abonado mediante los controles de la interfaz de usuario del propio abonado.

Detectar si un flujo tiene audio o vídeo

De forma predeterminada, un objeto «Subscriber» reproduce tanto el audio como el vídeo (si están disponibles). Puedes comprobar si una transmisión contiene audio o vídeo (si el emisor de la transmisión está transmitiendo audio o vídeo) consultando el hasAudio y hasVideo del objeto Stream:

if (!stream.hasAudio) {
	// You may want to adjust the user interface
}
if (!stream.hasVideo) {
	// You may want to adjust the user interface
}

Por ejemplo, cuando suscribirse a un flujoPor ejemplo, es posible que desee ajustar la interfaz de usuario en función de si el flujo tiene audio o vídeo. Por ejemplo, puede que desee indicar al usuario si un flujo tiene audio o no; o puede que no desee ocultar a un abonado si un flujo no tiene vídeo.

Detectar cuándo una transmisión añade o elimina audio o vídeo

El objeto «Session» envía un streamPropertyChanged cuando un flujo activa o desactiva el audio o el vídeo. La dirección streamPropertyChanged se define mediante el evento StreamPropertyChangedEvent clase. El objeto de evento tiene un changedProperty (que identifica la propiedad Stream que ha cambiado) y una propiedad newValue propiedad (el nuevo valor de la propiedad Stream). Por ejemplo, el siguiente código detecta los cambios en el audio y el vídeo de un Stream:

session.on("streamPropertyChanged", function (event) {
    var subscribers = session.getSubscribersForStream(event.stream);
    for (var i = 0; i < subscribers.length; i++) {
        // You may want to display some UI text for each
        // subscriber, or make some other UI change,
        // based on event.changedProperty and
        // event.newValue
    }
}

Tenga en cuenta que el vídeo de un suscriptor puede desactivarse o activarse por razones distintas a que el editor lo desactive o active. Un objeto Subscriber envía videoDisabled y videoEnabled eventos que, en cualquier circunstancia, provocan que el flujo del suscriptor se desactive o se active. Para obtener más información, consulta la documentación de la Vídeo de suscriptor desactivado y Vídeo habilitado para suscriptores eventos.

Optimizaciones en las sesiones solo de voz

Hay una serie de optimizaciones de la interfaz de usuario que puedes realizar en una sesión solo de voz. Consulta el Voz tutorial.

Ajuste de la calidad del audio

El OT.initPublisher() incluye opciones para ajustar la calidad del audio. Esto le permite publicar flujos que utilizan audio de alta (o baja) calidad:

velocidad de bits de audio (Número) — La tasa de bits deseada para el audio publicado, en bits por segundo. El rango de valores admitido es de 6.000 a 510.000. (Se ignoran los valores no válidos.) Establece este valor para activar el audio de alta calidad (o para reducir el uso de ancho de banda con audio de menor calidad).

A continuación se indican los ajustes recomendados:

  • 8.000 - 12.000 para voz de banda estrecha (NB)
  • 16.000 - 20.000 para voz de banda ancha (WB)
  • Entre 28 000 y 40 000 para la voz en banda completa (FB)
  • 48.000 - 64.000 para música de banda completa (FB)

Si no estableces esta opción, OpenTok.js establece automáticamente la tasa de bits de audio para la transmisión.

Actualmente, esta configuración no es compatible con los flujos publicados en Firefox.

autoGainControl (Booleano) — Indica si se debe activar el control automático de ganancia para el audio publicado. Quizás te interese establecer este valor en false al publicar audio de alta calidad (configurando el audioBitrate propiedad del OT.initPublisher() opciones). El valor por defecto es true. Esta configuración se ignora si se establece disableAudioProcessing a true (que desactiva la cancelación de eco, el control automático de ganancia y la supresión de ruido para el flujo publicado).

disableAudioProcessing (Booleano) — Indica si se deben desactivar la cancelación de eco, el control automático de ganancia y la supresión de ruido para el audio publicado. Quizás te interese establecer este valor en true al publicar audio de alta calidad (configurando el audioBitrate propiedad del OT.initPublisher() opciones). El valor por defecto es false.

Cancelación de eco (Booleano) - Activar o no la cancelación de eco para el audio publicado. Es posible que desee establecer esto en false al publicar audio de alta calidad (configurando el audioBitrate propiedad del OT.initPublisher() opciones). El valor por defecto es true. Esta configuración se ignora si se establece disableAudioProcessing a true (que desactiva la cancelación de eco, el control automático de ganancia y la supresión de ruido para el flujo publicado).

Nota: Algunos navegadores (como Chrome 73 y versiones posteriores) no admiten la cancelación de eco para el audio estéreo (véase este informe sobre Chrome).

enableStereo (Booleano) — Indica si se debe publicar audio estéreo. El valor por defecto es false.

supresión de ruido (Booleano) - Activar o no la supresión de ruido para el audio publicado. Es posible que desee establecer esto en false al publicar audio de alta calidad (configurando el audioBitrate propiedad del OT.initPublisher() opciones). El valor por defecto es true. Esta configuración se ignora si se establece disableAudioProcessing a true (que desactiva la cancelación de eco, el control automático de ganancia y la supresión de ruido para el flujo publicado). También puede utilizar la función advancedNoiseSuppression filtro de audio, que utiliza la biblioteca de medios de Vonage (véase este tema).

Reducción del ancho de banda de audio con Opus DTX

Opus DTX (Transmisión discontinua) Es un códec de audio que permite reducir el consumo de ancho de banda cuando un participante no está hablando. Esto puede resultar útil en sesiones con un gran número de participantes de audio.

Para activar Opus DTX, configure la opción enableDtx propiedad del options que se pasa al objeto OT.initPublisher() método (cuando inicializar un Publisher).

Para obtener más información, consulta esto Artículo de la base de conocimientos de la API de Video de Vonage.

Aplicar filtros y efectos al audio y al vídeo

Puedes aplicar filtros y efectos al audio y al vídeo publicados de las siguientes maneras:

Puedes aplicar filtros y efectos al contenido de audio y vídeo al que estás suscrito mediante utilizando la biblioteca Vonage Media Processor para aplicar transformaciones.

Estos se describen en los apartados siguientes.

Publicar un objeto MediaStreamTrack y aplicar efectos a dicho objeto

Puedes utilizar un pista de audio de MediaStream o un pista de vídeo de MediaStream como fuente de audio o vídeo para una transmisión publicada. Con esta función, puedes aplicar filtros y efectos, como el desenfoque del fondo o la sustitución del fondo, al audio o al vídeo publicado.

Puedes utilizar el OT.getUserMedia() Método para obtener una referencia a un `MediaStream` que utilice la cámara seleccionada por el usuario. A continuación, puedes utilizar el `MediaStreamTrack` de vídeo obtenido de ese objeto `MediaStream` como fuente para un elemento `Video`. A continuación, puede añadir ese elemento «Video» a un elemento «Canvas» de HTML, aplicar filtros o efectos al lienzo y utilizar el objeto «MediaStreamTrack» del vídeo filtrado obtenido del lienzo como fuente de vídeo para una transmisión publicada. Para ver un ejemplo, consulte el ejemplo «Stream-Filter». repositorio opentok-web-samples en GitHub.

Puedes utilizar el OT.getUserMedia() para obtener una referencia a un MediaStream que utilice el micrófono seleccionado por el usuario. A continuación, puede utilizar el MediaStreamTrack de audio obtenido a partir de ese objeto MediaStream como el método audioSource al llamar a OT.initPublisher(). A continuación, puedes crear un AudioContext objeto y llamar a su createMediaStreamSource() objeto, pasando el objeto MediaStream para crear un MediaStreamAudioSourceNode . A continuación, puede aplicar filtros de audio al objeto MediaStreamAudioSourceNode, lo que hará que los filtros se apliquen al flujo publicado.

Aplicar un filtro de desenfoque de fondo o de sustitución de fondo

Utiliza el Publisher.applyVideoFilter() Método para aplicar un filtro de vídeo al editor. Puedes aplicar un filtro de desenfoque de fondo o un filtro de imagen de fondo. A un editor solo se le puede aplicar un filtro (o ninguno) a la vez. Cuando configuras un nuevo filtro, se elimina el filtro configurado anteriormente.

El siguiente código aplica un filtro de desenfoque de fondo al vídeo de un editor:

publisher.applyVideoFilter({
  type: 'backgroundBlur',
  blurStrength: 'low',
});

El siguiente código aplica un filtro de sustitución de fondo al vídeo de un editor:

publisher.applyVideoFilter({
  type: 'backgroundReplacement',
  backgroundImgUrl: 'http://example.com/image.jpg',
});

También puede aplicar un filtro de vídeo configurando la opción videoFilter al llamar a la función OT.initPublisher() método:

const publisher = OT.initPublisher(null, {
  videoFilter: {
    type: 'backgroundReplacement',
    backgroundImgUrl: 'http://example.com/image.jpg',
  },
  mirror: false,
});

Importante:

  • Los filtros de vídeo requieren un soporte de procesador adecuado. Incluso en los navegadores compatibles, los transformadores pueden no ser estables cuando los procesos en segundo plano limitan los recursos de procesamiento disponibles. Consulte Requisitos del cliente.
  • Nota sobre las políticas de seguridad de contenidos (CSP): Si el script-src asegúrese de que 'wasm-unsafe-eval' está especificado. De lo contrario, WebAssembly, necesario para el desenfoque de fondo o los filtros de sustitución, no podrá cargarse ni ejecutarse en la página.
  • La imagen de fondo se redimensiona para ajustarse a las dimensiones del vídeo del editor. Para obtener mejores resultados, utilice una imagen que tenga las mismas dimensiones (o al menos la misma relación de aspecto) que el vídeo publicado. Establezca el mirror opción de false al llamar a la OT.initPublisher() Método para que la imagen de fondo aparezca con la orientación correcta (sin reflejar) en la página del editor.

Para más detalles, consulte la documentación de referencia de Publisher.applyVideoFilter().

Este método es incompatible con el Publisher.setVideoMediaProcessorConnector() método. Al llamar a este método después de Publisher.setVideoMediaProcessorConnector(connector) devuelve una promesa que se rechaza con un error, con el name del error establecida en 'OT_NOT_SUPPORTED'. Puede retirar el conector llamando a Publisher.setVideoMediaProcessorConnector(null).

También puedes configurar el filtro de vídeo inicial estableciendo un videoFilter al llamar a OT.initPublisher() método.

Para borrar el filtro de vídeo, llame al Publisher.clearVideoFilter() método.

Notas:

  • Los filtros de vídeo solo son compatibles con las versiones recientes de Chrome, Firefox, Electron, Opera, Edge, Samsung Internet, WebView para Android y las últimas versiones de Safari (versión 26+) y WebView para iOS (versión 26+). Puedes comprobar si el cliente es compatible con esta función llamando a la función OT.hasMediaProcessorSupport('video') método.
  • La biblioteca multimedia de Vonage incluye transformadores que ofrecen más opciones que los filtros de desenfoque de fondo e imagen de fondo proporcionados por la aplicación Publisher.applyVideoFilter('video') método. Además, puedes utilizar la biblioteca multimedia de Vonage para crear tus propios transformadores de audio y vídeo personalizados. Consulta la Uso del procesador multimedia de Vonage guía del desarrollador.

Aplicación del filtro avanzado de supresión de ruido

La supresión avanzada de ruido es un filtro de audio que reduce considerablemente el ruido de fondo que rodea al emisor. Esto puede resultar útil cuando un participante se encuentra en un entorno concurrido o ruidoso, como en una cafetería, o si hay ruido blanco, como el procedente de un sistema de climatización. Puede funcionar de forma independiente o junto con el noiseSuppression propiedad establecida al llamar a la función OT.initPublisher método.

Utiliza el Publisher.applyAudioFilter() Método para aplicar un filtro de audio al editor. Puedes aplicar un filtro avanzado de supresión de ruido. A un editor solo se le puede aplicar un filtro (o ninguno) a la vez. Cuando configuras un nuevo filtro, se elimina cualquier filtro configurado anteriormente.

El siguiente código aplica un filtro de audio avanzado de supresión de ruido al audio de un editor:

publisher.applyAudioFilter({
  type: 'advancedNoiseSuppression',
});

También puede aplicar el filtro de audio avanzado de supresión de ruido configurando la opción audioFilter al llamar a la función OT.initPublisher() método:

const publisher = OT.initPublisher(null, {
  audioFilter: {
    type: 'advancedNoiseSuppression'
  },
});

Importante:

  • Los filtros de audio requieren una compatibilidad adecuada con el procesador. Incluso en los navegadores compatibles, es posible que los transformadores no funcionen de forma estable cuando los procesos en segundo plano limiten los recursos de procesamiento disponibles. Véase Requisitos del cliente.
  • Nota sobre las políticas de seguridad de contenidos (CSP): Si el script-src asegúrese de que 'wasm-unsafe-eval' se especifique. De lo contrario, se impide que WebAssembly, necesario para la supresión avanzada de ruido, se cargue y se ejecute en la página.

Para más detalles, consulte la documentación de referencia de Publisher.applyAudioFilter().

Este método es incompatible con el Publisher.setAudioMediaProcessorConnector() método. Al llamar a este método después de Publisher.setAudioMediaProcessorConnector(connector) devuelve una promesa que se rechaza con un error, con el name del error establecida en 'OT_NOT_SUPPORTED'. Puede retirar el conector llamando a Publisher.setAudioMediaProcessorConnector(null).

Para desactivar el filtro avanzado de supresión de ruido, llama al Publisher.clearAudioFilter() método.

Notas:

  • Los filtros de audio 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.
  • Al utilizar Publisher.applyAudioFilter()Los recursos se descargan de los servidores de Vonage. Si prefiere alojar usted mismo estos activos, consulte esta entrada del blog para obtener información sobre el alojamiento y para utilizar el Publisher.setAudioMediaProcessorConnector() Método para aplicar el filtro avanzado de supresión de ruido con recursos alojados en el propio servidor.

Uso de la biblioteca Vonage Media Processor para aplicar transformaciones personalizadas

Véase el Uso del procesador multimedia de Vonage guía del desarrollador.

Publicación de audio solo para editores con poco ancho de banda

Los servidores de publicación se pueden configurar para desactivar el vídeo, manteniendo el audio activado, en situaciones de bajo ancho de banda. La publicación de vídeo se reanudará cuando mejore el ancho de banda del servidor de publicación. Para obtener más información, consulta el Audio Fallback guía del desarrollador.

Detección de cambios en el rendimiento de la CPU

Puede detectar cambios en la carga de la CPU del dispositivo monitorizando la Sesión cpuPerformanceChanged evento. El evento contiene un cpuPerformanceState propiedad, que contiene uno de los siguientes valores: «nominal», «adecuado», «grave», «crítico» (véase esta especificación del W3C). Ante esta situación, una aplicación puede notificar a los usuarios el consumo de recursos o desactivar procesos que requieren un gran esfuerzo computacional, como transformadores de vídeo. Ver la sesión cpuPerformanceChanged evento.

El siguiente código desactiva la captura de vídeo cuando la CPU entra en un estado crítico de rendimiento y la vuelve a activar una vez que el estado vuelve a ser «aceptable» o mejor:

let videoDisabledByCPU = false;
  session.on('cpuPerformanceChanged', (event) => {
    if (event.cpuPerformanceState === 'critical'){
      // The application should alert the user why their video is being disabled
      publisher.publishVideo(false);
      videoDisabledByCPU = true;
    } else if (event.cpuPerformanceState === 'nominal' || event.cpuPerformanceState === 'fair'){
      if (videoDisabledByCPU){
        publisher.publishVideo(true);
        videoDisabledByCPU = false;
      }
    }
  })

Para obtener más información sobre cómo optimizar la calidad de las llamadas, consulta Supervisión de la calidad de las llamadas.

Importante: Esta API tiene una disponibilidad limitada. cpuPerformanceChanged Actualmente solo está disponible para Chrome 125 o superior, Edge 125 o superior y Opera 111 o superior.

Notas para la depuración:

  • Este evento solo se dispara cuando el navegador tiene el foco.
  • Para utilizar este evento junto con los iframes, es necesario habilitar el calcular la política de permisos de presión. Esto puede provocar problemas al utilizar entornos de desarrollo integrados (IDE) en línea.

Otras opciones de personalización de la interfaz de usuario

Para conocer otras opciones disponibles para personalizar la interfaz de usuario, consulta el Personalizar la interfaz de usuario guía.