Contenedores y códecs

Derek Herman
Derek Herman
Joe Medley
Joe Medley

Para admitir varios navegadores, deberás usar FFmpeg para convertir tu archivo .mov a dos contenedores diferentes: un contenedor MP4 y un contenedor WebM. En la práctica, es probable que especifiques un códec al mismo tiempo. Por ahora, vamos a permitir que FFmpeg use sus valores predeterminados.

Si estos conceptos son nuevos para ti, debes leer Conceptos básicos de los archivos multimedia antes de continuar. Además, si no tienes FFmpeg instalado, lee Conceptos básicos de las aplicaciones multimedia para configurarlo con Docker.

Usamos la instalación de Docker sugerida y el archivo glocken.mov de Prepara archivos multimedia para la Web agregado dentro del directorio media. Usamos la versión 4.3.2 de FFmpeg para todos los comandos de esta sección.

Contenedores

Primero, debemos crear nuestros dos contenedores a partir del archivo .mov con las extensiones de archivo .mp4 y .webm con una transmisión de audio y video dentro del archivo. Revisa los conceptos básicos de los archivos multimedia si no conoces la diferencia entre ellos.

  1. MP4

    /media # ffmpeg -i glocken.mov glocken.mp4
    
  2. WebM

    /media # ffmpeg -i glocken.mov glocken.webm
    

WebM tarda más en crearse que MP4. Esto no es sorprendente cuando miras los resultados. Si bien MP4 se comprime a aproximadamente 83% del tamaño del archivo original, WebM se reduce a 78% del tamaño original, pero puede ser mucho más pequeño. Los resultados variarán. Es importante tener en cuenta que FFmpeg 4.2.2 establece la tasa de bits de video predeterminada en 200k y, en 4.3.2, no establece una tasa de bits predeterminada. Por lo tanto, el video ya no es una simple4% del original. Para comprobarlo, usa el comando bash ls -a en la carpeta donde se encuentran tus archivos multimedia.

Por ejemplo:

/media # ls -l
-rw-r--r-- 1 root  root  12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root  root  10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root  root   9503301 Mar 7 18:30 glocken.webm

Para obtener un archivo pequeño, haz lo siguiente:

/media # ffmpeg -i glocken.mov -b:v 200k glocken.webm
...
frame=  300 fps=3.6 q=0.0 Lsize=     483kB time=00:00:10.01 bitrate= 395.0kbits/s speed=0.121x
video:359kB audio:117kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.356068%
/media # ls -l
-rw-r--r-- 1 root  root  12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root  root  10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root  root    494497 Mar 7 18:45 glocken.webm

Revise su trabajo

Para verificar los resultados, usa FFmpeg y Shaka Packager, como se muestra en Conceptos básicos de las aplicaciones multimedia:

/media # packager input=glocken.mp4 --dump_stream_info
/media # ffmpeg -i glocken.mp4

Códecs

A continuación, el códec. Como se indica en Conceptos básicos de los archivos multimedia, un códec no es lo mismo que un contenedor (tipo de archivo). Dos archivos del mismo tipo de contenedor podrían contener datos comprimidos con diferentes códecs. Por ejemplo, el formato WebM permite que el audio se codifique con Vorbis o Opus. Para cambiar el códec, usamos FFmpeg. Por ejemplo, este comando genera un archivo .mkv con un códec de audio vorbis y un códec de video av1.

/media # ffmpeg -i glocken.mov -c:a vorbis -c:v av1 glocken.mkv

En este ejemplo, la marca -c:a y -c:v sirven para especificar los códecs de audio y video, respectivamente.

En la página Conversión de contenido multimedia, se enumeran los comandos necesarios para convertir códecs. En las siguientes tablas, se resumen las bibliotecas que se usan en FFmpeg para realizar las conversiones de códecs para archivos WebM y MP4. Estos son los formatos recomendados para DASH y HLS, respectivamente.

Video

Códec Extensión Biblioteca
av1 WebM y MKV libaom-av1
h264 MP4 libx264
vp9 WebM libvpx-vp9

Audio

Códec Extensión Biblioteca
aac MP4 aac
opus WebM libopus
vorbis WebM Libvorbis

A continuación, te mostraremos cómo cambiar el bitrate de los archivos que acabas de crear.