Codificación básica
Conceptos básicos sobre la compresión de video
En esta sección, se describen las opciones básicas para la codificación VP9, incluidos el tamaño de fotograma, el control de la tasa de bits y la calidad.
Si no conoces la compresión de video, te recomendamos que mires este video para obtener más información sobre la necesidad de comprimir videos y cómo funciona este proceso.
Una codificación simple
El siguiente comando de FFmpeg convierte un archivo de entrada en video VP9 con audio Opus. Esta es la codificación más simple posible, que usa la configuración predeterminada.
ffmpeg -i tears_of_steel_1080p.webm -c:v libvpx-vp9 -c:a libopus output.webm
Esta codificación de FFmpeg usa los siguientes parámetros de línea de comandos:
FFmpeg | |
---|---|
-i <filename> |
Especifica el nombre del archivo de entrada |
-c:v libvpx-vp9 |
Indica a FFmpeg que cree un video VP9 |
-c:a libopus |
Indica a FFmpeg que cree audio Opus |
output.webm |
Especifica el nombre del archivo de salida |
FFmpeg infiere el tipo de archivo que se debe crear a partir del nombre del archivo de salida que usas. En este ejemplo, FFmpeg generará un archivo WebM porque solicitamos output.webm
.
Solución
Todos los videos tienen un tamaño de fotograma (que indica el ancho y la altura en píxeles). El siguiente parámetro de línea de comandos de FFmpeg se puede usar para controlar el tamaño de los fotogramas de video de salida para la codificación VP9:
FFmpeg | |
---|---|
-vf scale=<width>x<height> |
Ancho y altura del marco |
Por ejemplo, el siguiente comando de FFmpeg generará un video WebM VP9 de 640 x 480.
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
-c:v libvpx-vp9 -c:a libopus output.webm
Las resoluciones más pequeñas son de menor calidad, pero las más grandes requieren más ancho de banda y potencia de procesamiento para decodificarse, y es posible que no sean compatibles con dispositivos más antiguos. En el caso de VP9, 640 x 480 se considera una resolución segura para una amplia variedad de dispositivos móviles y web.
Tasa de bits
VP9 admite varios modos de tasa de bits diferentes:
Standard | |
---|---|
Cuantificador constante (Q) | Te permite especificar un valor de cuantificador fijo; la tasa de bits variará. |
Calidad restringida (CQ) | Te permite establecer un nivel de calidad máximo. La calidad puede variar dentro de los parámetros de la tasa de bits |
Tasa de bits variable (VBR) | Equilibra la calidad y la tasa de bits a lo largo del tiempo dentro de las restricciones de la tasa de bits. |
Tasa de bits constante (CBR) | Intenta mantener la tasa de bits bastante constante mientras varía la calidad. |
Se recomienda el modo CQ para los videos basados en archivos (a diferencia de la transmisión en vivo). Los siguientes parámetros de línea de comandos de FFmpeg se usan para el modo de CQ:
FFmpeg | |
---|---|
-b:v <arg> |
Establece la tasa de bits objetivo (p.ej., 500 k) |
-minrate <arg> -maxrate <arg> |
Establece la tasa de bits mínima y máxima. |
-crf <arg> |
Establece el nivel de calidad máximo. Los valores válidos son de 0 a 63, y los números más bajos indican una mayor calidad. |
Por ejemplo, el siguiente comando de FFmpeg creará un archivo de video de calidad media de 640 x 480 con el modo de CQ, con una tasa de bits promedio de 750 kbps y una calidad máxima restringida a 33.
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
-b:v 750k -crf 33 -c:v libvpx-vp9 -c:a libopus output.webm
La tasa de bits variará según la calidad que desees lograr y la resolución del video. Aquí puedes encontrar un conjunto completo de recomendaciones para las tasas de bits en varias resoluciones.
Configuración de calidad y velocidad
La compresión de video es un equilibrio entre la calidad del resultado y el tiempo que lleva crearlo. En general, siempre puedes obtener una mayor calidad si permites más tiempo para la codificación, pero el tiempo necesario para obtener la mayor calidad posible puede ser poco práctico.
VP9 ofrece varios parámetros de configuración para equilibrar la calidad y la velocidad:
El parámetro de configuración de calidad le indica al codificador el enfoque que debe adoptar para comprimir el video. Los modos disponibles son mejor, bueno y en tiempo real.
La configuración de subprocesos permite que el codificador use varios subprocesos de CPU para codificar el video. Estos parámetros de configuración pueden reducir ligeramente la calidad, pero pueden mejorar significativamente la velocidad de codificación y decodificación.
Estos dos tipos de parámetros de configuración se controlan con varios parámetros de la línea de comandos:
FFmpeg | |
---|---|
-threads |
Indica la cantidad de subprocesos que se usarán durante la codificación. |
-quality |
Se puede establecer en good , best o realtime . |
-speed |
Este parámetro tiene diferentes significados según si la calidad se establece en good o realtime . Los parámetros de configuración de velocidad 0-4 se aplican al contenido de VOD en good y best , donde 0 es la calidad más alta y 4 es la más baja. Los valores válidos de Realtime son 5-8 ; los números más bajos significan una mayor calidad. |
-tile-columns |
La división en mosaicos divide el video en regiones rectangulares, lo que permite el procesamiento de subprocesos múltiples para la codificación y decodificación. La cantidad de segmentos siempre es una potencia de dos. 0 =1 mosaico, 1 =2, 2 =4, 3 =8, 4 =16, 5 =32. |
El siguiente comando de FFmpeg creará un archivo de 640 x 480 con la calidad establecida en "good" y la velocidad establecida en 0 (alta calidad):
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
-b:v 750k -quality good -speed 0 -crf 33 -c:v libvpx-vp9 -c:a libopus \
output.webm
Las opciones de configuración de calidad y velocidad pueden variar según la resolución y la potencia de procesamiento disponible. Encontrarás un conjunto completo de recomendaciones en la siguiente sección.