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.
MP4
/media # ffmpeg -i glocken.mov glocken.mp4
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.