Para oferecer suporte a vários navegadores, use o FFmpeg para converter o arquivo .mov
em dois contêineres diferentes: um contêiner MP4 e um contêiner WebM. Na
prática real, você provavelmente especificaria um codec ao mesmo tempo. Por enquanto,
permitiremos que o FFmpeg use os padrões.
Se esses conceitos forem novos para você, leia Noções básicas de arquivos de mídia antes de continuar. Além disso, se você não tiver o FFmpeg instalado, leia Noções básicas de aplicativos de mídia para configurá-lo com o Docker.
Estamos usando a instalação sugerida do Docker e o arquivo glocken.mov de Preparar arquivos de mídia para a Web adicionados ao diretório media
. Usamos a versão 4.3.2 do FFmpeg para todos os
comandos desta seção.
Contêineres
Primeiro, precisamos criar nossos dois contêineres do arquivo .mov
com as extensões de arquivo .mp4
e .webm
com um stream de áudio e vídeo dentro do arquivo.
Consulte Noções básicas sobre arquivos de mídia
para saber mais sobre contêineres e transmissões, caso não saiba a diferença
entre eles.
MP4
/media # ffmpeg -i glocken.mov glocken.mp4
WebM
/media # ffmpeg -i glocken.mov glocken.webm
O WebM leva mais tempo para ser criado do que o MP4. Isso não é surpreendente quando você analisa
os resultados. Enquanto o MP4 é comprimido para cerca de 83%
do tamanho do arquivo
original, o WebM é reduzido para 78%
do tamanho original, mas pode ser muito menor.
Os resultados variam. É importante ressaltar que o FFmpeg 4.2.2
define a
taxa de bits de vídeo padrão como 200k
e, em 4.3.2
, não define uma taxa de bits padrão.
Assim, o vídeo não é mais mero4%
do original. Você pode conferir isso
usando o comando bash ls -a
na pasta onde os arquivos de mídia estão localizados.
Exemplo:
/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 gerar um arquivo pequeno, faça o seguinte:
/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
Confira suas tarefas
Para verificar seus resultados, use o FFmpeg e o Shaka Packager, conforme mostrado em Noções básicas de aplicativos de mídia:
/media # packager input=glocken.mp4 --dump_stream_info
/media # ffmpeg -i glocken.mp4
Codecs
Em seguida, o codec. Conforme descrito nas Noções básicas sobre arquivos de mídia, um codec
não é a mesma coisa que um contêiner (tipo de arquivo). Dois arquivos do mesmo tipo de contêiner podem conter dados compactados usando codecs diferentes. O formato WebM, por exemplo,
permite que o áudio seja codificado usando Vorbis ou Opus. Para mudar o codec,
usamos o FFmpeg. Por exemplo, este comando gera um arquivo .mkv
com um codec de áudio vorbis
e um codec de vídeo av1
.
/media # ffmpeg -i glocken.mov -c:a vorbis -c:v av1 glocken.mkv
Neste exemplo, a flag -c:a
e o -c:v
são para especificar os codecs de áudio e
vídeo, respectivamente.
A página Conversão de mídia lista os comandos necessários para converter codecs. As tabelas abaixo resumem as bibliotecas usadas no FFmpeg para realizar as conversões de codec de arquivos WebM e MP4. Esses são os formatos recomendados para DASH e HLS, respectivamente.
Vídeo
Codec | Extensão | Biblioteca |
---|---|---|
av1 | WebM, mkv | libaom-av1 |
h264 | MP4 | libx264 |
vp9 | WebM | libvpx-vp9 |
Áudio
Codec | Extensão | Biblioteca |
---|---|---|
aac | MP4 | aac |
Opus | WebM | libopus |
Vorbis | WebM | libvorbis |
A seguir, vamos mostrar como mudar o bitrate dos arquivos recém-criados.