Contêineres e codecs

Derek herman
Derek Herman
Joe medley
Joe Medley

Para oferecer suporte a vários navegadores, é necessário usar o FFmpeg para converter seu arquivo .mov em dois contêineres diferentes: um contêiner MP4 e um contêiner WebM. Na prática, você provavelmente especificaria um codec ao mesmo tempo. Por enquanto, permitimos que o FFmpeg use o padrão.

Se esses conceitos forem novos para você, leia Princípios básicos de arquivos de mídia antes de continuar. Além disso, se você não tiver o FFmpeg instalado, leia Conceitos básicos de aplicativos de mídia para configurá-lo com o Docker.

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

Contêineres

Primeiro, precisamos criar nossos dois contêineres no arquivo .mov com as extensões .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 streams caso você não saiba a diferença entre eles.

  1. MP4

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

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

A criação de um WebM leva mais tempo do que MP4. Isso não surpreende ao analisar os resultados. Embora o MP4 seja compactado para cerca de 83% do tamanho do arquivo original, o WebM é reduzido para 78% do tamanho do original, mas pode ser muito menor. Os resultados podem variar. É importante ressaltar que o 4.2.2 do FFmpeg definiu a taxa de bits de vídeo padrão como 200k e que, em 4.3.2, ele não define uma taxa de bits padrão. Assim, o vídeo não é mais apenas4% do original. Confira isso usando 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 obter 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, conforme mostrado em Conceitos básicos do aplicativo de mídia:

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

Codecs

Em seguida, o codec. Como mencionado 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 tipo de contêiner podem conter dados compactados com diferentes codecs. 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, as sinalizações -c:a e -c:v servem 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 para arquivos WebM e MP4. Esses são os formatos recomendados para DASH e HLS, respectivamente.

Vídeo

Codec Extensão Biblioteca
av1 WebM e 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, vamos mostrar como alterar a taxa de bits dos seus arquivos recém-criados.