Comandi CRF di FFmpeg
ffmpeg -i input.mkv -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 192k output.mp4— H.264: intervallo 0–51, predefinito 23.ffmpeg -i input.mkv -c:v libx265 -crf 28 -preset medium -tag:v hvc1 -c:a aac -b:a 192k output.mp4— H.265: intervallo 0–51, predefinito 28;hvc1ne consente la riproduzione sui dispositivi Apple.ffmpeg -i input.mkv -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus -b:a 128k output.webm— VP9: intervallo 0–63;-b:v 0è necessario per una qualità costante pura.ffmpeg -i input.mkv -c:v libx264 -crf 23 -maxrate 4M -bufsize 8M -c:a aac output.mp4— CRF con tetto massimo per lo streaming o i limiti di upload.
Il metodo della guida H.264 di FFmpeg: scegli il CRF più alto che ti sembra ancora di buona qualità, poi il preset più lento che hai la pazienza di attendere, e usa entrambi per l'intero lotto.
Cos'è il CRF (Constant Rate Factor)?
CRF è il principale controllo della qualità nei moderni encoder video come x264 (H.264) e x265 (H.265). È un singolo numero che dice all'encoder: "Voglio questo livello di qualità — usa il bitrate necessario per ottenerlo."
A differenza della codifica a bitrate fisso, il CRF regola dinamicamente il bitrate per ogni fotogramma in base alla complessità della scena. Le scene d'azione ad alto movimento ricevono più bit (dati maggiori). Le scene statiche con poco movimento ricevono meno bit (dati minori). Il risultato è un rapporto qualità/dimensione ottimale senza dover regolare manualmente il bitrate.
Come funziona il CRF
L'encoder elabora ogni fotogramma e si chiede: "Quanti bit mi servono per ottenere la qualità CRF X per questo fotogramma specifico?" La risposta varia notevolmente:
- Un fotogramma di un'azione concitata con esplosioni potrebbe richiedere 500 KB
- Un fotogramma di un titolo statico potrebbe richiedere 5 KB
- Un fotogramma di persone che parlano con sfondo sfocato potrebbe richiedere 50 KB
Il CRF produce output a bitrate variabile (VBR) — il bitrate varia nel corso del video. Questo è fondamentalmente più efficiente del bitrate costante (CBR), che spreca bit nelle scene semplici e ne penalizza quelle complesse.
Scala CRF per H.264 / H.265
Per H.264 (libx264), il CRF va da 0 a 51. Valori più bassi significano qualità maggiore e file più grandi:
| Valore CRF | Livello di qualità | Uso tipico | Dimensione file (1 min 1080p) |
|---|---|---|---|
| 0 | Lossless (matematicamente perfetto) | Editing intermedio, master di archivio | ~2–5 GB |
| 18 | Visivamente trasparente | Archivio alta qualità, conservazione sorgente | ~120 MB |
| 23 | Eccellente (predefinito) | Uso generale, web, condivisione | ~60 MB |
| 28 | Buona (alcune perdite visibili) | File più piccoli, mobile, email | ~30 MB |
| 33 | Accettabile (artefatti evidenti) | Anteprime, miniature, bassa priorità | ~15 MB |
| 40+ | Scarsa (compressione elevata) | Non consigliato | <10 MB |
Per H.265 (libx265), la scala è la stessa (0–51) ma per una qualità equivalente servono valori CRF più alti. H.264 CRF 23 corrisponde approssimativamente a H.265 CRF 28.
Regola pratica: ogni 6 passi di CRF la dimensione del file raddoppia o si dimezza circa. Passare da CRF 23 a CRF 17 raddoppia circa il file, mentre passare da CRF 23 a CRF 29 lo dimezza circa.
Scala CRF per VP9
VP9 (libvpx-vp9) usa un intervallo CRF diverso: da 0 a 63. Il principio è lo stesso (più basso = migliore), ma i numeri non sono direttamente comparabili con H.264:
- CRF 15–20: Alta qualità, file grandi
- CRF 30: Buona qualità, nostro valore predefinito (grossomodo equivalente a H.264 CRF 23)
- CRF 35–45: File più piccoli, alcune perdite di qualità
VP9 a CRF 30 produce tipicamente file dal 30–50% più piccoli rispetto a H.264 a CRF 23 con qualità visiva equivalente. Questo dipende dalla maggiore efficienza del codec VP9, non dal valore CRF.
CRF vs CBR vs VBR
Tre approcci principali per controllare il bitrate video:
| Metodo | Come funziona | Ideale per | Svantaggio |
|---|---|---|---|
| CRF | Qualità costante, bitrate variabile | Conversione file, archivio, uso generale | Dimensione file imprevedibile |
| CBR | Bitrate costante, qualità variabile | Streaming live, banda strettamente limitata | Spreca bit nelle scene semplici |
| VBR | Bitrate target, variabile intorno ad esso | Codifica 2-pass, dimensione prevedibile | Richiede stima del bitrate target |
Per la conversione di file (MKV in MP4, MOV in MP4, ecc.), CRF è sempre la scelta migliore. Produce il rapporto qualità/dimensione ottimale senza dover indovinare un bitrate target. Quando invece un file deve raggiungere una dimensione esatta, leggi il nostro confronto tra codifica a due passaggi e CRF.
Esempi pratici di dimensioni file
Lo stesso video 1080p di 1 minuto con diversi valori CRF (H.264, preset medium):
- CRF 18: ~120 MB — visivamente perfetto, 2x la dimensione predefinita
- CRF 20: ~85 MB — qualità eccellente, leggermente sopra il predefinito
- CRF 23: ~60 MB — nostro predefinito, perdita di qualità impercettibile
- CRF 26: ~40 MB — ancora molto buono, visibile solo in scene impegnative
- CRF 28: ~30 MB — buona qualità, perdita visibile nei gradienti e nei dettagli fini
- CRF 33: ~15 MB — accettabile, artefatti visibili nel movimento
Questi valori variano significativamente in base alla complessità del contenuto. I film d'azione producono file più grandi rispetto ai screencast a qualsiasi livello CRF.
Impostazioni del nostro convertitore
Il nostro convertitore usa queste impostazioni di qualità:
- Output MP4: H.264, CRF 23, preset medium, audio AAC 192k
- Output WebM: VP9, CRF 30, cpu-used 3, audio Opus 128k
CRF 23 è stato scelto perché offre il bilanciamento ottimale: una piccola perdita difficile da notare nella maggior parte dei contenuti, con dimensioni file ragionevoli adatte alla condivisione, al caricamento e allo streaming.
Sotto CRF 18: Stai memorizzando bit che nessun occhio umano riesce a percepire. La dimensione del file cresce esponenzialmente mentre la qualità visiva si appiattisce. CRF 0 (lossless) è da 10–50x più grande di CRF 23 — riservato ai master per editing professionale, mai per la distribuzione.
Cosa fa il CRF a un video già compresso
Il CRF misura la qualità rispetto all'input che gli fornisci, non rispetto al girato originale della videocamera. Ricodificare a CRF 18 un file sfocato e pieno di blocchi conserva fedelmente quei blocchi e può persino produrre un file più grande della sorgente. Un CRF più basso non può recuperare i dettagli eliminati dalla compressione precedente.
- Scegli il CRF che ti serve, non uno più basso “per sicurezza”.
- Se il video va bene ed è sbagliato solo il contenitore, esegui un remux con
-c copyinvece di ricodificare. - Ogni ri-codifica aggiunge una piccola perdita, quindi parti sempre dalla copia migliore che hai.