ฉันจะรวมหรือต่อไฟล์ MP4 อย่างน้อยสองไฟล์เข้าด้วยกันเพื่อสร้างไฟล์ MP4 อื่นได้อย่างไร [ซ้ำ]


14

ฉันจะต่อหรือรวมไฟล์ MP4 อย่างน้อย 2 ไฟล์เข้าด้วยกันในไฟล์ MP4 สุดท้ายได้อย่างไร

ฉันได้ลองในหน้าต่าง DOS เพื่อใช้คำสั่ง COPY (ฉันอ่านมันที่ไหนสักแห่ง) แต่มันใช้งานไม่ได้


ดูsuperuser.com/questions/43588/…สำหรับข้อมูลเพิ่มเติม ไม่แน่ใจว่าฉันจะจำแนกคำถามนี้เป็นซ้ำหรือไม่
พัฒนา

1
กรุณาเพิ่มระบบปฏิบัติการของคุณเป็นแท็ก
tumchaaditya

คำตอบ:


12

mp4box สามารถทำเช่นนี้ แต่คุณอาจต้องการที่จะใช้ GUI สำหรับมันเหมือนYAMBหรือฉัน mp4box GUI (หมายเหตุ: ไม่ใช่โปรแกรมของฉันเป็นการส่วนตัวนั่นเป็นเพียงชื่อ) ไฟล์ไบนารีของ MP4Box สำหรับ Windows นั้นมีให้จากเว็บไซต์นี้

ตัวอย่าง:

MP4Box -tmp $HOME -add vid.01.m4v \
    -cat vid.02.m4v -cat vid.03.m4v vid-out.mp4

4

ผมขอแนะนำ usind ffmpegซึ่งสามารถใช้ได้สำหรับ Mac OS X, Linux และของ Windows

ต่อไปนี้เป็นตัวอย่างที่ดีเกี่ยวกับวิธีการต่อภาพยนตร์สองเรื่องเข้าด้วยกัน: http://www.ffmpeg.org/faq.html#SEC27

ในขั้นตอนสุดท้ายคุณต้องทำให้แน่ใจว่าคุณสร้างคอนเทนเนอร์ MP4 สำหรับไฟล์ผลลัพธ์


เมื่อฉันเข้าใจคำตอบที่พบบ่อยของ ffmpeg สิ่งนี้ไม่สามารถทำได้กับวิดีโอ MP4 (น่าจะเป็น H.264) เนื่องจากไม่ใช่ "รูปแบบสิทธิพิเศษ" อย่างใดอย่างหนึ่ง
ttarchala

@ttarchala: ฉันพยายามถ้ามันสามารถทำได้ ฉันเคยแปลงเป็น MP4 ด้วย FFmpeg มาก่อน แต่ไม่เคยต่อภาพยนตร์สองเรื่องเข้าด้วยกัน นอกจากนี้: ฉันอยากจะชี้ให้เห็นว่า FFmpeg มีการพัฒนาที่รวดเร็วมาก สิ่งที่ใช้ไม่ได้กับเวอร์ชันหนึ่งอาจใช้งานได้ในเวอร์ชันถัดไป
polemon

1
การสร้าง FFMPEG ไม่ทั้งหมดมีการสนับสนุน MP4 สิ่งหนึ่งคือเทคโนโลยีที่จดสิทธิบัตรแล้วและถือว่าผิดกฎหมายในการแจกจ่ายเครื่องเข้ารหัส MP4 ในสหรัฐอเมริกาโดยไม่เสียค่าธรรมเนียม อย่างไรก็ตามงานสร้างจำนวนมากสามารถทำได้
CarlF

@CarlF: สำหรับ Linux และ Mac OS X นี่ไม่ใช่ปัญหาจริงๆ รหัสสามารถแจกจ่ายได้อย่างอิสระดังนั้นโดยพื้นฐานแล้วใครก็ตามที่สร้าง FFmpeg ของตัวเองทุกอย่างก็ดี สำหรับการจดสิทธิบัตรฉันต้องการแสดงความคิดเห็น: ฉันจะไม่พบไซต์ในตอนนี้ แต่สิทธิบัตรแรกที่หมดอายุสำหรับ AAC (ซึ่งกำหนดไว้บางส่วนใน MPEG-4) คือในปี 2022 และนั่นคือ เพียงครั้งแรกที่มีอื่น ๆ อีกมากมายที่จะต้องหมดอายุจนกว่ามันจะสมบูรณ์ตามกฎหมาย ...
Polemon

4

คุณสามารถลองทำสิ่งนี้กับ ffmpeg:

mkfifo temp0 temp1
ffmpeg -i input0.mp4 -c copy -bsf h264_mp4toannexb -f mpegts -y temp0 2> /dev/null & \
ffmpeg -i input1.mp4 -c copy -bsf h264_mp4toannexb -f mpegts -y temp1 2> /dev/null & \
ffmpeg -f mpegts -i "concat:temp0|temp1" -c copy -absf aac_adtstoasc output.mp4

สิ่งนี้ไม่ได้เข้ารหัสสิ่งใดใหม่ แต่วางไว้ในคอนเทนเนอร์สตรีมการส่งข้อมูลใหม่ซึ่งทำให้พวกเขาเชื่อมต่อได้ง่ายขึ้นจากนั้นเชื่อมต่อพวกเขากลับเป็น MP4 หาก output.mp4 มีอยู่แล้วคำสั่งจะล้มเหลว รุ่นข้างต้นใช้ชื่อ pipes คุณอยู่ในระบบที่ไม่รองรับไฟล์ที่คุณต้องใช้ไฟล์ระดับกลาง:

ffmpeg -i input0.mp4 -c copy -bsf h264_mp4toannexb temp0.ts
ffmpeg -i input1.mp4 -c copy -bsf h264_mp4toannexb temp1.ts
ffmpeg -i "concat:temp0.ts|temp1.ts" -c copy -absf aac_adtstoasc output.mp4

ถ้ามันไม่ใช่ h264 แต่เป็น mpeg4 ล่ะ?
Edison

2

อัปเดต: เพียงตรวจสอบ avidemux ตามที่ฉันติดตั้งไว้หลังจากอ่านคำตอบอื่น ๆ มันคือสิ่งที่คุณกำลังมองหา (ไม่คิดว่ามันจะทำได้ MP4 เพราะชื่อของมัน ... )

ฉันคิดว่า VirtualDubMod นั้นสามารถใช้งานกับ mp4 ได้ แต่ฉันไม่ได้ใช้มันดังนั้นฉันจึงไม่แน่ใจ

คุณอาจต้องการที่จะตรวจสอบMeGUI มันเป็นแอพและเครื่องมือที่ค่อนข้างซับซ้อนและเต็มไปด้วยคุณสมบัติ

เครื่องมือสำหรับการฝังในคอนเทนเนอร์ (mp4 ในกรณีของคุณ) เรียกว่า muxer ซึ่งอาจไม่สามารถต่อกันได้

คุณสามารถใช้ร่วมกับ VirtualDub Virtualdub เชื่อมต่อสตรีมวิดีโอและ muxer เพื่อให้ mp4 อีกครั้ง (โดยไม่ต้องเข้ารหัส)


1

ฉันทำกับ mencoder หลังจากแปลงให้เป็น avi ด้วย ffmpeg

นี่เป็นสคริปต์อย่างง่ายโดยสมมติว่าคุณมี 15 ไฟล์ชื่อ 01.mp4 ... 15.mp4

#!/bin/bash
for j in `seq -w 1 15`;
do
    echo converting file $j.avi
    ffmpeg -i $j.mp4 $j.avi        

    echo adding file $j.avi to list
    z="$z $j.avi"
done 

echo doing append
mencoder -oac copy -ovc copy $z -o all.avi

ไชโย


1

นี่คือคำสั่ง:

ffmpeg -i concat:"video1.ts|video2.ts"

อักขระไพพ์นั้นจำเป็นต้องหลบหนีหรือไม่? หรือฉันเข้าใจผิดคำสั่งนั้นอย่างสิ้นเชิง?
killermist

มันจำเป็นต้องหลบหนี อุ่ย
rogerdpack
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.