Per unire due o più video in unico in un unico file è sufficiente eseguire i seguenti comandi da Terminale:
$ cat video1.avi video2.avi > out.avi
$ mencoder -forceidx -oac copy -ovc copy out.avi -o out_final.avi
$ rm out.avi
Il comando cat
legge il contenuto di ciascun file, byte per byte, e lo riscrive nel file di output accordandoli nell’ordine specificato. Si potrebbe pensare erroneamente che sarebbe sufficiente questo ma se si prova ad aprire il file out.avi
il lettore video utilizzato indicherà come durata totale quella del primo video. Questo perché legge l’header del primo file. In effetti cat
non rielabora il flusso dati in ingresso trattando ogni tipo di file allo stesso modo, a prescindere dalla sua natura.
Pertanto è necessario riscrivere l’header del file in uscita. Ecco quindi il motivo del secondo comando: mencoder
rilegge tutto lo stream, sia audio che video, e scrive un nuovo header nel file di output finale. Le opzioni -oac copy
e -ovc copy
indicano al programma di copiare i flussi audio e video senza rielaborarne il formato, così da rendere il processo estremamente veloce.
Un’ultima nota: mentre cat
fa parte del set di comandi standard unix ed è quindi già presente in OS X, mencoder
richiedere l’installazione a parte. Io uso MacPorts ed è stato sufficiente installare il pacchetto mplayer:
$ sudo port selfupdate
$ sudo port upgrade outdated
$ sudo port install mplayer
Tutto qui.