Contêineres e codecs

Derek Herman
Derek Herman
Joe Medley
Joe Medley

Para oferecer suporte a vários navegadores, use o FFmpeg para converter seu .mov em dois contêineres diferentes: um contêiner MP4 e um contêiner WebM. Em você provavelmente especificaria um codec ao mesmo tempo. Por enquanto, estamos permitindo que o FFmpeg use seus padrões.

Se esses conceitos são novos para você, leia Noções básicas sobre arquivos de mídia antes de continuar. Além disso, se você não tiver o FFmpeg instalado, leia Fundamentos de aplicativos de mídia para configurá-lo com o Docker.

Estamos usando a instalação do Docker sugerida o arquivo glocken.mov de Preparar arquivos de mídia para a Web adicionados no diretório media. Usamos o FFmpeg versão 4.3.2 para todos comandos nesta seção.

Contêineres

Primeiro, precisamos criar nossos dois contêineres no arquivo .mov com o .mp4 e .webm com um stream de áudio e de vídeo dentro do arquivo. Leia as noções básicas sobre arquivos de mídia. para saber mais sobre contêineres e streams. para resolvê-los com rapidez.

  1. MP4

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

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

O WebM leva mais tempo para criar do que o MP4. Isso não é surpreendente quando você olha para os resultados. Já o MP4 comprime para cerca de 83% dos arquivos originais tamanho, o WebM é reduzido a 78% do tamanho original, mas pode ser muito menor. Os resultados variam. É importante ressaltar que o 4.2.2 do FFmpeg definiu o taxa de bits padrão do vídeo para 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 Use o comando bash ls -a na pasta em que 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 os resultados, use o FFmpeg e o Shaka Packager, como já mostrado no Fundamentos de aplicativos de mídia:

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

Codecs

A seguir, o codec. Como descrito em 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 contêiner pode 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, use o FFmpeg. Por exemplo, este comando gera um arquivo .mkv com um á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 -c:v são para especificar o áudio e e codecs de vídeo, respectivamente.

A página Conversão de mídia lista necessários para converter codecs. As tabelas abaixo resumem as bibliotecas usadas no FFmpeg para realizar as conversões de codec para arquivos WebM e MP4. Estes são os 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

Em seguida, mostraremos como alterar a taxa de bits dos seus arquivos recém-criados.