ฉันต้องการเข้าร่วมไฟล์ mp4 สองไฟล์เพื่อสร้างไฟล์เดียว วิดีโอสตรีมจะถูกเข้ารหัสใน h264 และเสียงใน aac ฉันไม่สามารถเข้ารหัสวิดีโอเป็นรูปแบบอื่นได้อีกเนื่องจากเหตุผลด้านการคำนวณ นอกจากนี้ฉันไม่สามารถใช้โปรแกรม GUI ใด ๆ การประมวลผลทั้งหมดจะต้องดำเนินการด้วยยูทิลิตี้บรรทัดคำสั่ง Linux FFmpeg ไม่สามารถทำได้สำหรับไฟล์ mpeg4 ดังนั้นฉันจึงใช้ MP4Box แทน:
MP4Box -add video1.mp4 -cat video2.mp4 newvideo.mp4
น่าเสียดายที่เสียงทุกอย่างปะปนกัน ฉันคิดว่าปัญหาคือเสียงอยู่ใน aac ดังนั้นฉันจึงแปลงรหัสเป็น mp3 และใช้ MP4Box อีกครั้ง ในกรณีนี้เสียงดีสำหรับครึ่งแรกของnewvideo.mp4
(สอดคล้องกับvideo1.mp4
) แต่จากนั้นไม่มีเสียงและฉันไม่สามารถนำทางในวิดีโอได้เช่นกัน
ความคิดต่อไปของฉันคือสตรีมเสียงและวิดีโอมีความแตกต่างเล็ก ๆ น้อย ๆ ตามความยาวที่ฉันควรแก้ไข ดังนั้นสำหรับวิดีโออินพุตแต่ละอันฉันได้แยกวิดีโอและสตรีมเสียงแล้วเชื่อมต่อพวกเขาด้วยตัวเลือก -shortest ใน FFmpeg
ดังนั้นสำหรับวิดีโอแรกที่ฉันวิ่ง:
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 วินาที ข้อเสนอแนะใด ๆ ยินดีต้อนรับจริงๆ