FFmpeg è un potente framework open source progettato per la gestione, l’elaborazione e la conversione di contenuti multimediali in diversi formati. Si tratta di una suite di strumenti che include una raccolta di codec (codificatori e decodificatori) e utilità per la manipolazione di audio e video. In un altro articolo abbiamo visto cos’è FFmpeg e come usarlo offline e online; ci siamo inoltre concentrati sui molteplici filtri disponibili e come provarli dall’interfaccia del browser Web.
Il 30 settembre 2024, la comunità di sviluppo di FFmpeg ha rilasciato la versione 7.1, denominata “Péter”, portando con sé un’importante serie di novità che consolidano ulteriormente il suo ruolo di framework multimediale open source leader nel settore.
FFmpeg 7.1: le novità di peso
Il riferimento alla numerazione 7.1 potrebbe far pensare a una release intermedia: non si tratta di una major release. Eppure, FFmpeg 7.1 si presenta come un rilascio di grande impatto, specialmente sul fronte dei codec e delle ottimizzazioni per l’hardware.
La nuova versione rappresenta un aggiornamento cruciale per tutti gli utenti che utilizzano FFmpeg per la codifica e la decodifica di contenuti multimediali in vari formati e piattaforme. Infatti, è innanzi tutto una release LTS (Long Term Support), che quindi godrà di aggiornamenti e correzioni per un lungo periodo di tempo.
Decoder VVC: da sperimentale a componente affidabile
Uno degli elementi più interessanti di FFmpeg 7.1 è la presenza del decoder VVC (Versatile Video Coding). Precedentemente introdotto come componente software sperimentale, il decoder VVC è stato ulteriormente sviluppato e ottimizzato, rendendo ora possibile la decodifica di flussi DVB. Questa tecnologia rappresenta una delle evoluzioni più rilevanti nel panorama dei codec, promettendo un’elevata efficienza in termini di compressione video.
Invece di utilizzare soluzioni esterne come vvcdec, FFmpeg ha deciso di sviluppare il proprio decoder VVC nativo al fine di garantire una maggiore flessibilità e controllo sul codice. Questo approccio consente anche di condividere porzioni di codice con altri decoder, come quelli per HEVC e H.264. Il risultato è un comportamento del framework nettamente migliore, soprattutto su piattaforme ARM e x86.
VVC è anche noto come H.266 ed è lo standard successore di HEVC (High Efficiency Video Coding, noto come H.265). Sviluppato con l’obiettivo di affrontare la crescente domanda di contenuti video ad alta risoluzione (4K, 8K, HDR) e streaming su reti con larghezza di banda limitata, VVC nasce per fornire un’efficienza di compressione significativamente superiore rispetto ai suoi predecessori, riducendo la dimensione dei file video fino al 50% rispetto all’HEVC e mantenendo una qualità visiva equivalente.
Un altro traguardo significativo è l’introduzione in FFmpeg dell’encoder VVC attraverso una libreria esterna, offrendo la possibilità di codificare i contenuti in modo diretto.
Nuovi codec MPEG: MV-HEVC e LC-EVC
Sul fronte dei codec MPEG, FFmpeg 7.1 introduce due nuovi elementi di grande rilevanza: MV-HEVC e LC-EVC.
MV-HEVC (Multi-View High-Efficiency Video Coding) è una variante tridimensionale dell’HEVC, impiegata in dispositivi di ultima generazione come gli iPhone e il visore Apple Vision Pro. Sebbene non si tratti di un codec completamente nuovo, l’integrazione di MV-HEVC ha richiesto una revisione importante del decoder HEVC, risolvendo allo stesso tempo alcuni bug che affliggevano il codec da tempo. Ora, FFmpeg supporta anche la codifica in MV-HEVC tramite l’encoder x265.
LC-EVC (Low Complexity Enhancement Video Coding), noto anche come MPEG-5 Part 2, è un codec “a strati” che aggiunge livelli aggiuntivi ai codec principali come H.264, HEVC e AV1. Questo approccio consente di migliorare le prestazioni dei codec di base senza doverli sostituire completamente. La complessità dell’integrazione di LC-EVC è derivata dalla necessità di introdurre concetti nuovi, come gli Stream Groups, che gestiscono i diversi livelli di codifica.
xHE-AAC e IAMF: innovazioni sul fronte audio
A valle di una serie di interventi piuttosto impegnativi, il decoder AAC appare profondamente rivisitato per supportare nuove funzionalità, come USAC (Unified Speech and Audio Coding), un codec avanzato per una maggiore efficienza nella compressione audio. Inoltre, è stato aggiunto un decoder nativo per xHE-AAC, che migliora la qualità audio a bassi bitrate, particolarmente utile per lo streaming su reti con larghezza di banda limitata.
Infine, sono stati corretti alcuni problemi con il decoder/demuxer AOM IAMF, introdotto in FFmpeg 7.0, garantendo una riproduzione audio più affidabile. Questi miglioramenti rendono FFmpeg 7.1 una piattaforma più versatile e potente per la gestione dei contenuti audio
Codifica hardware con Vulkan
Un’altra novità di grande rilevanza è l’introduzione del supporto per la codifica hardware tramite Vulkan, un’API (Application Programming Interface) standard per la gestione di grafica ed elaborazioni in parallelo. La sua integrazione in FFmpeg apre a nuove possibilità per l’encoding in H.264 e HEVC, con lo sguardo puntato verso il futuro supporto del codec AV1.
La nuova funzionalità va a completare il supporto per la decodifica hardware Vulkan, già introdotta con il rilascio della versione 6.1. L’adozione di Vulkan rappresenta un passo verso la standardizzazione delle API per l’accelerazione hardware, che dovrebbe semplificare la gestione dei codec in ambienti con diverse piattaforme e dispositivi.