Container e codec

Derek Herman
Derek Herman
Joe Medley
Joe Medley

Per supportare più browser, devi utilizzare FFmpeg per convertire .mov in due diversi container: un container MP4 e un container WebM. Nella nella pratica, probabilmente specificherai un codec nello stesso momento. Per il momento, consentiamo a FFmpeg di usare le sue impostazioni predefinite.

Se non conosci questi concetti, ti consigliamo di leggere Nozioni di base sui file multimediali prima di andare oltre. Inoltre, se FFmpeg non è installato, Nozioni di base sulle applicazioni multimediali per configurarlo con Docker.

Stiamo usando l'installazione e l'uso di Docker suggerite il file glocken.mov di Preparare i file multimediali per il web aggiunto all'interno della directory media. Abbiamo usato FFmpeg versione 4.3.2 per tutti i i comandi SQL in questa sezione.

Container

Innanzitutto, dobbiamo creare i due container dal file .mov con l'elemento .mp4 e .webm con uno stream audio e video all'interno del file. Consulta le nozioni di base sui file multimediali per ulteriori informazioni su container e flussi di dati, se non conosci la differenza che li rappresentano.

  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 quella in formato MP4. Non sorprende che tu osservi i risultati. Mentre MP4 si comprime a circa 83% della lunghezza del file originale WebM è sceso al 78% delle dimensioni dell'originale, ma può essere molto più piccolo. I risultati variano. È importante ricordare che FFmpeg 4.2.2 ha impostato la velocità in bit predefinita del video è 200k, mentre 4.3.2 non imposta una velocità in bit predefinita. Pertanto, il video non è più semplice4% dell'originale. Puoi verificarlo in prima persona utilizzando il comando bas 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 dimensioni ridotte, dovresti procedere in questo 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 sull'applicazione multimediale:

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

Codec

Poi il codec. Come indicato nelle Nozioni di base sui file multimediali, un codec non è la stessa cosa di un container (tipo di file). Due file dello stesso container potrebbe contenere dati compressi utilizzando codec diversi. Il formato WebM, ad esempio consente di codificare l'audio utilizzando Vorbis oppure Opus. Per cambiare il codec utilizzare FFmpeg. Ad esempio, questo comando restituisce un file .mkv con un 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 consentono di specificare l'audio e codec video.

La pagina Conversione di contenuti multimediali elenca necessari per convertire i codec. Nelle tabelle seguenti sono riepilogate le librerie utilizzate in FFmpeg per eseguire le conversioni codec per i file WebM e MP4. Queste sono le 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
opera WebM libopus
Vorbis WebM libvorbis

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