Perché un MP4 non si riproduce, e che cos'è davvero un contenitore

In che cosa i contenitori come MP4 e MKV si distinguono dai codec come H.264 e AV1, e come bitrate, keyframe, tracce audio e ricodifica decidono se un file si riproduce e quanto diventa grande.

Un MP4 che non si riproduce è raramente corrotto. L'estensione nomina soltanto il contenitore, l'involucro che tiene insieme i flussi e i loro timestamp. Quello che va decodificato è il codec al suo interno, e lo stesso .mp4 può contenere H.264, che si riproduce su un telefono di dieci anni fa, oppure AV1, che un televisore di due anni fa non riesce nemmeno a sfiorare. Ecco perché un MP4 si riproduce e un altro no.

A qualsiasi file video si applicano due domande: in che scatola si trova, e come è compressa l'immagine. Cambiare la scatola di solito è gratis; cambiare la compressione non lo è mai.

Un contenitore è una scatola, un codec è l'immagine

ContenitoreCodec videoAudioSupporto
MP4H.264, H.265, qualche AV1AAC, MP3Ovunque
WebMVP8, VP9, AV1Opus, VorbisSolo browser
MKVQuasi qualsiasi cosaAC-3, DTS, qualsiasi cosaRiproduttori desktop, non i browser
MOVH.264, H.265, ProResAAC, PCMApple, montaggio
AVIDivX, Xvid, MJPEGMP3, PCMVecchi sistemi Windows

MKV è quello permissivo, ottimo per gli archivi e pessimo per la distribuzione: un MKV valido può contenere una combinazione che nessun browser aprirà. MOV e MP4 condividono gran parte della struttura, quindi passare dall'uno all'altro spesso significa solo riscrivere l'indice. Ispeziona il file:

input.mp4
  Stream #0:0  Video  h264 (High)   1920x1080  30 fps  4200 kb/s
  Stream #0:1  Audio  aac  (LC)     48000 Hz   stereo   128 kb/s

La parola dopo «Video» è quella che conta. La parola «mp4» non ti dice quasi nulla.

Quale codec si riproduce dove

CodecBit a parità di qualitàLicenzeSupporto
H.264 (AVC)Riferimento, diciamo 100%Pool di brevetti, con licenza quasi ovunqueUniversale
H.265 (HEVC)dal 50 al 65%Pool concorrenti, costosi, questione irrisoltaApple sì, browser a macchia di leopardo
VP9Simile a H.265Senza royaltyChrome, Firefox, Edge, Android
AV1dal 30 al 50%Senza royaltyBrowser attuali, hardware recente

H.265 è tecnicamente valido e commercialmente scomodo, quindi il supporto si divide lungo le linee dei produttori più che lungo quelle tecniche. AV1 comprime meglio di tutti e codifica molto più lentamente, a volte di un ordine di grandezza, quindi si adatta ai video codificati una volta e guardati spesso. Per un pubblico sconosciuto, H.264 dentro un MP4 resta la risposta, ed è quello a cui punta Comprimi video.

Bitrate, risoluzione e frequenza dei fotogrammi

Il bitrate è il numero di bit al secondo in uscita, e da solo determina la dimensione del file: moltiplicalo per la durata e hai il file.

1920 x 1080 x 30 fps x 3 bytes = about 186 MB per second raw
delivered at 4 Mb/s            = about 0.5 MB per second

Raddoppiare la risoluzione quadruplica il numero di pixel ma non i bit necessari, perché in un fotogramma più grande i pixel vicini si somigliano di più e si comprimono meglio. Aspettati da due a tre volte tanto, quindi dimezzare larghezza e altezza è fra i modi meno costosi di rimpicciolire un file: è quello che fa Ridimensiona video, mentre Ritaglia video butta via i pixel del tutto. La frequenza dei fotogrammi è più mite, e passando da 30 a 60 aggiunge dal 20 al 40% invece del 100%; Cambia velocità video accorcia invece la linea del tempo.

Tre modi per controllare il flusso di bit:

  • Il bitrate costante mantiene un unico valore per tutta la durata: le inquadrature statiche sprecano bit, il movimento veloce si sfalda. Si adatta ai collegamenti con un tetto rigido.
  • Il bitrate variabile con un obiettivo fa la media, lasciando che le scene si prestino bit a vicenda. La dimensione è prevedibile, quindi usalo quando il risultato deve stare dentro un limite.
  • La qualità costante, di solito un valore CRF, fissa la qualità e lascia che il bitrate vada dove serve. La dimensione è imprevedibile, la qualità è uniforme, ed è la scelta predefinita per tutto ciò che viene guardato invece che trasmesso in streaming.

Per H.264 la scala CRF va da 0 a 51, e più basso è meglio: 18 è quasi indistinguibile dalla sorgente, 23 è un valore predefinito ragionevole, oltre 28 il movimento si sfalda. La scala non è la stessa fra codec diversi.

I keyframe, e perché a volte un taglio è gratis

Un fotogramma I, o keyframe, è un'immagine completa che si decodifica da sola. Un fotogramma P memorizza solo ciò che è cambiato rispetto a un fotogramma precedente. Un fotogramma B fa la sua previsione sia da un fotogramma precedente sia da uno successivo, il che comprime meglio di tutto ed è il motivo per cui a volte i decodificatori trattengono i fotogrammi prima di mostrarli.

Un keyframe più i fotogrammi che dipendono da esso formano un gruppo di immagini, e gli encoder per il web ne piazzano uno ogni due secondi circa. Taglia a metà gruppo e i fotogrammi sopravvissuti faranno riferimento a un'immagine che nel file non c'è più, ed è per questo che il taglio ha due modalità. Copiare i flussi è istantaneo e senza perdita, ma cade solo su un keyframe, quindi l'inizio può slittare fino alla lunghezza del gruppo; la ricodifica mette un keyframe dove l'hai chiesto, al costo di tempo e qualità. Taglia video offre entrambe; copia, a meno che non conti il fotogramma esatto.

La ricodifica costa qualità perché ogni passaggio con perdita butta via ciò che il modello considera meno visibile. Codifica di nuovo e il secondo passaggio tratterà gli artefatti del primo come dettaglio reale, conservandoli e aggiungendo i propri, così l'errore si accumula di generazione in generazione. Copia i flussi quando cambia solo il contenitore, e copia l'immagine quando se ne va solo l'audio, che è quello che fa Silenzia video. Ruota video può impostare un flag di rotazione invece di girare i pixel, anche se i riproduttori che lo ignorano mostrano l'orientamento originale. Quando i pixel devono cambiare, cambia tutto in un unico passaggio.

La traccia audio è l'altra metà

L'audio è un flusso separato con il proprio codec, la propria frequenza di campionamento e la propria disposizione dei canali, ed è un motivo frequente per cui un file non si riproduce. Un browser che decodifica senza problemi l'immagine H.264 può non decodificare il surround AC-3 o DTS, lasciando silenzio oppure facendo fallire del tutto il file. I rip da disco in MKV falliscono continuamente in questo modo.

La frequenza di campionamento è quante volte è stata misurata la forma d'onda: 44100 Hz dai CD, 48000 Hz lo standard del video. AAC a 48000 Hz in stereo è la scelta sicura per la distribuzione, intorno a 128 kb/s per il parlato e 192 kb/s per la musica. Estrai audio tira fuori una traccia come MP3, WAV, AAC o Opus.

Trasformare un video in una GIF

GIF è un formato di immagini fisse del 1987 con l'animazione avvitata sopra e senza una vera compensazione del movimento. Ogni fotogramma è compresso in gran parte per conto suo, quindi cinque secondi possono arrivare a diversi megabyte laddove la stessa clip come MP4 muto sta in un paio di centinaia di kilobyte. È limitata a 256 colori per fotogramma, ha un solo bit di trasparenza e non ha audio.

Il limite sui colori è il punto in cui la qualità si vince o si perde. Una palette fissa e generica crea bande nei gradienti e costringe a un dithering pesante, e quel rumore è quasi casuale, quindi si comprime male e gonfia il file. Costruire una palette a partire dalla clip stessa e poi mappare i fotogrammi su di essa dà un'immagine migliore e spesso un file più piccolo; Da video a GIF esegue quel passaggio. Tieni le GIF brevi e strette: due o tre secondi, da 480 a 640 pixel di larghezza, da 10 a 15 fotogrammi al secondo. Se la destinazione accetta video, manda un MP4 senza audio.

Impostazioni che funzionano per il web

  • H.264 dentro un MP4 con audio AAC per tutto ciò che deve semplicemente riprodursi.
  • CRF intorno a 23, fino a 20 per le registrazioni dello schermo con testo minuto, fino a 26 per le riprese di sfondo.
  • Ridimensiona alla larghezza con cui verrà mostrato, prima di comprimere e non dopo.
  • Attiva faststart, così l'indice sta all'inizio e la riproduzione comincia prima che il download sia finito.

Tutto questo gira nel browser sulla tua macchina, quindi non viene caricato nulla e il limite è la memoria, non una quota del server. I buffer di decodifica di un lungo file 4K possono esaurire una scheda, quindi taglia prima e ridimensiona dopo.