Questa è una vecchia versione del documento!
Autore: Fabio Di Matteo
Ultima revisione: 04/10/2023 - 09:27
«FFmpeg è una suite software completa per registrare, convertire e riprodurre audio e video. Si basa su libavcodec, libreria per la codifica audio/video. FFmpeg è sviluppato su Linux, ma può essere compilato ed eseguito su qualunque dei principali sistemi operativi, incluso Microsoft Windows. »
Da Wikipedia, l'enciclopedia libera.
Tutti i comandi contenuti in questa pagina possono,naturalmente, essere combinati tra di loro per ottenere il risultato desiderato.
Il seguente comando fornisce un elenco di formati disponibili per codifica(E) e decodifica(D):
ffmpeg -formats
Il seguente comando fornisce un elenco dei codecs disponibili per codifica(E) e decodifica(D):
ffmpeg -codecs
in cima all'output del comando c'è anche una legenda esplicativa.
E' possibile ricavare informazioni su un file semplicemente con il seguente comando:
ffmpeg -i input.mp4
Di seguito alcuni esempi di codifiche di filmati con tanto di traccia audio.
In questo esempio andremo a creare un file matroska con un bitrate video di 1920k (-b:v 1920k)
, un bitrate audio di 96k (-b:a 96k)
specificando come codificatore video libtheora
, dodificatore audio libvorbis
e formato contenitore matroska (estenzione .mkv) (-f matroska
).
ffmpeg -i input.avi -b:v 1920k -b:a 96k -vcodec libtheora -acodec libvorbis -f matroska output.mkv
ffmpeg -i input.avi -c:v libx264 -b:v 1920k -codec:a ac3 -b:a 256k -map 0:v -map 0:a output.mkv
Qui invece andremo a creare un file avi con un bitrate video di 1920k (-b:v 1920k)
, un bitrate audio di 256k (-b:a 256k)
specificando come codificatore video mpeg4
, dodificatore audio libmp3lame
e formato contenitore avi (estenzione .avi , -f avi) .
ffmpeg -i input.mkv -c:v mpeg4 -b:v 1920k -vtag xvid -codec:a libmp3lame -b:a 256k -f avi -map 0:v -map 0:a output.avi
Con -map 0:v -map 0:a
indichiamo che vogliamo rippare tuitte le tracce video e tutte quelle audio.
Dividiamo un file video(o audio) in base al tempo lasciando inalterata la codifica. Ecco la sintassi:
ffmpeg -i inputfile.mkv -ss ORE:MINUTI:SECONDI -t ORE:MINUTI:SECONDI -acodec copy -vcodec copy outputfile.mkv
-acodec copy -vcodec copy
indicano che non deve essere eseguita alcuna codifica al file.
In questo caso metteremo il percorso dei file da concatenare in un file di testo e poi useremo il filtro concat di ffmpeg per concatenare i file lasciando inalterata la codifica.
lista.txt
file 'video0.mkv' file 'video1.mkv' file 'video2.mkv'
e poi impartiremo il seguente comando:
ffmpeg -f concat -i lista.txt -c copy
-c copy
indica che non deve essere eseguita alcuna ulteriore codifica al file.
In questo esempio estraiamo solo l'audio (-vn
) del file input.mp4
con un bitrate di 128kb/s (-ab 128k
) che verra salvato su un file mp3 (outputfile.mp3
).
ffmpeg -i input.mp4 -vn -ab 128k outputfile.mp3
Possiamo estrarre solo la traccia video da un file multimediale grazie al parametro (-an
):
ffmpeg -i inputfile.avi -an outputfile.avi
Con il comando sottostante andremo a ridimenzionare i fotogrammi del video a 640×480 :
ffmpeg -i input.mp4 -s 640x480 output.mp4
Per ritagliare porzioni di video possiamo usare il filtro crop
specificando larghezza, altezza e coordinate di origine della selezione rettangolare da ritagliare:
ffmpeg -i input.mp4 -filter:v "crop=320:240:0:0" -acodec copy out.mp4
dall'esempio si evince che sto facendo un ritaglio con una selezione rettangolare da 320×240 pixel partendo dalle coordinate 0,0 . Inoltre in questo caso ho deciso di non codificare l'audio ulteriormente. Di default il codec video utilizzato è h264.
#!/bin/bash FILE="$1" OUT="${FILE%%.*}".mp4 ffmpeg -i $1 -s 640x480 -aspect 16:9 -vcodec libx264 -acodec aac /home/$USER/Desktop/$OUT echo echo "Video sul desktop."
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a copy output.mkv
#!/bin/env bash data=$(date '+%Y-%m-%d_%H-%M-%S') audio=" -f pulse -i alsa_input.pci-0000_00_1b.0.analog-stereo -ac 2 " ffmpeg $audio -f x11grab -show_region 1 -framerate 25 -video_size 1366x768\ -i :0.0 capture_$data.mkv
Se non vogliamo impostare la cattura dell'audio eliminiamo la variabile $audio.
Per determinare quale periferica di input dobbiamo usare possiamo utilizzare il comando :
pactl list short sources
in questo caso abbiamo usato “alsa_input.pci-0000_00_1b.0.analog-stereo” .
Il nostro wiki installa solamente cookie tecnici necessari al funzionamento della piattaforma "Dokuwiki". Niente analitics, statistiche, tracciamenti o altro.