Vídeo escalable

El vídeo escalable es una función para sesiones enrutadas que mejora la calidad del vídeo en sesiones con varios participantes, al permitir que cada abonado reciba una calidad de vídeo que se adapte a sus condiciones de red actuales, independientemente del resto de abonados.

Sin el vídeo escalable, el enrutador multimedia envía la misma calidad de vídeo a todos los suscriptores de una transmisión. Cuando la conexión de un suscriptor se deteriora, el router utiliza la estimación del ancho de banda para indicar al editor que reduzca su velocidad de bits, lo que disminuye la calidad para todos los suscriptores de esa transmisión. Con el vídeo escalable activado, el router selecciona la capa de calidad más adecuada para cada suscriptor de forma independiente y en tiempo real, sin afectar a lo que reciben los demás suscriptores.

El vídeo escalable requiere sesión enrutada (una sesión que utiliza el Media Router). No está disponible en sesiones retransmitidas y no resultaría útil en ese caso, ya que las transmisiones viajan directamente entre los clientes sin que haya ningún enrutador en la ruta que permita seleccionar o cambiar las capas de calidad. Véase El enrutador multimedia y los modos multimedia.

El vídeo escalable está activado por defecto. La configuración a nivel de aplicación está establecida por defecto en Auto, lo que significa que el Media Router activa automáticamente el vídeo escalable cuando hay más de dos clientes en una sesión y se cumplen todas las demás condiciones. También puede configurarlo para El (siempre activo) o Fuera de — véase Configuración del nivel de aplicación Para más información. En la mayoría de las aplicaciones, no es necesario modificar el código.

Códecs y modelos de escalabilidad

El funcionamiento del vídeo escalable depende del códec que negocie el editor. Comprender las diferencias te ayuda a elegir el códec adecuado para tu caso de uso, por ejemplo, cuando necesites optimizar el uso de la CPU del editor, el ancho de banda de subida o la adaptación de la calidad por parte del suscriptor.

VP8: Retransmisión simultánea

Con VP8El vídeo escalable se implementa mediante retransmisión simultánea. El editor codifica y transmite múltiples flujos de bits completamente independientes a diferentes resoluciones y frecuencias de imagen: por ejemplo, 1080p, 540p y 270p, cada uno con sus propias capas temporales (frecuencia de imagen). Cada flujo es independiente y puede descodificarse por sí solo.

Dado que cada flujo es totalmente independiente, el Media Router puede cambiar al instante a cualquier abonado a un nivel de calidad diferente sin necesidad de recodificación, lo que proporciona una gran resiliencia ante las condiciones cambiantes de la red.

Contrapartida: La codificación y carga de múltiples flujos requiere más CPU y ancho de banda de subida por parte del editor que el envío de una sola calidad. Las capas de menor resolución son bastante más baratas de codificar que las de mayor calidad, pero el coste total sigue siendo mayor que el de un flujo no simulado.

VP9: Codificación de vídeo escalable (SVC)

Con VP9usos escalables del vídeo Codificación de vídeo escalable (SVC). El editor codifica un único flujo de bits con múltiples capas espaciales (resolución) y temporales (frecuencia de imagen) matemáticamente integradas. Cada capa superior depende de las inferiores, de modo que un descodificador que reciba sólo la capa base obtiene una calidad baja, mientras que uno que reciba todas las capas obtiene una calidad total, todo a partir del mismo flujo de bits.

El coste de CPU para el editor en la codificación SVC es mayor que en la codificación de un único flujo —aproximadamente comparable al de la emisión simultánea en VP8—, pero el SVC requiere menos ancho de banda de subida, ya que solo hay que subir un flujo de bits en lugar de múltiples flujos independientes. A partir de la única secuencia codificada, el enrutador multimedia puede extraer y reenviar exactamente el subconjunto de capas adecuado para cada suscriptor, lo que proporciona una adaptación de la calidad eficiente y flexible que, además, es más resistente a la pérdida de paquetes.

SVC requiere que tanto el punto final del editor como el enrutador de medios sean compatibles con VP9 SVC. Firefox es compatible con VP9, pero no con SVC — Un editor de Firefox envía VP9 sin capas, por lo que el Media Router no puede ajustar la calidad de esa transmisión.

Para una explicación completa de las capas del SVC, los modos de escalabilidad (L1T3, L2T3, L3T3), el comportamiento de archivado y la compatibilidad de dispositivos, consulte Codificación de vídeo escalable VP9 para sesiones enrutadas.

Principales diferencias

Aspecto Retransmisión simultánea (VP8) SVC (VP9)
Lo que envía la editorial Múltiples flujos de bits independientes con diferentes resoluciones y frecuencias de imagen (SSRC/RID distintos) 1 flujo de bits con capas espaciales y temporales integradas (un único SSRC)
Capas espaciales Multi-stream: cada resolución es un flujo codificado independiente Incorporado en un único flujo de bits
Capas temporales Cada transmisión simultánea puede incluir capas temporales Incorporado en un único flujo de bits
Función de enrutador multimedia Elige qué flujo reenviar Extraer y reenviar las capas adecuadas
Compatibilidad con Firefox para editores Compatible con codificaciones basadas en RID VP9 sí; SVC no compatible con Firefox

Relación de resolución de las capas espaciales: Cada paso espacial utiliza un Relación de resolución de 2:1. Un L3T3 stream tiene capas al 100%, 50% y 25% de la resolución de la fuente (por ejemplo, 1080p → 540p → 270p). Por eso setPreferredResolution() pueden estar pensadas para resoluciones muy diferentes.

H.264: Vídeo escalable no compatible

El códec H.264 es totalmente compatible con la API de Video de Vonage para publicar y suscribirse, pero el vídeo escalable no está disponible para secuencias H.264. El Media Router no puede cambiar las capas de calidad para flujos H.264, y los ajustes de vídeo escalable no tienen efecto cuando se negocia H.264. Si su aplicación requiere vídeo escalable, utilice VP8 o VP9 en su lugar. Consulte Códecs de vídeo.

Compatibilidad con vídeo escalable

El vídeo escalable es compatible con la transmisión simultánea en VP8 y con VP9 SVC. No es compatible con Flujos H.264. Solo está disponible en sesiones enrutadas.

Los siguientes clientes admiten vídeo escalable:

  • SDK web - Chrome, Firefox, Safari, Samsung Internet, WebView Android, WebView en iOS y Edge basado en Chromium. Nota: Firefox es compatible con VP8 simulcast, pero no con VP9 SVC.
  • SDK de Android (en dispositivos compatibles)
  • SDK para iOS (en dispositivos compatibles)
  • SDK de Windows
  • SDK para Linux
  • SDK de macOS
  • SDK de React Native (en dispositivos compatibles)

Para obtener información sobre la compatibilidad de dispositivos y navegadores con VP9 SVC, consulte Codificación de vídeo escalable VP9 para sesiones enrutadas.

Nota: De forma predeterminada, el vídeo escalable está desactivado para las transmisiones de pantalla compartida y activado para las transmisiones de cámara y de fuentes de vídeo personalizadas. Para activar el vídeo escalable para la pantalla compartida, consulta Transmisiones de pantalla compartida escalables.

Cómo utilizar el vídeo escalable

Configuración del nivel de aplicación

El vídeo escalable tiene tres modos que se pueden configurar por aplicación en la opción Panel de Vonage:

  1. Conéctese a su Account de la Video API de Vonage.
  2. En el menú de la izquierda, selecciona Applications.
  3. Para una aplicación existente, haga clic en el menú de tres puntos y seleccione Editar. Para una nueva solicitud, accede a la sección de capacidades tras hacer clic en Crear una nueva aplicación.
  4. Activa la opción para habilitar el Vídeo opción.
  5. Desplácese hacia abajo y haga clic en Mostrar funciones avanzadas.
  6. En Vídeo escalableElija una de las siguientes opciones:
    • Auto (recomendado) - El Media Router habilita el vídeo escalable cuando hay más de dos clientes en una sesión. Deje esta opción seleccionada a menos que tenga una razón específica para anularla.
    • El — El vídeo escalable está siempre activado (en los clientes compatibles) para todas las sesiones de esta aplicación.
    • Fuera de - El vídeo escalable está desactivado para todas las sesiones de esta aplicación. Utilícelo para bloquear la resolución y la frecuencia de imagen, o para reducir el uso de la CPU y el ancho de banda del editor.
  7. Haz clic Guardar cambios.

Nota: Este ajuste controla Emisión simultánea VP8 comportamiento. VP9 siempre utiliza SVC cuando está soportado, y H.264 no soporta vídeo escalable - ninguno se ve afectado por este ajuste.

Nota: Los flujos requieren más ancho de banda de subida del editor cuando el vídeo escalable está activo, porque se codifican y transmiten capas de calidad adicionales.

Transmisiones de pantalla compartida escalables

Por defecto, el vídeo escalable es discapacitado para las retransmisiones con pantalla compartida y activado para flujos de cámara y fuentes de vídeo personalizadas. El contenido de pantalla compartida suele cambiar con menos frecuencia que el vídeo de cámara, por lo que el coste de codificación adicional del vídeo escalable suele ser innecesario. Sin embargo, habilitarlo puede ser beneficioso en sesiones en las que los suscriptores de pantalla compartida tienen condiciones de red variables. Puede anular el valor predeterminado por editor:

SDK Método / Propiedad
SDK web scalableScreenshare opción en OT.initPublisher()
SDK de Android PublisherKit.Builder.scalableScreenshare()
SDK para iOS OTPublisherKitSettings.scalableScreenshare
SDK de Windows Publisher.Builder.ScalableScreenshare
SDK para Linux otc_publisher_settings_set_scalable_screenshare()

Configuración de la frecuencia de fotogramas y la resolución preferidas por el suscriptor

Cuando se publica una transmisión con vídeo escalable, los suscriptores pueden indicar al Media Router la calidad que prefieren. El Media Router selecciona la capa disponible más cercana que se adapte a las condiciones reales de la red del suscriptor.

Importante: Llamando a setPreferredResolution() o setPreferredFrameRate() provoca una renegociación con el Media Router. Hacerlo repetidamente o en rápida sucesión resulta costoso, ya que consume recursos de la CPU y puede degradar la calidad general de la transmisión. Establece los valores preferidos una sola vez (o solo cuando la configuración del suscriptor cambie de forma significativa), en lugar de ajustarlos continuamente.

SDK Frecuencia de imagen Resolución
SDK web Subscriber.setPreferredFrameRate() — véase Guía web de «subscribe-streams» Subscriber.setPreferredResolution() — véase Guía web de «subscribe-streams»
SDK de Android SubscriberKit.setPreferredFrameRate() — véase Guía de «subscribe-streams» para Android SubscriberKit.setPreferredResolution() — véase Guía de «subscribe-streams» para Android
SDK para iOS OTSubscriberKit.preferredFrameRate — véase Guía subscribe-streams iOS OTSubscriberKit.preferredResolution — véase Guía subscribe-streams iOS
SDK de Windows Subscriber.PreferredFramerate — véase subscribe-streams Guía de Windows Subscriber.PreferredResolution — véase subscribe-streams Guía de Windows
SDK para Linux otc_subscriber_set_preferred_frame_rate() — véase Guía de Linux sobre «subscribe-streams» otc_subscriber_set_preferred_resolution() — véase Guía de Linux sobre «subscribe-streams»
React Native preferredFrameRate propiedad de OTSubscriber — véase Guía de React Native sobre «subscribe-streams» preferredResolution propiedad de OTSubscriber — véase Guía de React Native sobre «subscribe-streams»

Cómo Verificar que el Vídeo Escalable Funciona

En el SDK no existe un indicador específico de «vídeo escalable activo», pero puedes comprobar si está funcionando mediante los siguientes métodos.

Inspector de vídeo

El Inspector de vídeo La herramienta del módulo «Métricas de calidad» muestra el códec, la resolución y la frecuencia de fotogramas. Pasa el cursor por cualquier punto de una línea representada en el gráfico para ver el códec que se está utilizando en ese momento. Cuando el vídeo escalable está activado, la resolución y/o la frecuencia de fotogramas de uno o varios suscriptores pueden ajustarse dinámicamente en respuesta a los cambios en las condiciones de la red.

Estadísticas de WebRTC

Cada SDK pone a disposición el informe de estadísticas de WebRTC subyacente. Por parte del editor, comprueba RTCOutboundRtpStreamStats:

  • Con Emisión simultánea VP8, verás varios ssrc entradas con diferentes frameWidth/frameHeight uno por capa de emisión simultánea.
  • Con VP9 SVC, verás un único ssrc con un scalabilityMode conjunto de propiedades (por ejemplo, L3T3).

Métodos del SDK para acceder al informe de estadísticas:

Lista de control: Condiciones necesarias para que el vídeo escalable esté activo

Si no observa un comportamiento de calidad adaptable, Verifique lo siguiente:

  • La sesión es derrotado (no retransmitido).
  • El vídeo escalable no está configurado en Fuera de a nivel de aplicación.
  • El códec negociado es VP8 o VP9 (no H.264).
  • El editor funciona en un cliente compatible.

Ideas erróneas habituales y preguntas frecuentes

¿El vídeo escalable es lo mismo que el VP9 SVC?

No. "Video escalable" es el nombre de la función de Vonage Video API. El sitio mecanismo técnico Depende del códec:

  • VP8 implementa vídeo escalable a través de retransmisión simultánea — El editor envía varias transmisiones independientes.
  • VP9 implementa vídeo escalable a través de VPC — el editor envía un flujo con capas incrustadas.

Ambos mecanismos permiten al Media Router adaptar la calidad que recibe cada abonado. Cuando en la documentación se habla de «vídeo escalable» sin especificar un códec, se hace referencia a la función en su conjunto.

¿Forzar un códec preferido activa el vídeo escalable?

No. Para seleccionar un códec preferido (en el panel de control o a través del preferredVideoCodecs (opción del editor) es independiente del vídeo escalable. La activación del vídeo escalable depende de todos los siguientes factores:

  1. La configuración de la aplicación de vídeo escalable (Activado / Desactivado / Auto).
  2. La sesión enrutada.
  3. El códec acordado que admite vídeo escalable (VP8 o VP9, no H.264).
  4. El cliente o navegador del editor que admite vídeo escalable.

¿Por qué Subscriber.setPreferredResolution() ¿No adaptar la calidad?

El lado del abonado setPreferredResolution() y setPreferredFrameRate() son sugerencias para el router multimediano comandos directos al codificador del editor. El Media Router sólo puede actuar sobre estas pistas cuando está seleccionando activamente entre capas de vídeo escalables para ese abonado. Si alguna de las siguientes condiciones es verdadera, no hay capas para seleccionar y las sugerencias no tienen efecto:

  • El vídeo escalable se desactiva a nivel de aplicación o en el flujo del editor.
  • El códec negociado es H.264 (no se admite vídeo escalable).
  • El cliente del editor no genera capas escalables (por ejemplo, un editor de Firefox que envía VP9 sin capas SVC).
  • El editor tiene una limitación de CPU o de ancho de banda y no está enviando capas superiores entre las que el enrutador pueda elegir.
  • La sesión es retransmitida - en una sesión retransmitida, el Media Router no reenvía flujos, por lo que no puede producirse la selección de capa. Tenga en cuenta que en las sesiones retransmitidas (P2P), el codificador del editor adapta su salida directamente en función de las condiciones de red del abonado, pero esto no es lo mismo que la selección de capa de vídeo escalable.

Nota: En sesiones retransmitidas, algunos SDK pueden aceptar estas llamadas a la API sin errores, pero el enrutador de medios no participa en el reenvío de secuencias, por lo que las preferencias no pueden respetarse para la selección de la capa de calidad.

Nota: Las API de resolución y velocidad de fotogramas del editor (disponibles en algunos SDK) se comportan de forma diferente: controlan directamente la resolución y la velocidad de fotogramas del flujo codificado, no una sugerencia de calidad del Media Router.

¿Puedo mezclar editores escalables y no escalables en la misma sesión?

Sí. El vídeo escalable se determina por flujo, no por sesión. Una sesión puede incluir simultáneamente emisores que utilicen vídeo escalable y otros que no lo hagan (por ejemplo, emisores H.264 o clientes que emitan con el vídeo escalable desactivado). El Media Router gestiona cada flujo de forma independiente.

¿Afecta el vídeo escalable al archivado?

Para Emisión simultánea VP8, el archivador graba utilizando la capa de mayor calidad disponible.

Para VP9 SVCLos archivos individuales almacenan el flujo de cada participante como WebM con codificación VP9 SVC. Los archivos compuestos siempre se transcodifican a H.264/AAC MP4, independientemente del códec de la sesión.

Es posible que la reproducción de archivos WebM en formato VP9 SVC no funcione en todos los reproductores multimedia. Para obtener instrucciones de reproducción y comandos de transcodificación, consulta Notas sobre el archivo en la guía VP9.

Para más información, consulte este artículo de ayuda.