Acerca de la compatibilidad de VP9 con Scalable Video Coding (SVC) en sesiones enrutadas
Visión general de VP9
VP9 es un formato de codificación de vídeo abierto y libre de derechos de autor desarrollado por Google. En es el sucesor de VP8 y ofrece una mayor eficiencia de compresión. En Esto significa que VP9 puede codificar vídeo de mayor calidad con la misma tasa de bits que VP8, aunque puede requerir más potencia de procesamiento para hacerlo. VP8, aunque puede requerir más potencia de procesamiento.
Para más información, consulte el Códecs de vídeo guía del desarrollador.
Codificación de vídeo escalable (SVC)
Una de las principales ventajas de VP9 es su compatibilidad con Codificación de vídeo escalable (SVC). SVC permite que un único flujo de vídeo contenga múltiples calidades espaciales y temporales. Esto permite que una SFU (Selective Forwarding Unit), como la Router multimedia de vídeo de Vonagepara enviar diferentes resoluciones y frecuencias de imagen a cada cliente suscrito a un editor compatible con SVC. Esto es más eficiente que retransmisión simultáneacuando el editor envía varios flujos de vídeo a diferentes resoluciones, como suele hacerse con VP8.
Modo de escalabilidad
El modo de escalabilidad en SVC define el número y los tipos de capas espaciales y temporales de un flujo SVC, así como las dependencias entre ellas. Para más detalles, consulte la Especificación SVC de WebRTC del W3C. El modo de escalabilidad se define para un editor, y el Vonage Video Media Router se encargará de reenviar al suscriptor el flujo apropiado entre los disponibles.
Al publicar un flujo de cámara, la Video API de Vonage admite la función L1T3, L2T3y L3T3 modos de escalabilidad
(tres capas temporales con un número variable de capas espaciales) tanto para clientes web como nativos.
Ten en cuenta que la cantidad de capas espaciales se ajustará automáticamente según la resolución del flujo de la cámara y el ancho de banda estimado entre el editor y el enrutador de medios de video de Vonage.
- Con un ancho de banda suficiente, las capas espaciales para FHD son 1920x1080, 960x540 y 480x270 píxeles.
- Para HD, son 1280x720, 640x360 y 320x180. Para SD, sólo hay dos capas espaciales: 720x480 y 360x240.
- Del mismo modo, las capas temporales serán de 30 FPS para la capa temporal más alta, 15 FPS para la capa temporal media y 7,5 FPS para la capa temporal más baja.
Tanto para los clientes web como para los nativos, al publicar un flujo de pantalla compartida, el modo de escalabilidad se determina a través de una opción establecida durante la publicación (más detalles en la sección Página de vídeo escalable). Si está deshabilitado, el flujo utilizará el modo L1T1, que ofrece una única capa espacial y temporal (sin escalabilidad). Sin embargo, cuando está habilitado, el sistema seleccionará dinámicamente entre L1T1, L2T1 o L3T1 según el ancho de banda estimado entre el editor y el enrutador de medios de video de Vonage, así como la resolución del flujo de pantalla compartida.
Simulcast (utilizado en VP8) frente a SVC (utilizado en VP9)
En la emisión simultánea (utilizada con VP8), el editor envía múltiples flujos de vídeo independientes, cada uno de ellos compuesto por diferentes capas temporales con resoluciones y velocidades de bits variables, al servidor multimedia. Estas capas temporales codificadas dentro de múltiples flujos permiten al servidor seleccionar dinámicamente el flujo y la capa más adecuados para cada abonado en función de las condiciones de la red. Aunque este método mejora la eficacia al ajustar la calidad de vídeo en tiempo real, exige que el editor codifique (lo que aumenta la carga de la CPU) y transmita (lo que aumenta la carga de la red) varias versiones del mismo flujo para adaptarse a las distintas condiciones.
En cambio, la SVC (Scalable Video Coding, codificación de vídeo escalable), compatible con VP9, integra múltiples calidades espaciales y temporales en un único flujo. El servidor de medios puede extraer y reenviar la capa apropiada a cada abonado sin necesidad de que el editor envíe varios flujos. Esto hace que SVC sea más eficiente en cuanto a ancho de banda y mejora la eficiencia de la carga de trabajo del editor en comparación con el simulcast.
Utilización
Puede proceder a probar la función seleccionando VP9 como códec de vídeo preferido activándolo en la configuración de sus Applications a través de la opción Panel de Vonage.
- Para las sesiones retransmitidas, el SVC está desactivado.
- Para las sesiones enrutadas, SVC se activará automáticamente.
Notas sobre el archivo
Nuestra plataforma ofrece dos modos de archivo: Archivos compuestos y Archivos individuales, que seguirán funcionando al seleccionar VP9 como códec preferido. En los archivos compuestos, las grabaciones se almacenan como archivos MP4 compuestos con vídeo H.264 y audio AAC, ofreciendo un único resultado final. En cambio, los archivos individuales almacenan el contenido multimedia de cada participante por separado como secuencias WebM, con vídeo VP9 SVC (Scalable Video Coding).
La compatibilidad con VP9 SVC en reproductores comerciales y de código abierto puede variar en función de la versión y la implementación específica. Por ejemplo, al reproducir archivos individuales, no todos los reproductores pueden manejar correctamente los flujos codificados con SVC. En el caso de FFMPEG, sólo el códec libvpx-vp9 es capaz de descodificar correctamente estos flujos. Para una reproducción correcta, se puede utilizar el siguiente comando:
ffplay -vcodec libvpx-vp9 vp9_with_svc.webm
Además, si necesita convertir un archivo WebM codificado con SVC a un flujo VP8 estándar sin SVC (para una mayor compatibilidad), puede utilizar el siguiente comando FFMPEG para transcodificar el vídeo:
ffmpeg -c:v libvpx-vp9 -i vp9_with_svc.webm -c:v libvpx vp8.webm
Esta transcodificación elimina las capas SVC, lo que garantiza que el vídeo pueda reproducirse en reproductores que no sean totalmente compatibles con VP9 y/o SVC.
Además, si desea eliminar las capas SVC manteniendo el códec VP9, puede utilizar:
ffmpeg -c:v libvpx-vp9 -i vp9_with_svc.webm vp9_without_svc.webm
Preguntas frecuentes
¿Cuál es el estado de la compatibilidad del navegador VP9?
A partir de 2024, VP9 es totalmente compatible con los principales navegadores. Esto incluye Google Chrome, Firefox, Microsoft Edge, Samsung Internet, Opera y WebView Android, que ofrecen compatibilidad completa con VP9 desde 2016 aproximadamente. Safari 15+ de Apple y WebView en iOS 15+ son compatibles con VP9.
¿Qué dispositivos admiten VP9?
A partir de 2025, la mayoría de los dispositivos modernos son totalmente compatibles con VP9 para servicios WebRTC. Esto incluye ordenadores de sobremesa, portátiles y dispositivos móviles con versiones recientes de los principales navegadores, como Google Chrome, Firefox, Microsoft Edge, Opera, Samsung Internet, WebView Android y Safari y WebView en iOS (a partir de la versión 15). Aunque estos navegadores pueden realizar la codificación de vídeo a través del hardware, el soporte de hardware para la codificación y descodificación no es tan ubicuo. Por ejemplo, aunque el hardware sea capaz de codificar y descodificar VP9, nuestros SDK nativos utilizarán la codificación de vídeo por software para VP9.
Por otro lado, el soporte de hardware y software SVC no está tan extendido.
Nota: VP9 es compatible con Firefox, pero SVC no.
¿Qué dispositivos se recomiendan?
VP9 ofrece una compresión de vídeo mejorada respecto a VP8, con la contrapartida de una mayor carga de la CPU. Es de esperar que los modelos de dispositivos modernos de las principales marcas (por ejemplo, Apple iPhone, Google Pixel, Samung Galaxy, etc.) funcionen bien.
Otra función con limitaciones de CPU similares es la API del procesador multimedia de Vonage. Es de esperar que los dispositivos que cumplan esos requisitos manejen bien VP9.
Dispositivos recomendados por plataforma:
¿Qué versiones del Client SDK puedo utilizar?
Lo que se indica en el página de códecs se aplica. Sin embargo, la compatibilidad total con VP9 y SVC con las mejoras desarrolladas durante la fase de Acceso anticipado está disponible a partir de la versión 2.29. Si no puede actualizarse, la compatibilidad básica con VP9 y SVC comienza a partir de la versión 2.27 de Web and Native client SDK.
¿Qué ocurre si un navegador/SDK/dispositivo no es compatible con VP9?
Si es un editor, volverá a VP8. Si es un suscriptor, no podrá suscribirse a vídeo y solo recibirá audio.
¿Qué ocurre si un navegador/SDK/dispositivo es compatible con VP9 pero no con SVC?
Tanto para los editores como para los abonados, se negociará VP9, pero sin el soporte de escalabilidad. El punto final utilizará, de forma transparente, VP9 sin SVC.
¿Cómo controlo el códec en una sesión?
Como con cualquier otro códec, la herramienta Inspector de vídeo mostrará el códec, la resolución y la frecuencia de imagen en el módulo Métricas de calidad. Basta con pasar el ratón sobre cualquier punto de una línea trazada para ver el códec utilizado.
¿Cómo sé qué códec utiliza un punto final?
Los SDK proporcionan métodos para recuperar RTCStatsReport para cada flujo, que incluirá el códec de audio y vídeo utilizado. Para ver ejemplos de código, eche un vistazo a la página Manual de referencia del abonado o el Manual de referencia para editores para JS.
Para Linux, puede encontrar información adicional aquí.