Configuración recomendada
En esta sección, se enumeran las recomendaciones de codificación de VP9 para una variedad de perfiles comunes:
- Video altamente optimizado para la Web y dispositivos móviles (VOD)
- Distribución de contenido premium (VOD)
- Deportes, animación y contenido de 10 bits (VOD)
- codificación en vivo
- WebRTC
Introducción
Cuando codificas videos, debes tener en cuenta varios aspectos:
- ¿Crearás una sola versión de tu contenido multimedia o varias versiones con diferentes tasas de bits y resoluciones?
- ¿Estás creando una transmisión de video en vivo o archivos de video on demand?
- ¿Qué tipo de contenido multimedia codificas? ¿Tiene mucho movimiento? ¿Detalles? ¿Animación?
- ¿Estás codificando para obtener la máxima calidad (p.ej., contenido premium) o velocidad (p.ej., videoconferencias)?
Esta sección comienza con la configuración de un archivo de video básico a pedido y, luego, hace recomendaciones para todas estas preguntas.
Configuración básica
Tasas de bits de codificación
Las siguientes tasas de bits se sugieren como valores de referencia para la distribución en la Web y dispositivos móviles. Estas sugerencias minimizan la tasa de bits y logran una calidad de video adecuada para la distribución web y móvil para el consumidor. Considéralas como una recomendación de tasa de bits "baja" que aún puede lograr una calidad razonable.
Tasas de bits objetivo sugeridas
Tamaño y velocidad de fotogramas | Tasa de bits promedio (VOD, kbps) | Tasa de bits promedio (en vivo, kbps) |
---|---|---|
320 × 240 p a 24, 25 y 30 FPS | 150 | 250 |
640 × 360 p a 24, 25 y 30 FPS | 276 | 386 |
640 × 480 p a 24, 25 y 30 FPS | 512 (LQ), 750 (MQ) | 720 (LQ) y 1,024 (MQ) |
1280 x 720 p a 24, 25 y 30 FPS | 1024 | 1440 |
1280 x 720 p a 50 y 60 fps | 1800 | 2,500 |
1920 x 1080 p a 24, 25 y 30 FPS | 1800 | 2,500 |
1920 x 1080 p a 50 y 60 FPS | 3000 | 4200 |
2560 x 1440 p a 24, 25 y 30 fps | 6000 | 8400 |
2560 x 1440 p a 50 y 60 fps | 9000 | 12600 |
3840 x 2160 p a 24, 25 y 30 fps | 12000 | 16800 |
3840 x 2160 p a 50 y 60 fps | 18000 | 25200 |
Figura 2a: Velocidades de bits objetivo
Configuración de codificación de VOD
Configuración para la mayoría de los tipos de contenido
Para la mayoría de los tipos de contenido, recomendamos usar el modo de calidad restringida (CQ), con límites de tasa de bits. La mayoría de los videos contienen una combinación de escenas con mucho movimiento (p.ej., secuencias de acción) y escenas con menos detalles (p.ej., conversaciones). El modo CQ permite que el codificador mantenga un nivel de calidad razonable durante las escenas más largas y sencillas (sin desperdiciar bits) y, al mismo tiempo, asigne más bits a las secuencias difíciles.
También recomendamos permitir que el rango de la tasa de bits varíe entre el 50% y el 150% del objetivo, y usar los valores de calidad que se indican en el siguiente gráfico. Este modo requiere codificación de dos pasos, y se recomienda usar parámetros de configuración más rápidos para HD y resoluciones superiores, como se indica a continuación.
Configuración del codificador para la codificación CQ
Altura del marco | Calidad del objetivo (CQ) | Modo de codificación |
---|---|---|
240 | 37 | TWO_PASS_MEDIUM |
360 | 36 | TWO_PASS_MEDIUM |
480 | 34 (baja calidad) o 33 (calidad media) | TWO_PASS_MEDIUM |
720 | 32 | TWO_PASS_FAST |
1080 | 31 | TWO_PASS_FAST |
1440 | 24 | TWO_PASS_FAST |
2160 | 15 | TWO_PASS_FAST |
Figura 2b: Configuración recomendada de CQ
Por último, recomendamos 240 fotogramas de video entre fotogramas clave (para contenido de 30 FPS, esto se traduce en 8 segundos). Los fotogramas clave son fotogramas de video autosuficientes, es decir, no dependen de ningún otro fotograma para renderizarse (consulta Estructura de GOP para obtener una explicación más detallada). Para la reproducción en la Web y en dispositivos móviles, permitimos un espaciado generoso entre los fotogramas clave, ya que esto permite que el codificador elija la ubicación "óptima" de los fotogramas clave para maximizar la calidad.
Parámetros de línea de comandos de ejemplo: video de 640 x 360
Según lo anterior, las recomendaciones para los videos en 360p son las siguientes:
- CQ level of 36 (see Figure 2b)
- Tasa de bits objetivo de 276 kbps (consulta la figura 2a)
- Tasa de bits mínima permitida de 138 kbps (el 50% del objetivo)
- Tasa de bits máxima permitida de 414 kbps (150% del objetivo)
- Espaciado máximo de fotogramas clave de 240 segundos
- Perfil "Medio" de dos pasos
Esto proporciona los siguientes parámetros de línea de comandos para libvpx y FFmpeg:
libvpx
--end-usage=cq --cq-level=36 --target-bitrate=276 --minsection-pct=50 \
--maxsection-pct=150 --kf-max-dist=240 --passes=2 --good --cpu-used=2
FFmpeg
-crf 36 -b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2
Configuración de contenido Premium
En los ejemplos anteriores, usamos parámetros de configuración de codificación bastante rápidos para crear nuestros flujos de video de manera eficiente. Sin embargo, para cierto contenido (como las películas premium), vale la pena dedicar más tiempo a la codificación para obtener una salida de mayor calidad.
Para el contenido premium, recomendamos la misma configuración que se indicó anteriormente, pero con diferentes ajustes predeterminados, lo que indica al codificador que dedique más tiempo a optimizar la calidad:
Modos de codificación y parámetros de línea de comandos del contenido premium
Altura del marco | Modo de codificación | libvpx | FFmpeg |
---|---|---|---|
240 | TWO_PASS_VERY_SLOW |
--good --cpu-used 0 |
-good -speed 0 |
360 | TWO_PASS_VERY_SLOW |
--good --cpu-used 0 |
-good -speed 0 |
480 | TWO_PASS_VERY_SLOW |
--good --cpu-used 0 |
-good -speed 0 |
720 | TWO_PASS_SLOW |
--good --cpu-used 1 |
-good -speed 1 |
1080 | TWO_PASS_MEDIUM |
--good --cpu-used 2 |
-good -speed 2 |
1440 | TWO_PASS_MEDIUM |
--good --cpu-used 2 |
-good -speed 2 |
2160 | TWO_PASS_MEDIUM |
--good --cpu-used 2 |
-good -speed 2 |
Figura 2c: Modos de codificación de contenido premium
Deportes, parámetros de configuración de contenido con mucho movimiento
Recomendamos la codificación VBR para el contenido deportivo. Los deportes suelen tener un nivel bastante constante de alta complejidad y movimiento, y el uso de VBR logra una mayor calidad durante los períodos de menor movimiento que la codificación QP.
En la línea de comandos, la principal diferencia entre el modo QP y el modo VBR es que no especificarás un nivel de CQ. De lo contrario, la configuración recomendada es la misma.
Ejemplo de parámetros de línea de comandos de VBR: video de 640 x 360
libvpx
--end-usage=vbr --target-bitrate=276 --minsection-pct=50 --maxsection-pct=150 \
--kf-max-dist=240 --passes=2 --good --cpu-used=2
FFmpeg
-b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2
Configuración de animación y juegos
Configuración de contenido ruidoso o de baja calidad
En el caso del contenido ruidoso, recomendamos aumentar la cantidad y la intensidad de los fotogramas de referencia alternativos. Los fotogramas de referencia alternativos son fotogramas "invisibles" que nunca se muestran al usuario, pero que se usan como referencia cuando se crean los fotogramas finales (puedes leer más información aquí).
Se recomiendan los siguientes parámetros para indicarle a VP9 que use más fotogramas de referencia alternativos:
libvpx
--auto-alt-ref=1 --lag-in-frames-16 --arnr-maxframes=5 --arnr-strength=3
FFmpeg
Codificación HDR/de 10 bits
Para la codificación de 10 bits, te recomendamos que uses el perfil 2 de VP9. La codificación de 10 bits no requiere más bits, por lo que el resto de los parámetros son los mismos:
libvpx
--profile=2
FFmpeg
-profile 2
Configuración de codificación en vivo
Transmisiones en vivo
Por lo general, la codificación en vivo se realiza como CBR, lo que restringe la capacidad del codificador para maximizar la calidad. Por este motivo, usaremos tasas de bits más altas, como se indica en la figura 2a.
En el caso de la codificación en vivo, también queremos maximizar el subprocesamiento. Esto se realiza:
- Permitir que VP9 divida el video en columnas (que no pueden tener menos de 256 píxeles de ancho y deben ser una potencia de dos)
- Indica a VP9 que use más potencia de CPU. En la siguiente tabla, se enumeran las recomendaciones para cada resolución.
Recomendaciones de segmentación y subprocesos
Configuración del codificador para la codificación CQ
Tamaño del marco | Cantidad de columnas de mosaicos | Cantidad de subprocesos |
---|---|---|
320 x 240 | 1 | 2 |
640 × 360 | 2 | 4 |
640 × 480 | 2 | 4 |
1280 × 720 | 4 | 8 |
1920 × 1080 | 4 | 8 |
2560x1440 | 8 | 16 |
3840 × 2160 | 8 | 16 |
Figura 2d. Segmentación y subprocesamiento recomendados para la codificación en vivo
La codificación en vivo también establecerá el plazo como "en tiempo real" para garantizar el rendimiento y les indicará a los fotogramas de referencia alternativos que no miren hacia el futuro (lo que introduciría latencia):
A partir de esto, las recomendaciones para los videos en vivo de 360 p son las siguientes:
- CBR, tasa de bits objetivo de 386 kbps (consulta la figura 2a)
- 2 columnas de mosaicos (consulta la Figura 2d)
- 4 hilos (consulta la Figura 2d)
- Rendimiento en tiempo real
- Sin latencia debido a fotogramas alternativos (sin retraso de fotogramas)
Esto proporciona los siguientes parámetros de línea de comandos para libvpx y FFmpeg:
libvpx
--end-usage=cbr --target-bitrate=386 --cpu-used=4 --tile-columns=2 --rt --lag-in-frames=0
FFmpeg
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -r 29.97 -b:v 386k \
-minrate 386k -maxrate 386k -c:v libvpx-vp9 -c:a libopus output.webm