Come unire più video in modo facile e veloce con FFMPEG

Come unire più video in modo facile e veloce con FFMPEG

Pubblicato il: 03/11/2024
Aggiornato il: 03/11/2024
Categorie
Tag

Unire tracce video multiple facilmente e velocemente grazie a ffmpeg

Oggi volevo unire due tracce video per i miei gameplay di Tomb Raider 1 Remastered. Avevo questi due video separati perché avevo registrato due parti per lo stesso livello, dato che non avevo avuto l'opportunità di completarlo in una sola sessione.

Mi sono imbattuto in questa necessità diverse volte, ma non avevo mai indagato in modo più approfondito.

Dopo una rapida ricerca, ho scoperto la soluzione del secolo: questa operazione può essere eseguita in modo incredibilmente veloce e semplice con ffmpeg concatenate.

Importante: questo metodo consente di unire un video dopo l'altro, senza modificarlo. Se hai bisogno di aggiungere transizioni o fare altre cose, sono necessari software di video editing come Openshot, Premiere, Vegas o simili.

Tabella dei contenuti

Unire video con gli stessi identici codec

Nella maggior parte dei casi i video saranno registrati nello stesso modo e dovremo solo inserire una traccia dopo l'altra.

Per farlo, possiamo seguire questi passi:

  1. Creiamo una cartella sul tuo PC con tutte le tracce che vogliamo unire
  2. Rinominiamo le tracce in qualcosa di più semplice, come "part1.mp4", "part2.mp4" e così via
  3. Creiamo un file di testo all'interno di quella cartella e chiamiamolo "list.txt" o qualcosa di simile
  4. All'interno del file di testo, scriviamo il percorso di ogni file su righe separate come nel codice di esempio qui sotto
  5. Eseguiamo il comando ffmpeg nel nostro terminale per unire i video, come nel codice qui sotto
# list.txt
# Vedi: https://trac.ffmpeg.org/wiki/Concatenate#samecodec
file 'part1.mkv'
file 'part2.mkv'

Le prime due righe sono "commenti" e non saranno utilizzate da ffmpeg, puoi rimuoverle se vuoi. Ovviamente nel nostro caso potremmo avere diversi tipi di file come mp4, wav, mov o altri. Questo è solo un esempio.

Il comando ffmpeg da eseguire nel tuo terminale può essere adattato alle nostre esigenze, ecco un esempio:

ffmpeg -f concat -safe 0 -i list.txt -c copy video_uniti.mkv

Questo creerà un file "video_uniti.mkv" all'interno della nostra cartella. Possiamo usare altri tipi di file come mp4, mov, wav e altro. Inoltre, potremmo usare percorsi assoluti sia nel file list.txt che nel comando ffmpeg. L'attributo "-safe 0" può essere omesso se usiamo percorsi relativi.

Volendo, possiamo salvare il comando ffmpeg qui sopra in un file run.bat ed eseguirlo in questo modo, invece di dover copiare il comando ogni volta nel terminale.

Unire video con codec diversi

Questa operazione è sicuramente più complessa ed è più probabile che non vada a buon fine, quindi è consigliato leggere anche la documentazione di ffmpeg su questo argomento.

In breve, dobbiamo eseguire un comando simile al seguente, a seconda delle nostre esigenze:

ffmpeg -i input1.mp4 -i input2.webm -i input3.mov \
-filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mkv

In questo caso supponiamo di avere tre diversi tipi di file come input: mp4, webm e mov. WebM è solitamente la versione compressa di un file video, mentre MOV solitamente proviene da dispositivi Apple.

Il parametro "filter_complex" indica a ffmpeg quali flussi prendere dai file di input e inviare come input al filtro concat.

Infine, i parametri "map" indicano a ffmpeg di utilizzare i risultati del filtro concat anziché i flussi direttamente dall'input.

Conclusioni

Nel mio caso, ho unito una traccia lunga 1 ora con un'altra lunga 23 minuti. Il peso di entrambi i file era di 4,77 GB. Il file di output risultante aveva la stessa lunghezza e peso e ci sono voluti solo due minuti per completare l'operazione.

È stato incredibilmente facile e veloce e sicuramente mi aiuterà molto in futuro. Se è stato utile anche a te, seguimi su Facebook e Twitch e iscriviti al mio canale Youtube . Lascia anche un commento qui sotto!

Leggi anche

Leave a comment

I commenti dovranno essere approvati prima della pubblicazione. Potrebbero apparire dopo diverse ore.

Puoi usare un nome casuale, è utile per permettermi almeno di risponderti. Se scegli di lasciare la tua email, potrai ricevere una notifica quando rispondo al tuo commento.

Nessun commento è stato ancora inviato. Inizia la discussione condividendo la tua opinione!

*