# FFmpeg

FFmpeg è un progetto software libero e open source costituito da una suite di programmi e librerie per una completa gestione di files audio, video ed altri tipi di streams multimediali; ffmpeg è anche il nome della principale applicazione, utilizzabile a riga di comando, progettata per l'elaborazione di files audio e video, ampiamente usata per compiti quali conversione tra formati, operazioni di editing di base (trimming, concatenazione, scaling), effetti di post-produzione, aderenza agli standards (SMPTE, ITU).
Il progetto include anche i tool ffplay, un semplice media player, e ffprobe, per visualizzare informazioni relative ad un file multimediale. Tra le principali librerie che fanno parte del progetto troviamo libavcodec, contenente diversi codec audio/video ed utilizzata da molti prodotti software free e commerciali, libavformat (Lavf), per la gestione di file container multimediali e relativi mux e demux, libavfilter, una collezione di filtri per manipolazione e correzione audio/video, modulari e configurabili in pipelines per produrre operazioni complesse.
FFmpeg è incluso ed integrato in molti altri progetti software, e le sue librerie sono usate in media players come VLC ed in piattaforme come YouTube e Bilibili. Encoders e decoders per molti formati audio e video fanno parte del progetto, rendendolo molto utile per la transcodifica di media in formati comuni e meno comuni.
FFmpeg è disponibile sotto licenza LGPL-2.1-or-later oppure GPL-2.0-or-later, a seconda di quali opzioni sono abilitate.
FFmpeg è sviluppato su Linux e può essere compilato ed eseguito su qualunque dei principali sistemi operativi, incluso Microsoft Windows.

## Storia

Il progetto è stato iniziato da Fabrice Bellard nel 2000, ed è stato poi guidato da Michael Niedermayer dal 2004 al 2015.
Il 13 marzo 2011, un gruppo di sviluppatori decise di distaccarsi dal progetto FFmpeg e crearne un fork di nome Libav. Ciò fu causato da disaccordi col project management.
Il 10 gennaio 2014, due sviluppatori di Google annunciarono che più di 1000 bugs di FFmpeg furono corretti grazie a due anni di fuzz testing.
Nel gennaio 2018, il programma ffserver - facente per lungo tempo parte del progetto - fu rimosso. Già in precedenza il programma fu deprecato perché di difficile manutenzione.
In media, una nuova release del progetto viene resa disponibile ogni tre mesi. Le release sono disponibili sul sito ufficiale per il download; tuttavia gli sviluppatori di FFmpeg raccomandano di crearsi una propria versione compilando il codice sorgente più recente, scaricato dal repository Git.

## Componenti

* ffmpeg è uno strumento da riga di comando per convertire un file video o audio da un formato a un altro. Inoltre supporta la cattura e la codifica in tempo reale dalla scheda TV.
* ffserver è uno streaming server multimediale HTTP per riproduzioni live in broadcast. Il time shifting di stream live in broadcast è supportato.
* ffplay è un semplice media player basato su SDL e sulle librerie FFmpeg
* libavcodec è una libreria contenente tutti gli encoder/decoder di FFmpeg. Molti codec sono stati sviluppati da zero per garantire le migliori prestazioni e la massima riusabilità del codice.
* libavformat è una libreria contenente parser e generatori condivisi per tutti i formati audio/video.

## Licenza

LGPL conterrà solo componenti con licenza LGPL o una licenza come BSD in particolare x264 è GPL e quindi rende l'intera build GPL.
"Condiviso" significa che è un gruppo di librerie separate che alimentano un ffmpeg relativamente piccolo.
Non condiviso è statico, il che significa che hai un grande ffmpeg con tutte le librerie integrate: nessuna differenza di funzionalità ma statico è più facile da spostare, quindi l'opzione migliore è la GPL non condivisa. potresti notare che statico è enorme perché stai ricevendo ffmpeg, ffprobe e ffplay con le proprie librerie ciascuno, mentre "condiviso" li fa usare le stesse librerie FFmpeg, ffprobe e ffplay possono essere spostati in directory diverse e continueranno a funzionare in una build condivisa non possono essere separati.