Quando si esporta un video o si avvia una diretta, la compressione può essere svolta in due modi molto diversi: da un programma che gira sul processore, l'encoder software, oppure da un circuito dedicato presente nella scheda grafica o nel processore stesso, l'encoder hardware. La scelta incide su tempi di esportazione, qualità a parità di bitrate, consumo di energia e capacità del computer di fare altro nel frattempo. Non esiste una risposta valida per tutti, ma esistono criteri chiari.
Come funzionano
Encoder software
Un encoder software, come x264 per H.264, x265 per HEVC o SVT-AV1 per AV1, è un normale programma che usa i core del processore. Può esplorare molte possibilità di compressione per ogni blocco dell'immagine e, se gli si concede tempo, trovare soluzioni molto efficienti. Il livello di accuratezza si regola con i preset: più lenti significano file più piccoli o di qualità migliore.
Encoder hardware
Un encoder hardware è un blocco di silicio progettato solo per comprimere video. I principali sono:
- NVENC nelle schede grafiche NVIDIA;
- Quick Sync Video nella grafica integrata dei processori Intel e nelle schede Intel Arc;
- AMF/VCN nelle schede e nei processori AMD;
- VideoToolbox sui Mac, che dà accesso agli encoder dei chip Apple.
Questi circuiti lavorano in parallelo al resto del sistema: possono codificare in tempo reale anche ad alta risoluzione lasciando quasi liberi processore e scheda grafica.
Il confronto
| Aspetto | Software | Hardware |
|---|---|---|
| Velocità | dipende dal preset, spesso lenta | molto alta |
| Qualità a parità di bitrate | la migliore con preset lenti | buona, inferiore ai preset lenti |
| Carico sul processore | alto | minimo |
| Consumi | alti | bassi |
| Flessibilità delle opzioni | molto ampia | limitata |
| Codec disponibili | tutti quelli implementati | solo quelli supportati dal chip |
Quando la qualità fa la differenza
A bitrate elevati la differenza tra software e hardware tende a sparire: entrambi conservano bene i dettagli. Diventa visibile a bitrate bassi, cioè proprio nei casi in cui si vuole risparmiare spazio o banda. Qui un encoder software con un preset lento distribuisce meglio i bit, riducendo blocchi e sbavature su scene complesse.
Per questo i servizi di streaming che codificano un contenuto una sola volta per milioni di visualizzazioni usano spesso encoder software molto lenti: il tempo speso si ripaga in banda risparmiata.
Quando conviene l'hardware
- Dirette con giochi o applicazioni pesanti: il processore resta libero per il gioco, e la diretta non compromette le prestazioni.
- Videochiamate e registrazioni dello schermo: serve la codifica in tempo reale con poco consumo.
- Portatili a batteria: l'encoder hardware consuma una frazione dell'energia.
- Anteprime e bozze: per inviare una versione di prova al cliente la velocità conta più dell'ultimo dettaglio.
- Transcodifica in tempo reale su media server domestici: un piccolo computer con Quick Sync può convertire più flussi contemporaneamente.
Quando conviene il software
- Esportazione finale di un progetto destinato a restare online a lungo.
- Archiviazione con l'obiettivo di occupare il minimo spazio a parità di qualità.
- Bitrate bassi imposti da limiti di banda o di dimensione.
- Codec o opzioni non supportati dall'hardware disponibile, per esempio AV1 su schede grafiche di generazioni precedenti.
Le generazioni contano
Gli encoder hardware sono legati al chip: non migliorano con gli aggiornamenti software se non marginalmente. Una scheda grafica di qualche generazione fa può codificare H.264 e HEVC ma non AV1, e con una qualità inferiore rispetto a quelle recenti. Prima di basare un flusso di lavoro sull'hardware, conviene verificare quali codec, profili e profondità di bit supporta il proprio modello.
Usarli con FFmpeg
FFmpeg permette di scegliere l'encoder esplicitamente. Alcuni esempi:
# software
ffmpeg -i in.mov -c:v libx264 -preset slow -crf 20 out.mp4
# NVIDIA
ffmpeg -i in.mov -c:v h264_nvenc -preset p5 -cq 23 out.mp4
# Intel Quick Sync
ffmpeg -i in.mov -c:v h264_qsv -global_quality 23 out.mp4
Le scale di qualità non sono equivalenti tra encoder diversi: un valore 23 in NVENC non corrisponde a CRF 23 in x264. Va fatta una prova comparativa sullo stesso estratto.
Anche la decodifica conta
In una transcodifica il file va prima decodificato. Usare la decodifica hardware oltre alla codifica, mantenendo i fotogrammi nella memoria della scheda grafica, evita copie inutili e accelera molto il processo. Al contrario, applicare filtri software tra decodifica e codifica obbliga a riportare i dati al processore e riduce il vantaggio.
Una strategia mista
Nel mio lavoro la soluzione più pratica è spesso ibrida: encoder hardware per registrazioni, proxy, bozze e dirette; encoder software con preset lento per il master di distribuzione. Così si ottiene velocità quando serve e qualità quando conta.
In sintesi
- Gli encoder software sono più lenti ma offrono la qualità migliore a bitrate bassi.
- Gli encoder hardware sono velocissimi, consumano poco e lasciano libero il processore.
- A bitrate alti la differenza di qualità si riduce molto.
- I codec supportati in hardware dipendono dalla generazione del chip.
- Una strategia mista unisce velocità per il lavoro quotidiano e qualità per il risultato finale.