FFmpeg è una potente suite open source progettata per manipolare, convertire e trasmettere file multimediali. Include una vasta gamma di programmi e librerie che forniscono strumenti essenziali per gestire video e audio in vari formati. Di base FFmpeg funziona da riga di comando ma, proprio grazie alla sua struttura, può essere integrato nelle applicazioni che si sviluppano. Trova in Linux il suo ambiente di funzionamento naturale ma può essere utilizzato anche da Windows, anche dalla finestra di WSL (Windows Subsystem for Linux), componente di sistema di Windows 10 e 11 che permette di portare Linux su Windows.
Con FFmpeg è possibile eseguire conversioni di formato, estrarre l’audio da un contenuto multimediale, tagliare, unire video e applicare filtri ed effetti. L’applicazione può essere utilizzata anche per predisporre lo streaming in tempo reale di contenuti audio-video su Internet.
Non per niente molte applicazioni e progetti open source integrano a loro volta FFmpeg per sfruttarne le sue potenti funzionalità multimediali.
Come usare FFmpeg da una finestra del terminale Linux
Qualora doveste eseguire delle operazioni di base su contenuti audio-video, sappiate che è possibile effettuarle dalla finestra del terminale Linux oppure da WSL. Provate ad esempio a prendere qualche video royalty-free da Pixabay e mettere alla prova FFmpeg.
Innanzi tutto, per installare FFmpeg su Ubuntu e sulle distribuzioni derivate da Debian, basta digitare quanto segue:
sudo apt install ffmpeg -y
Digitando quindi ffmpeg -version
si ha la conferma che FFmpeg risulta installato ed è possibile controllarne il numero di versione.
Conversione video, estrazione audio e generazione di file GIF con FFmpeg
A titolo meramente esemplificativo, basta impartire il comando seguente per richiedere una conversione di formato (in questo caso da MP4 ad AVI):
ffmpeg -i input.mp4 output.avi
Al posto di input.mp4
, va ovviamente indicato il nome del video da elaborare, memorizzato nella cartella in cui ci si trova.
Con il comando seguente, invece, diventa semplice estrarre la traccia audio da qualunque video:
ffmpeg -i input.mp4 -vn -acodec copy output.mp3
Ancora, questo comando consente di creare una GIF a partire dal contenuto del video specificato:
ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1:flags=lanczos" -c:v gif output.gif
Creare un video specificando il bitrate
Il bitrate è un concetto importante nel segmento multimediale, nelle telecomunicazioni e in generale in informatica. Esso rappresenta la quantità di dati trasmessa o elaborata in un certo periodo di tempo ed è espressa in bit al secondo (bps). Il comando seguente effettua la conversione di un file video dal formato MP4 al formato AVI, specificando un bitrate video di 1.000 kbps Nell’esempio, 1000k è un bitrate relativamente basso e può comportare una qualità video ridotta rispetto a bitrate più elevati:
ffmpeg -i input.mp4 -b:v 1000k output.avi
Come unire due video con FFmpeg
Per combinare due video con FFmpeg basta digitare il comando seguente, avendo cura di indicare il nome del file che si desidera ottenere:
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v] [0:a] [1:v] [1:a] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" output.mp4
Per unire due video che non contengono alcuna traccia audio, è sufficiente semplificare il comando così come segue:
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v] [1:v] concat=n=2:v=1:a=0 [v]" -map "[v]" output.mp4
Estrarre un singolo frame da un video
Nel comando che segue, chiediamo a FFmpeg di estrarre un singolo frame da un video in formato MP4 e salvare l’immagine così acquisita sotto forma di file PNG. Come si può notare, è sufficiente specificare il tempo esatto corrispondente al momento in cui, nel video sottoposto ad elaborazione, appare l’immagine che si desidera estrarre.
ffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 output.png
Tagliare una parte di un video
E se si volesse estrarre una parte di un video, ad esempio tutti i frame compresi tra 10 e 30 secondi? In questo caso, basta usare il comando seguente ricordandosi di specificare il tempo di inizio e fine del taglio oltre al nome del file che si desidera ottenere:
ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:30 -c copy output.mp4
Passare da un codec a un altro
Inutile dire che, grazie alle molteplici librerie dedicate che l’applicazione supporta, con FFmpeg è possibile trasformare un video ottenendo un altro file multimediale basato su un codec diverso rispetto all’originale. Nei file multimediali, la differenza tra contenitori e codec è essenziale per comprendere come vengono archiviati e riprodotti i dati audio e video.
Il contenitore è il file che può contenere diversi tipi di dati multimediali, come video, audio, sottotitoli, metadati e così via. Esso organizza e sincronizza i flussi di dati audio e video, gestisce i metadati e può contenere molteplici flussi di dati (tracce audio, sottotitoli,…). Alcuni esempi di contenitori sono MP4, MKV, AVI, MOV, WebM.
Un codec è un algoritmo o una tecnologia utilizzata per la compressione e decompressione dei dati audio-video. Esistono codec per l’audio (ad esempio MP3 e AAC) e il video (H.264, H.265/HEVC, VP9,…).
Per passare da un codec audio-video a un altro, si può usare il comando che segue:
ffmpeg -i input.mp4 -c:v nuovo_codec_video -c:a nuovo_codec_audio output.mp4
Al posto di nuovo_codec_video
si può ad esempio indicare libx264
per H.264 o libx265
per H.265/HEVC. La stringa nuovo_codec_audio
è invece sostituibile, per esempio, con aac
, mp3
, opus
e via dicendo.
Come provare le potenzialità di FFmpeg online
Finora ci siamo limitati soltanto a grattare la superficie. Le potenzialità di FFmpeg sono praticamente infinite ed è possibile combinare più comandi per ottenere elaborazioni audio-video professionali con il minimo sforzo, senza neppure installare applicazioni di terze parti.
ffmpeg.wasm è una versione di FFmpeg compilata in WebAssembly (Wasm). WebAssembly è uno standard Web che consente l’esecuzione di codice binario ad alte prestazioni sui normali browser. Consente agli sviluppatori di eseguire applicazioni complesse, in questo caso attivare manipolazioni multimediali direttamente nel browser senza necessitare di plugin aggiuntivi o di applicazione dedicate.
Provate a visitare il sito ffmpeg.app: si tratta di un'”interfaccia” che si appoggia al progetto WASM e che permette di eseguire una vasta schiera di operazioni con FFmpeg senza neppure aver installato l’applicazione sul proprio dispositivo.
Provate a digitare qualcosa nella casella di ricerca What do you want to do with FFmpeg today? Scoprirete una miniera inesauribile di suggerimenti pratici per utilizzare FFmpeg. Ad esempio, selezionando lo strumento che permette di ricodificare il video con il codec H.264, è possibile cliccare sugli appositi riquadri per fornire all’applicazione il video da elaborare e le preferenze da applicare.
ffmpeg.app aiuta anche a scoprire anche la sintassi di FFmpeg, da riutilizzare qualora si volesse usare lo stesso comando dalla finestra del terminale Linux, da WSL, in Windows o in macOS.
FFmpeg online: utile una volta che si conoscono i parametri dell’applicazione
Un altro servizio online particolarmente utile è FFmpeg online: in questo caso l’applicazione Web riceve in ingresso il video da elaborare e poi, poco più sotto, è l’utente che viene chiamato a specificare i parametri da passare all’utilità open source. Come si vede nell’immagine riprodotta di seguito, è possibile specificare le opzioni da usare sia in input che in output.
Nel caso in cui si richiedessero scenari che presuppongono l’elaborazione o la successiva generazione di più file, il campo Get other file from file system consente di specificare ulteriori preferenze.
I due servizi si completano insomma a vicenda aiutando a scoprire i segreti di FFmpeg e permettendo il raggiungimento di risultati che, di norma, si otterrebbero soltanto installando l’utilità in locale.