하나의 파일을 만들기 위해 두 개의 mp4 파일을 결합하고 싶습니다. 비디오 스트림은 h264로 인코딩되고 오디오는 aac로 인코딩됩니다. 계산상의 이유로 비디오를 다른 형식으로 다시 인코딩 할 수 없습니다. 또한 GUI 프로그램을 사용할 수 없으며 모든 처리는 Linux 명령 행 유틸리티를 사용하여 수행해야합니다. FFmpeg는 mpeg4 파일에 대해이 작업을 수행 할 수 없으므로 대신 MP4Box를 사용했습니다.
MP4Box -add video1.mp4 -cat video2.mp4 newvideo.mp4
불행히도 오디오는 모두 섞입니다. 문제는 오디오가 aac에 있다고 생각하여 mp3로 코드를 트랜스 코딩하고 MP4Box를 다시 사용했습니다. 이 경우 전반에 newvideo.mp4
()에 해당하는 오디오는 괜찮지 video1.mp4
만 오디오가 아니므로 비디오를 탐색 할 수 없습니다.
나의 다음 생각은 오디오 및 비디오 스트림이 내가 고쳐야 할 길이에 약간의 불일치가 있다는 것이었다. 따라서 각 입력 비디오에 대해 비디오 및 오디오 스트림을 분할 한 다음 FFmpeg의 -shortest 옵션으로 결합했습니다.
따라서 첫 번째 비디오에서 다음을 실행했습니다.
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
두 번째 비디오와 마찬가지로 이전과 같이 MP4Box를 사용했습니다. 불행히도 이것은 작동하지 않았습니다. 내가 유일하게 성공한 것은 비디오 스트림 (예 : videostream1.mp4 및 videostream2.mp4)과 오디오 스트림 (예 : audiostream1.m4a 및 audiostream2.m4a)을 개별적으로 결합한 다음 비디오 및 오디오를 최종 파일로 결합했을 때였습니다. 그러나 비디오의 후반에 대한 동기화가 손실됩니다. 구체적으로, 1 초의 오디오 및 비디오 지연이 있습니다. 어떤 제안이라도 환영합니다.