Codifica Two-Pass in FFmpeg
Scegli la dimensione target, convertila in bitrate, poi esegui due passaggi. Esempio: un video di 10 minuti che deve stare in 100 MB: 100 × 8.000 ÷ 600 s ≈ 1.333 kbps in totale; tolti 128 kbps di audio restano circa 1.200 kbps per il video.
ffmpeg -y -i input.mkv -c:v libx264 -preset medium -b:v 1200k -pass 1 -an -f null /dev/null— passaggio 1 (solo analisi). Su Windows, scriviNULal posto di/dev/null.ffmpeg -i input.mkv -c:v libx264 -preset medium -b:v 1200k -pass 2 -c:a aac -b:a 128k output.mp4— passaggio 2 (la codifica vera e propria).
Entrambi i passaggi devono usare le stesse impostazioni video. FFmpeg scrive l'analisi in ffmpeg2pass-0.log nella cartella corrente; il passaggio 2 la legge e al termine puoi eliminarla.
La Differenza Fondamentale
CRF e la codifica two-pass risolvono lo stesso problema — bilanciare qualità e dimensione del file — ma da direzioni opposte:
- CRF (Constant Rate Factor): "Voglio questo livello di qualità. Dammi qualsiasi dimensione del file necessaria per ottenerla." Tu controlli la qualità; la dimensione del file è la variabile.
- Two-pass: "Voglio questa dimensione del file (bitrate target). Dammi la migliore qualità che ci stia." Tu controlli la dimensione del file; la qualità è la variabile.
| Caratteristica | CRF | Two-Pass |
|---|---|---|
| Controlli | Livello di qualità (numero CRF) | Bitrate target / dimensione file |
| Variabile | Dimensione del file | Qualità |
| Passaggi | 1 (passaggio singolo) | 2 (analisi + codifica) |
| Velocità | 1x (riferimento) | ~2x più lento |
| Previsione dimensione file | Non prevedibile | Prevedibile |
| Consistenza qualità | Qualità costante per frame | Distribuzione bit ottimale |
Come Funziona CRF
La codifica CRF è un processo a passaggio singolo. Il codificatore elabora ogni frame e si chiede: "Quanti bit mi servono per raggiungere questo livello di qualità per questo frame specifico?"
- I frame ad alta complessità (esplosioni, movimenti veloci) ricevono più bit
- I frame a bassa complessità (riprese statiche, title card) ricevono meno bit
- La qualità rimane costante; il bitrate varia
Il risultato è un file a bitrate variabile (VBR) dove ogni frame riceve esattamente i bit di cui ha bisogno — nessuno spreco su scene semplici, nessuna carenza su quelle complesse. Per questo CRF produce il rapporto qualità/dimensione ottimale per la codifica offline.
Come Funziona Two-Pass
La codifica two-pass elabora il video due volte:
- Passaggio 1 (Analisi): Il codificatore scansiona l'intero video senza produrre output. Costruisce una mappa di complessità frame per frame — quali scene sono semplici, quali complesse, dove avvengono i cambi di scena.
- Passaggio 2 (Codifica): Usando l'analisi del passaggio 1, il codificatore distribuisce il bitrate target in modo ottimale su tutti i frame. Le scene complesse ottengono più budget di bitrate; quelle semplici meno.
Il risultato: un file che centra precisamente il bitrate target distribuendo la qualità nel modo più uniforme possibile tra tutte le scene.
Confronto Qualità
Con impostazioni ragionevoli, CRF e two-pass producono una qualità quasi identica. Le differenze sono sottili:
- Vantaggio CRF: Ogni frame riceve esattamente i bit di cui ha bisogno. Nessun frame viene mai privato di risorse. CRF può produrre una qualità media leggermente superiore perché non è vincolato da un budget di bitrate.
- Vantaggio two-pass: Migliore distribuzione dei bit per contenuti estremi (video lunghi con complessità molto variabile). Il passaggio di analisi aiuta il codificatore a prepararsi per le scene complesse imminenti.
In pratica, la differenza di qualità tra CRF e una codifica two-pass ben calibrata è trascurabile per la maggior parte dei contenuti. Servirebbe un'analisi VMAF frame per frame per rilevare le differenze.
Confronto Velocità
La differenza di velocità è semplice:
- CRF: 1x tempo di codifica (passaggio singolo sul video)
- Two-pass: ~1.7–2x tempo di codifica (il primo passaggio è veloce perché non produce output, ma richiede comunque tempo)
Per un video 1080p di 10 minuti su una CPU moderna:
- CRF medium: circa 10 minuti a una velocità di codifica di ~30 fps (18.000 frame ÷ 30 fps = 600 s)
- Two-pass medium: circa 17–20 minuti, poiché il primo passaggio è più veloce del secondo. Un preset più veloce accorcia entrambi i passaggi; la nostra guida ai preset FFmpeg: velocità vs dimensione del file mostra il compromesso.
Quando Usare CRF
CRF è la scelta migliore per quasi tutti gli scenari comuni:
- Conversione file: MKV in MP4, MOV in MP4, qualsiasi conversione di formato in cui vuoi la migliore qualità
- Archiviazione personale: Conservare la tua videoteca a qualità costante
- Upload web: YouTube, social media e la maggior parte delle piattaforme accettano file a bitrate variabile
- Condivisione: Quando la dimensione del file non deve essere esatta, CRF offre la qualità ottimale
- Elaborazione batch: Un'unica impostazione (CRF 23) funziona bene per tutti i tipi di contenuto
Per questo il nostro convertitore usa CRF — produce la migliore qualità senza richiedere agli utenti di calcolare i bitrate target.
Quando Usare Two-Pass
La codifica two-pass è la scelta migliore quando la dimensione del file deve essere prevedibile:
- Authoring DVD/Blu-ray: Il contenuto deve rientrare in una capacità disco specifica
- Streaming con banda limitata: Lo streaming a bitrate adattivo (HLS/DASH) richiede target di bitrate precisi per ogni livello di qualità
- Limiti di dimensione file: Piattaforme con limiti di upload rigidi (Discord 10 MB senza Nitro, email 25 MB) dove devi garantire che l'output rientri
- Broadcast professionale: Le pipeline di broadcast spesso richiedono CBR o target VBR precisi
Il Meglio di Entrambi: CRF con Limite
Esiste un approccio ibrido chiamato CRF con limite (qualità vincolata) che combina i vantaggi di entrambi i metodi:
ffmpeg -i input.mkv -c:v libx264 -crf 23 -maxrate 4000k -bufsize 8000k -c:a aac output.mp4
Questo dice al codificatore: "Punta alla qualità CRF 23, ma resta a circa 4 Mbps o meno (in media sul buffer da 8.000 kbit, circa 2 secondi)." In pratica:
- Scene semplici: codificate a qualità CRF 23 (ben sotto i 4 Mbps)
- Scene complesse: codificate a qualità CRF 23 a meno che non si superi il limite di 4 Mbps, nel qual caso la qualità viene leggermente ridotta per restare entro il limite
CRF con limite è ideale per le applicazioni di streaming dove serve prevedibilità della banda senza rinunciare all'approccio qualità-first di CRF.
VBR a 1 Passaggio vs 2 Passaggi in Premiere Pro, Media Encoder e HandBrake
- Premiere Pro e Adobe Media Encoder: nelle impostazioni di esportazione H.264, Codifica bitrate offre CBR, VBR 1 passaggio e VBR 2 passaggi. VBR 2 passaggi richiede più tempo e di solito distribuisce meglio i bit a parità di target.
- HandBrake: nella scheda Video, passa da Constant Quality ad Avg Bitrate, poi attiva la codifica a due passaggi (indicata come 2-Pass o Multi-Pass Encoding, a seconda della versione).
- Regola pratica: con bitrate generosi, 1 passaggio e 2 passaggi danno lo stesso risultato; il secondo passaggio ripaga quando il bitrate è stretto per il contenuto.