Cosa sono i profili H.264?
Lo standard H.264 (chiamato anche AVC o MPEG-4 Part 10) definisce un ampio set di strumenti di codifica — algoritmi per comprimere i fotogrammi video in dati più piccoli. I profili sono sottoinsiemi di questo set di strumenti. Ogni profilo attiva una specifica combinazione di funzionalità, e i profili superiori includono tutto dai profili inferiori più tecniche aggiuntive.
Pensa ai profili come livelli di difficoltà per il decodificatore. Il profilo Baseline usa solo gli strumenti più semplici, cosicché qualsiasi hardware — anche un telefono del 2008 — può decodificarlo. Il profilo High usa tutti gli strumenti disponibili, raggiungendo la migliore compressione ma richiedendo più potenza di elaborazione dal dispositivo di riproduzione.
I tre profili più comuni sono Baseline, Main e High. Ne esistono altri (Extended, High 10, High 4:2:2, High 4:4:4 Predictive), ma servono casi d'uso di nicchia come il colore a 10 bit o il sottocampionamento cromatico professionale. Per video standard a 8 bit destinato alla riproduzione consumer, Baseline, Main e High sono gli unici profili che contano.
Ogni codificatore H.264 — FFmpeg, HandBrake, Adobe Media Encoder, Apple Compressor — consente di scegliere un profilo. La scelta influisce su tre aspetti: l'efficienza di compressione (dimensione del file a una data qualità), la velocità di codifica (quanto tempo impiega la codifica) e la compatibilità del decodificatore (quali dispositivi possono riprodurre il file).
Profilo Baseline
Il profilo Baseline è il sottoinsieme più semplice e limitato di H.264. È stato progettato per dispositivi a basso consumo e applicazioni in tempo reale dove la latenza di decodifica deve essere minima.
Caratteristiche chiave del Baseline:
- Solo slice I e P — il codificatore può usare fotogrammi intracodificati (I-frame, che sono autonomi) e fotogrammi predittivi (P-frame, che fanno riferimento a un fotogramma precedente). Non ci sono B-frame.
- Codifica entropica CAVLC — il Context-Adaptive Variable-Length Coding è un codificatore entropico più semplice e veloce. Comprime i coefficienti di trasformazione quantizzati in un flusso di bit, ma è meno efficiente dell'alternativa (CABAC).
- Nessuna predizione ponderata — il codificatore non può usare riferimenti ponderati per dissolvenze in apertura, in chiusura o incrociate, con conseguenti file più grandi durante le transizioni.
- Solo trasformate 4x4 — la trasformata spaziale che converte i blocchi di pixel in coefficienti di frequenza è limitata a blocchi 4x4.
A causa della mancanza di B-frame e CABAC, il Baseline produce i file più grandi dei tre profili per qualsiasi obiettivo di qualità. Una codifica Baseline tipica è il 10–20% più grande dello stesso contenuto codificato con il profilo High allo stesso valore CRF.
Quando usare Baseline: videoconferenze in tempo reale (dove la latenza dei B-frame è inaccettabile), vecchie telecamere IP, dispositivi Android molto vecchi (prima del 2011) e sistemi embedded con potenza di elaborazione limitata. Nel 2026, questi casi d'uso sono sempre più rari.
ffmpeg -i input.mov -c:v libx264 -profile:v baseline -level 3.0 -crf 23 -c:a aac -b:a 192k -movflags +faststart output.mp4
Profilo Main
Il profilo Main aggiunge due funzionalità critiche rispetto al Baseline: i B-frame e la codifica entropica CABAC. Queste due aggiunte da sole rappresentano la maggior parte del vantaggio di compressione del Main.
I B-frame (fotogrammi predittivi bidirezionali) possono fare riferimento simultaneamente a fotogrammi passati e futuri. Questo è particolarmente efficace per scene al rallentatore, sfondi statici e qualsiasi contenuto in cui i fotogrammi futuri contengono dati di predizione utili. Una codifica tipica usa 2–3 B-frame tra ogni coppia di fotogrammi di riferimento. Il compromesso è un leggero aumento della complessità di codifica e una latenza di decodifica di alcuni fotogrammi — impercettibile per la riproduzione di file ma problematica per le videochiamate in tempo reale.
Il CABAC (Context-Adaptive Binary Arithmetic Coding) sostituisce il CAVLC come codificatore entropico. Il CABAC usa la codifica aritmetica con modelli di contesto per comprimere il flusso di bit in modo più efficiente. In pratica, il CABAC risparmia il 10–15% di bitrate rispetto al CAVLC alla stessa qualità visiva. Il costo è un maggiore utilizzo della CPU durante codifica e decodifica, ma ogni dispositivo prodotto dal 2010 circa gestisce il CABAC senza difficoltà.
Il profilo Main abilita anche la predizione ponderata per i P-frame, che migliora la compressione durante dissolvenze e transizioni di scena. La combinazione di B-frame, CABAC e predizione ponderata rende il Main circa il 10–12% più efficiente del Baseline.
Quando usare Main: televisione terrestre (DVB-T usa il profilo Main), configurazioni di streaming più vecchie e scenari in cui si desidera un compromesso tra compatibilità e compressione. Tuttavia, poiché il profilo High è supportato da praticamente tutti i dispositivi che supportano Main, nel 2026 ci sono poche ragioni pratiche per scegliere Main rispetto a High.
ffmpeg -i input.mov -c:v libx264 -profile:v main -level 4.0 -crf 23 -c:a aac -b:a 192k -movflags +faststart output.mp4
Profilo High
Il profilo High è il profilo più completo utilizzato per video standard a 8 bit. Aggiunge diversi strumenti rispetto al Main che migliorano ulteriormente l'efficienza di compressione.
Le trasformate intere 8x8 sono l'aggiunta più importante. Mentre Baseline e Main sono limitati a blocchi di trasformazione 4x4, il profilo High può usare blocchi 8x8 per aree con meno dettagli spaziali. I blocchi di trasformazione più grandi sono più efficienti per sfumature uniformi, cielo e aree a bassa texture perché catturano informazioni a bassa frequenza in meno coefficienti. Per le aree dettagliate, il codificatore ricorre alle trasformate 4x4. Questa selezione adattiva della dimensione del blocco risparmia il 5–10% di bitrate rispetto al profilo Main.
Le matrici di scalatura della quantizzazione permettono al codificatore di pesare diversi componenti di frequenza durante la quantizzazione. Ciò significa che il codificatore può preservare i dettagli nelle frequenze percettivamente importanti comprimendo più aggressivamente le frequenze meno importanti. È simile a come JPEG usa diverse tabelle di quantizzazione per luminanza e crominanza.
Il controllo separato della quantizzazione Cb e Cr consente al codificatore di trattare i due canali di crominanza in modo indipendente, fornendo un controllo più fine sulla compressione del colore.
Il profilo High è il profilo predefinito del codificatore libx264 di FFmpeg. È anche il profilo richiesto per Blu-ray Disc, il profilo raccomandato per gli upload su YouTube e Vimeo, e lo standard di tutti i principali servizi di streaming. Quando qualcuno dice «H.264» senza specificare un profilo, quasi certamente intende il profilo High.
ffmpeg -i input.mov -c:v libx264 -profile:v high -level 4.1 -crf 23 -c:a aac -b:a 192k -movflags +faststart output.mp4
FFmpeg usa il profilo High per impostazione predefinita. Se non si specifica affatto -profile:v, libx264 usa automaticamente il profilo High. Nel 2026, il profilo High è supportato da praticamente tutti i dispositivi prodotti dal 2012. Non c'è quasi mai motivo di usare Baseline o Main.
Confronto dell'efficienza di compressione
La tabella seguente confronta i tre profili alla stessa qualità visiva (CRF 23). Le dimensioni dei file sono relative al profilo High, che funge da riferimento al 100%. Percentuali più alte significano file più grandi alla stessa qualità.
| Profilo | Dimensione relativa | Funzionalità chiave | B-Frame | CABAC | Trasformata 8x8 |
|---|---|---|---|---|---|
| Baseline | ~115% | Solo slice I + P, CAVLC | No | No | No |
| Main | ~105% | + B-frame, CABAC, predizione ponderata | Sì | Sì | No |
| High | 100% (riferimento) | + Trasformate 8x8, matrici di quantizzazione | Sì | Sì | Sì |
I numeri sopra sono medie tipiche su diversi tipi di contenuto (riprese frontali, scene d'azione, registrazioni schermo). La differenza effettiva varia in base al contenuto: il materiale molto dettagliato beneficia maggiormente delle trasformate 8x8 (divario maggiore tra Main e High), mentre il contenuto d'azione veloce beneficia maggiormente dei B-frame (divario maggiore tra Baseline e Main).
Matrice di compatibilità
Nel 2026, la questione della compatibilità è in gran parte risolta. Ogni dispositivo moderno supporta il profilo High. La tabella seguente mostra esattamente quali dispositivi supportano ciascun profilo.
| Dispositivo / Piattaforma | Baseline | Main | High |
|---|---|---|---|
| iPhone 3GS+ (2009–presente) | Sì | Sì | Sì |
| Android 3.0+ (2011–presente) | Sì | Sì | Sì |
| Tutti i browser moderni (Chrome, Firefox, Safari, Edge) | Sì | Sì | Sì |
| YouTube, Vimeo, Twitch | Sì | Sì | Consigliato |
| Smart TV (2012–presente) | Sì | Sì | Sì |
| Lettori Blu-ray | Sì | Sì | Obbligatorio |
| Vecchie webcam, telecamere IP (prima del 2010) | Sì | Variabile | No |
| Cellulari base (era pre-smartphone) | Sì | No | No |
Gli unici dispositivi che non possono riprodurre il profilo High sono hardware datato precedente al 2010 — vecchie telecamere IP, cellulari base e streaming stick di prima generazione. Se il vostro pubblico target utilizza un dispositivo acquistato negli ultimi 14 anni, il profilo High è sicuro.
Quale profilo dovresti usare?
La risposta per il 2026 è semplice: usa il profilo High. È l'impostazione predefinita di FFmpeg, lo standard Blu-ray e l'impostazione raccomandata per ogni grande piattaforma di streaming. Si ottiene la migliore efficienza di compressione e i file più piccoli a qualsiasi livello di qualità.
Le uniche eccezioni sono estremamente specifiche:
- Videoconferenze in tempo reale su sistemi legacy — il Baseline elimina la latenza dei B-frame, importante per comunicazioni con tempo di andata e ritorno inferiore a 100 ms. Le implementazioni WebRTC moderne gestiscono questo a livello applicativo, ma alcuni vecchi sistemi basati su SIP richiedono il Baseline.
- Telecamere di sicurezza e dispositivi IoT — alcune telecamere IP economiche precedenti al 2010 decodificano solo il Baseline. Se si alimenta video a un tale dispositivo, non si ha scelta.
- Conformità normativa — alcuni standard di trasmissione (ad es. alcune configurazioni DVB-T) impongono il profilo Main. Verificare la propria specifica di trasmissione.
Per tutto il resto — video web, social media, condivisione file, archiviazione, presentazioni, allegati e-mail — il profilo High è la scelta corretta. Il nostro convertitore usa automaticamente il profilo High nella codifica da MOV a MP4, garantendo il miglior equilibrio tra qualità, dimensione del file e compatibilità universale.
Nota sui livelli
I profili definiscono quali strumenti di codifica sono disponibili. I livelli definiscono i limiti di tali strumenti — risoluzione massima, frame rate, bitrate e fotogrammi di riferimento. I livelli più comunemente usati sono:
| Livello | Risoluzione max. | Frame rate max. | Bitrate max. (High) |
|---|---|---|---|
| 3.0 | 720x576 | 25 fps | 12,5 Mbps |
| 3.1 | 1280x720 | 30 fps | 17,5 Mbps |
| 4.0 | 1920x1080 | 30 fps | 25 Mbps |
| 4.1 | 1920x1080 | 30 fps | 62,5 Mbps |
| 4.2 | 1920x1080 | 60 fps | 62,5 Mbps |
| 5.1 | 3840x2160 | 30 fps | 300 Mbps |
Per contenuti 1080p, il livello 4.1 è la scelta standard e ciò che la maggior parte dei codificatori seleziona automaticamente. Per contenuti 4K, è richiesto il livello 5.1. Nella maggior parte dei casi, non è necessario impostare il livello manualmente — il libx264 di FFmpeg rileva automaticamente il livello appropriato in base alla risoluzione e al frame rate del video.
Comandi FFmpeg per ogni profilo
Ecco i comandi FFmpeg completi per la codifica con ciascun profilo. Tutti e tre producono la stessa qualità visiva (CRF 23) ma differiscono nella dimensione del file a causa dell'efficienza di compressione del profilo:
# Baseline — largest file, widest legacy compatibility
ffmpeg -i input.mov -c:v libx264 -profile:v baseline -level 3.0 -crf 23 -c:a aac -b:a 192k -movflags +faststart output_baseline.mp4
# Main — ~10% smaller, adds B-frames and CABAC
ffmpeg -i input.mov -c:v libx264 -profile:v main -level 4.0 -crf 23 -c:a aac -b:a 192k -movflags +faststart output_main.mp4
# High — smallest file, best compression (FFmpeg default)
ffmpeg -i input.mov -c:v libx264 -profile:v high -level 4.1 -crf 23 -c:a aac -b:a 192k -movflags +faststart output_high.mp4
Per verificare quale profilo usa un MP4 esistente, eseguire:
ffprobe -v error -select_streams v:0 -show_entries stream=profile input.mp4
Questo mostra il nome del profilo (Baseline, Main o High) per verificare le impostazioni di codifica o controllare un file ricevuto da qualcun altro.