Tôi muốn tham gia hai tập tin mp4 để tạo một tập tin duy nhất. Các luồng video được mã hóa trong h264 và âm thanh trong aac. Tôi không thể mã hóa lại video sang định dạng khác vì lý do tính toán. Ngoài ra, tôi không thể sử dụng bất kỳ chương trình GUI nào, tất cả việc xử lý phải được thực hiện với các tiện ích dòng lệnh Linux. FFmpeg không thể làm điều này cho các tệp mpeg4 vì vậy thay vào đó tôi đã sử dụng MP4Box:
MP4Box -add video1.mp4 -cat video2.mp4 newvideo.mp4
Thật không may, âm thanh bị lẫn lộn. Tôi nghĩ rằng vấn đề là âm thanh trong aac nên tôi đã chuyển mã nó thành mp3 và sử dụng lại MP4Box. Trong trường hợp này, âm thanh vẫn ổn trong nửa đầu newvideo.mp4
(tương ứng với video1.mp4
) nhưng sau đó chúng không có âm thanh và tôi cũng không thể điều hướng trong video.
Suy nghĩ tiếp theo của tôi là các luồng âm thanh và video có một số khác biệt nhỏ về độ dài mà chúng nên sửa. Vì vậy, đối với mỗi video đầu vào, tôi chia các luồng video và âm thanh và sau đó nối chúng với tùy chọn -shortest trong FFmpeg.
Vì vậy, cho video đầu tiên tôi chạy:
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
Tương tự cho video thứ hai và sau đó sử dụng MP4Box như trước đây. Thật không may, điều này cũng không hoạt động. Thành công duy nhất tôi có là khi tôi tham gia các luồng video một cách riêng biệt (ví dụ: videostream1.mp4 và videostream2.mp4) và các luồng âm thanh (ví dụ: audiostream1.m4a và audiostream2.m4a) và sau đó tham gia video và âm thanh trong một tệp cuối cùng. Tuy nhiên, đồng bộ hóa bị mất trong nửa sau của video. Cụ thể, có độ trễ 1 giây của âm thanh và video. Bất kỳ đề xuất đều thực sự được chào đón.