2011-09-27 8 views
8

Voglio combinare due video mp4 per formare un singolo video mp4 usando ffmpeg.Combinare due video da ffmpeg

quello che ho provato finora è

ffmpeg -i input1.mp4 -i input2.mp4 output.mp4 

Ma, ogni volta che ottengo il video con il codec video di primo ingresso e non il contrario. Come posso combinarli? Qualsiasi idea su questo sarà molto apprezzata.

+1

Cosa intendi per "codec video del primo input e non dell'altro"? Sono formati video diversi? Ottieni il contenuto di entrambi i video nell'output? – TheJuice

+0

Si prega di fornire maggiori dettagli. Come ti aspetti di combinarli? In sequenza? O vuoi avere due flussi video paralleli in un unico file? MP4 è solo un contenitore. I codec attuali sono gli stessi? Dai l'output di 'ffprobe' per entrambi i tuoi file. – misha

+0

entrambi i video sono dello stesso formato e ottengo solo il primo video nel file ouptput che ottengo. – Astha

risposta

5

Leggere il documento FFMPEG FAQ per informazioni su come unire i file.

Sfortunatamente, dal momento che stai usando file MP4, la semplice concatenazione non funzionerà per te perché il formato MP4 contiene una sezione "header" (anche se non deve necessariamente essere all'inizio del file) che descrive e contiene offset nei dati multimediali. Dovrai transcodificare entrambi i file in un formato che può essere concatenato e quindi generare un file MP4 da quel formato (che genererà una sezione di intestazione appropriata).

5

Non è possibile concatenare i file .mp4 ma è possibile concatenare i file .mpg. Prova a convertire entrambi i video in .mpg prima usando ffmpeg. Quindi, esegui un semplice comando linux cat su entrambi i file .mpg per creare un file .mpg combinato. Successivamente, converti il ​​file .mpg concatenato in .mp4 usando ffmpeg. Questo è un tipo di approccio rotatorio, ma funziona. Puoi usare "named pipe" per ridurre il numero di comandi ma il risultato è lo stesso.

3

È possibile eseguire questa operazione con ffmpeg, ma è disponibile anche un piccolo strumento, chiamato MP4Box (parte di GPAC), in grado di concatenare più file MP4.

Nel tuo caso, la sintassi è

MP4Box -cat input1.mp4 -cat input2.mp4 output.mp4 
+2

Puoi farlo con 'ffmpeg' usando [concat demuxer] (https://trac.ffmpeg.org/wiki/Concatenate#demuxer) (usa se i tuoi input sono tutti dello stesso formato, ecc. E vuoi [stream copia] (http://ffmpeg.org/ffmpeg.html#Stream-copy)) o [filtro concat] (http://ffmpeg.org/ffmpeg-filters.html#concat) (utilizzare se si desidera codifica e/o se i tuoi input non hanno gli stessi formati, base dei tempi, ecc.). – LordNeckbeard

+0

Hey, grazie mille. Ho appena testato più file mp4 dalla mia GoPro usando mp4box. Sono stupito di quanto bene abbia funzionato. Erano combinati in modo impeccabile. – daniel

5

Come risposte precedenti dimostrano, è necessario convertire prima in un formato intermedio. Se il mp4 contiene H264 bitstream, è possibile utilizzare:

ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input1.ts 
ffmpeg -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input2.ts 
ffmpeg -i "concat:input1.ts|input2.ts" -c copy output.mp4 

una risposta più dettagliata si possono trovare here.