Codificación básica

Conceptos básicos de compresión de video

En esta sección, se describen las opciones básicas de codificación VP9, como el tamaño de los fotogramas, el control básico de la tasa de bits y la calidad.

Si es la primera vez que usas la compresión de video, te recomendamos mirar este video para obtener más información sobre la necesidad de compresión de video y cómo funciona.

Una codificación simple

El siguiente comando FFmpeg convierte un archivo de entrada en un video de VP9 con audio de 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 FFmpeg usa los siguientes parámetros de línea de comandos:

FFmpeg
-i <filename> Especifica el nombre de archivo de entrada.
-c:v libvpx-vp9 Le dice a FFmpeg que cree un video de VP9.
-c:a libopus Le dice a FFmpeg que cree audio de Opus
output.webm Especifica el nombre de archivo de salida.

FFmpeg infiere el tipo de archivo que se creará a partir del nombre de archivo de salida que uses. En este ejemplo, FFmpeg mostrará un archivo WebM porque solicitamos output.webm.

Resolución

Cada video tiene un tamaño de marco (que indica la altura y el ancho en píxeles). El siguiente parámetro de la línea de comandos de FFmpeg se puede usar a fin de controlar el tamaño del fotograma del video resultante para la codificación VP9:

FFmpeg
-vf scale=<width>x<height> Ancho y alto del marco

Por ejemplo, el siguiente comando FFmpeg mostrará un video WebM VP460 de 680x480.

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 resoluciones más grandes requieren más ancho de banda, más potencia de procesamiento para decodificar y es posible que no sean compatibles con dispositivos más antiguos. Para VP9, la resolución de 640 x 480 se considera segura en una amplia gama de dispositivos móviles y web.

Tasa de bits (tasa de bits)

VP9 admite varios modos de tasa de bits diferentes:

modo
Cuantizador de constantes (Q) Permite especificar un valor de cuantizador fijo; la tasa de bits variará
Calidad restringida (CQ) Te permite establecer un nivel de calidad máximo. La calidad puede variar en los parámetros de tasa de bits
Tasa de bits variable (VBR) Equilibra la calidad y la tasa de bits con el paso del tiempo dentro de las restricciones de la tasa de bits.
Tasa de bits constante (CBR) Intenta mantener una tasa de bits relativamente constante mientras la calidad varía.

Se recomienda el modo CQ para los videos basados en archivos (a diferencia de las transmisiones en vivo). Los siguientes parámetros de la línea de comandos FFmpeg se utilizan para el modo CQ:

FFmpeg
-b:v <arg> Establece la tasa de bits objetivo (p.ej., 500,000)
-minrate <arg>
-maxrate <arg>
Establece una tasa de bits mínima y máxima.
-crf <arg> Establece el nivel de calidad máximo. Los valores válidos son 0 a 63, mientras que los números más bajos son de mayor calidad.

Por ejemplo, el siguiente comando FFmpeg creará un archivo de video de calidad media y calidad de 640 x 480 con el modo 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 obtener y la resolución del video. Aquí encontrarás un conjunto completo de recomendaciones para las tasas de bits con varias resoluciones.

Configuración de calidad y velocidad

La compresión de videos es una compensación entre la calidad de la salida y la cantidad de tiempo que se tarda en crearla. En términos generales, siempre puedes obtener una calidad más alta si permites que se codifique más, pero el tiempo necesario para obtener la calidad más alta posible no es práctico.

VP9 ofrece varios parámetros de configuración para equilibrar la calidad y la velocidad:

  • La configuración de calidad le indica al codificador cuál es el enfoque que se utiliza para comprimir el video. Los modos disponibles son los mejores, los buenos y los en tiempo real.

  • La configuración de subprocesos permite que el codificador use varios subprocesos de CPU para codificar el video. La configuración puede reducir un poco la calidad, pero puede mejorar significativamente la velocidad de codificación y decodificación.

Existen dos parámetros de configuración controlados por 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 configurar en good, best o realtime
-speed Este parámetro tiene significados diferentes según si la calidad se establece en good o realtime. La configuración de velocidad 0-4 se aplica al 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 implican una calidad más alta.
-tile-columns El mosaico divide el video en regiones rectangulares, lo que permite múltiples subprocesos para la codificación y la decodificación. La cantidad de mosaicos 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 "#" y la velocidad configurada 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. En la siguiente sección, encontrarás un conjunto completo de recomendaciones.