Voglio unire due file mp4 per crearne uno singolo. I flussi video sono codificati in h264 e l'audio in aac. Non riesco a ricodificare i video in un altro formato a causa di motivi computazionali. Inoltre, non posso usare alcun programma GUI, tutta l'elaborazione deve essere eseguita con le utility della riga di comando di Linux. FFmpeg non può farlo per i file mpeg4, quindi ho usato MP4Box:
MP4Box -add video1.mp4 -cat video2.mp4 newvideo.mp4
Sfortunatamente l'audio si confonde. Ho pensato che il problema fosse che l'audio era in aac, quindi l'ho transcodificato in mp3 e ho usato di nuovo MP4Box. In questo caso l'audio va bene per la prima metà di newvideo.mp4
(corrispondente a video1.mp4
) ma poi il loro non è audio e non posso navigare anche nel video.
Il mio pensiero successivo è stato che i flussi audio e video presentavano alcune piccole discrepanze nelle loro lunghezze che avrei dovuto correggere. Quindi per ogni video di input ho diviso i flussi video e audio e poi li ho uniti con l'opzione -shortest in FFmpeg.
Quindi per il primo video ho eseguito:
avconv -y -i video1.mp4 -c copy -map 0:0 videostream1.mp4
avconv -y -i video1.mp4 -c copy -map 0:1 audiostream1.m4a
avconv -y -i videostream1.mp4 -i audiostream1.m4a -c copy -shortest video1_aligned.mp4
Allo stesso modo per il secondo video e quindi utilizzato MP4Box come in precedenza. Sfortunatamente neanche questo ha funzionato. L'unico successo che ho avuto è stato quando ho unito i flussi video separatamente (ovvero videostream1.mp4 e videostream2.mp4) e i flussi audio (ovvero audiostream1.m4a e audiostream2.m4a) e poi ho unito il video e l'audio in un file finale. Tuttavia, la sincronizzazione viene persa per la seconda metà del video. Concretamente, c'è un ritardo di 1 secondo di audio e video. Qualsiasi suggerimento è davvero gradito.