012 Concatenare files multimediali.

27 Agosto, 2022 (15:48) | ffmpeg, Fotografia digitale, Linux, Video | By: sargonsei

# 012.1 Concatenare files multimediali identici.
Per “concatenare” si intende “unire in sequenza, uno dopo l’altro”. Se i files multimediali hanno lo stesso formato, gli stessi co/dec e la stessa risoluzione, possono essere facilmente concatenati in un unico file multimediale impartendo il comando di FFmpeg che si riporta di seguito.
ffmpeg -i multimedia1.mkv -i multimedia2.mkv -i multimedia3.mkv videoOUTconcat.mkv # Concatena 3 video aventi parametri identiciL’ordine di concatenamento coinciderà con l’ordine cui i files multimediali in ingresso sono stati indicati nel comando suddetto.
Qualora i files multimediali da concatenare non abbiano tutti le medesime caratteristiche, il presente metodo potrebbe non funzionare, quindi potrebbe essere necessario realizzare la concatenazione utilizzando uno dei metodi descritti di seguito.

# 012.2 Concatenare files multimediali di diverso formato indicati nel comando stesso.
Volendo concatenare 3 diversi files multimediali (ognuno di essi con un flusso video e audio) il comando
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

che, per nostra comodità, si riporta anche suddiviso in righe:
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

Analizziamo il comando.
La prima riga contiene il nome dell’istruzione seguito dal nome dei files multimediali che si intende concatenare nell’ordine in cui saranno concatenati; siccome detti files costituiscono l’input dell’istruzione, il nome di ciascuno di essi è preceduto da [-i]; ora il primo file è l’ingresso 0, il secondo file è l’ingresso 1, il terzo file è l’ingresso 2.
Successivamente si indicano, fra doppi apici, i parametri del “[-filter_complex]” in modo che concateni sia il video sia l’audio di ciascun file in ingresso, specificando che i files multimediali dei quali vogliamo concatenare sia l’audio che il video sono 3. Il parametro v=1 indica che ci sarà un flusso video per segmento; il parametro a=1 indica che ci sarà un flusso audio per segmento. Il filtro quindi concatena questi segmenti e produce due flussi di output: uno video ed uno audio.
Le istruzioni scritte nella terza riga dicono a ffmpeg di utilizzare i risultati del filtro concat anziché i flussi direttamente dai file di input.

Per approfondimenti, si veda la pagina web della guida ufficiale
https://trac.ffmpeg.org/wiki/Concatenate

# 012.3 Concatenare files multimediali elencati in apposito file.
# 012.3.1) Mettere in una cartella tutti i files multimediale che si intende unire.
# Qualunque conversione (di formato, risoluzione, velocità o altro)
# si desidera applicare ad ogni singolo spezzone, si suppone effettuata in precedenza.
# 012.3.2) Mettere in una cartella un file di testo [listaVideo.txt] contenente nome ed estensione di tutti i files multimediale che si intende unire.
# A titolo esemplificativo, segue una lista per unire 6 files multimediali.
#
file 'vIN1.mp4' # contiene il video che, nel video finale, apparirà per primo.
file 'vOUTavMezAVrev.mp4' # contiene il video che, nel video finale, apparirà per secondo.
file 'vOUTavMez.mp4' # contiene il video che, nel video finale, apparirà per terzo.
file 'vOUTrevAV.mp4' # contiene il video che, nel video finale, apparirà per quarto.
file 'vOUTavx2.mp4' # contiene il video che, nel video finale, apparirà per quinto.
file 'vIN3.mp4' # contiene il video che, nel video finale, apparirà per ultimo.
#
# 012.3.3) Aprire un terminale all’interno della cartella di lavoro, ed impartire il comando seguente:
ffmpeg -f concat -i listaVideo.txt videoOUTconcat.mp4 # Concatena i video elencati nella lista listaVideo.txt; i parametri non specificati sono dedotti da FFmpeg in base all'estensione del video finale.