Container e codec

Derek Herman
Derek Herman
Joe Medley
Joe Medley

Per supportare più browser, dovrai utilizzare FFmpeg per convertire il file .mov in due contenitori diversi: un contenitore MP4 e un contenitore WebM. Nella pratica, è probabile che specificherai contemporaneamente un codec. Per il momento, lasciamo che FFmpeg utilizzi i valori predefiniti.

Se questi concetti sono nuovi per te, ti consigliamo di leggere la sezione Nozioni di base sui file multimediali prima di procedere. Inoltre, se non hai installato FFmpeg, leggi la sezione Nozioni di base sulle applicazioni multimediali per configurarlo con Docker.

Stiamo usando l'installazione Docker suggerita e il file glocken.mov di Preparare i file multimediali per il web aggiunto alla directory media. Abbiamo utilizzato FFmpeg versione 4.3.2 per tutti i comandi in questa sezione.

Container

Innanzitutto, dobbiamo creare i due contenitori dal file .mov con le estensioni .mp4 e .webm con uno stream audio e video all'interno del file. Consulta la sezione Nozioni di base sui file multimediali per saperne di più su contenitori e stream se non conosci la differenza tra i due.

  1. MP4

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

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

La creazione di file WebM richiede più tempo rispetto a quella di file MP4. Non è sorprendente se guardi i risultati. Sebbene MP4 si comprima a circa 83% delle dimensioni del file originale, WebM si riduce a 78% delle dimensioni dell'originale, ma può essere molto più piccolo. I risultati variano. È importante sottolineare che FFmpeg 4.2.2 imposta la velocità in bit video predefinita su 200k e in 4.3.2 non imposta una velocità in bit predefinita. Pertanto, il video non è più una semplice copia4% dell'originale. Puoi verificarlo personalmente utilizzando il comando bash ls -a nella cartella in cui si trovano i file multimediali.

Ad esempio:

/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

Per ottenere un file di piccole dimensioni, procedi nel seguente modo:

/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

Controlla il tuo lavoro

Per verificare i risultati, utilizza FFmpeg e Shaka Packager come già mostrato in Nozioni di base sulle applicazioni multimediali:

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

Codec

Poi, il codec. Come indicato nella sezione Nozioni di base sui file multimediali, un codec non è la stessa cosa di un container (tipo di file). Due file dello stesso tipo di contenitore possono contenere dati compressi utilizzando codec diversi. Ad esempio, il formato WebM consente di codificare l'audio utilizzando Vorbis o Opus. Per cambiare il codec usiamo FFmpeg. Ad esempio, questo comando restituisce un file .mkv con un codec audio vorbis e un codec video av1.

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

In questo esempio, il flag -c:a e -c:v servono rispettivamente per specificare i codec audio e video.

La pagina Conversione di contenuti multimediali elenca i comandi necessari per convertire i codec. Le tabelle riportate di seguito riassumono le librerie utilizzate in FFmpeg per eseguire le conversioni del codec per i file WebM e MP4. Questi sono i formati consigliati rispettivamente per DASH e HLS.

Video

Codec Estensione Raccolta
av1 WebM, mkv libaom-av1
h264 MP4 libx264
vp9 WebM libvpx-vp9

Audio

Codec Estensione Raccolta
aac MP4 aac
opus WebM libopus
Vorbis WebM libvorbis

A questo punto, ti mostreremo come modificare il bitrate dei file appena creati.