Container e codec

Derek Herman
Derek Herman
Mario Medley
Mario Medley

Per supportare più browser, devi utilizzare FFmpeg per convertire il tuo file .mov in due container diversi: un container MP4 e un container WebM. In pratica, è probabile che tu debba specificare un codec nello stesso momento. Per ora, lasciamo che FFmpeg utilizzi i valori predefiniti.

Se non hai mai utilizzato questi concetti, prima di proseguire, leggi Nozioni di base sui file multimediali. Inoltre, se FFmpeg non è installato, leggi le nozioni di base dell'applicazione multimediale per configurarlo con Docker.

Stiamo utilizzando l'installazione Docker suggerita e il file glocken.mov di Prepara i file multimediali per il web aggiunti all'interno della directory media. Abbiamo utilizzato FFmpeg versione 4.3.2 per tutti i comandi in questa sezione.

Container

Innanzitutto, dobbiamo creare i due container a partire dal file .mov con le estensioni dei file .mp4 e .webm e con uno stream audio e video all'interno del file. Consulta le nozioni di base sui file multimediali per ulteriori informazioni su container e stream se non conosci le differenze.

  1. MP4

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

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

La creazione di WebM richiede più tempo rispetto a MP4. Ciò non sorprende se si esaminano i risultati. Mentre il formato MP4 viene compresso a circa 83% delle dimensioni del file originale, WebM è inferiore a 78% rispetto alle dimensioni dell'originale, ma può essere molto più piccolo. I risultati varieranno. È importante tenere presente che FFmpeg 4.2.2 ha impostato la velocità in bit predefinita del video su 200k e che in 4.3.2 non ne imposta una predefinita. Pertanto, il video non è più una semplice4% rappresentazione dell'originale. Puoi verificarlo autonomamente utilizzando il comando bash ls -a nella cartella in cui si trovano i tuoi 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 dimensioni ridotte, devi procedere 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 nelle 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 container possono contenere i dati compressi con codec diversi. Ad esempio, il formato WebM consente di codificare l'audio utilizzando Vorbis o Opus. Per modificare il codec, utilizziamo 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, i flag -c:a e -c:v servono a specificare rispettivamente i codec audio e video.

La pagina Conversione di contenuti multimediali elenca i comandi necessari per convertire i codec. Le tabelle riportate di seguito riepilogano 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

Ora ti mostreremo come modificare la velocità in bit dei file appena creati.