วิธีการรวมไฟล์เสียงและวิดีโอใน ffmpeg


161

ฉันต้องการรวมไฟล์เสียง (.wav หรือรูปแบบ. au) กับไฟล์วิดีโอ (รูปแบบ. mp4)

โปรดแนะนำวิธีการทำสิ่งนี้ให้สำเร็จ ฉันต้องการรวมไฟล์เหล่านี้เข้ากับไฟล์วิดีโอ. mp4 ใหม่ คำสั่ง ffmpeg จะยินดีมาก


มีบทความดีที่นี่ที่อาจจะเป็นประโยชน์มากเกินไป ... เป็นcfc.kizzx2.com/index.php/muxing-audio-and-video-with-ffmpeg
ไซมอนตะวันออก

คำตอบ:


260

ผสานภาพและเสียงด้วยการเข้ารหัสเสียงซ้ำ

ดูตัวอย่างนี้นำมาจากรายการบล็อกนี้แต่อัปเดตสำหรับไวยากรณ์ที่ใหม่กว่า มันควรเป็นสิ่งที่มีผลต่อ:

ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental output.mp4

ที่นี่เราสันนิษฐานว่าไฟล์วิดีโอยังไม่มีสตรีมเสียงใด ๆ และคุณต้องการมีรูปแบบเอาต์พุตเดียวกัน (ที่นี่ MP4) เป็นรูปแบบอินพุต

คำสั่งข้างต้นแปลงรหัสเสียงเนื่องจาก MP4 ไม่สามารถส่งกระแสข้อมูลเสียง PCM ได้ คุณสามารถใช้ตัวแปลงสัญญาณเสียงที่ต้องการอื่น ๆ ได้ถ้าต้องการ ดูคู่มือการเข้ารหัส AACสำหรับข้อมูลเพิ่มเติม

หากกระแสข้อมูลเสียงหรือวิดีโอของคุณยาวขึ้นคุณสามารถเพิ่ม-shortestตัวเลือกเพื่อให้ ffmpeg หยุดการเข้ารหัสเมื่อไฟล์เดียวจบ

คัดลอกเสียงโดยไม่ต้องเข้ารหัส

หากคอนเทนเนอร์ที่ส่งออกของคุณสามารถจัดการ (เกือบ) ตัวแปลงสัญญาณใด ๆ - เช่น MKV - จากนั้นคุณสามารถคัดลอกทั้งกระแสข้อมูลเสียงและวิดีโอ:

ffmpeg -i video.mp4 -i audio.wav -c copy output.mkv

แทนที่สตรีมเสียง

หากวิดีโออินพุตของคุณมีเสียงอยู่แล้วและคุณต้องการแทนที่คุณต้องบอก ffmpeg ว่าจะให้สตรีมเสียงใดใช้:

ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental \
-map 0:v:0 -map 1:a:0 output.mp4

mapตัวเลือกทำให้ ffmpeg เพียงใช้สตรีมวิดีโอครั้งแรกจากอินพุตแรกและสตรีมเสียงแรกจากการป้อนข้อมูลที่สองสำหรับไฟล์ที่ส่งออก


ฉันลองใช้ แต่ ffmpeg กำลังหยุดขณะผสาน
Sandy

4
ฉันไม่คิดว่า mp4 คอนเทนเนอร์สามารถมีสตรีมเสียง wav ลองffmpeg -i audio.wav -i video.mp4 -acodec copy -vcodec copy -f mkv output.mkv
ลุค

1
ฉันกำลังใช้สิ่งนี้อยู่และกำลังแทนที่เสียงต้นฉบับจากอินพุตเสียง ถ้าฉันต้องการผสานสัญญาณเสียงเข้ากับเสียงวิดีโออินพุต
อิกบัลมาลิก

บรรทัดคำสั่งหวานมาก ...
จันทรา Nakka

เยี่ยมมากฉันใช้ ffmpeg -i video.mp4 -i audio.wav \ -c: v copy -c: aac -strict output.mp4 ทดลองอย่างเข้มงวดเพื่อรวม MP3 กับไฟล์ Wav ... => mp4 5 นาทีแสดงผล 30 วินาที .. ขอบคุณ
sonida

12

เนื่องจากฉันไม่ได้รับอนุญาตให้เขียนความคิดเห็นต่อคำตอบแรกที่มีชื่อเสียงของฉันภาคผนวกที่นี่เพราะฉันมีปัญหานี้เมื่อเข้ารหัส webms
หากสตรีมเสียงของคุณยาวกว่าสตรีมวิดีโอคุณจะต้องตัดมันมิฉะนั้นคุณจะมีเฟรมวิดีโอสุดท้ายเป็นภาพนิ่งและเสียงที่กำลังรัน

หากต้องการตัดกระแสข้อมูลคุณสามารถใช้ -ss [hh: mm: ss] -t [ss] หน้าแต่ละไฟล์ -i "file.ext"
-ss [... ] จะกำหนดจุดเริ่มต้นที่จะตัด
-t [... ] จะกำหนดความยาวของส่วนในหน่วยวินาที

ตัวอย่าง:

ffmpeg.exe -ss 00:00:10  -t 5 -i "video.mp4" -ss 0:00:01 -t 5 -i "music.m4a" -map 0:v:0 -map 1:a:0 -y out.mp4

4
คุณยังสามารถใช้-shortestเพื่อตัดปลาย
nyuszika7h

5

เปิดคำสั่ง promt (windows + r -> cmd-> enter)

- จากนั้นไปที่โฟลเดอร์ที่คุณมีไฟล์เสียงและวิดีโอ

ใช้ cmd นี้

ffmpeg -i "videoFile.mp4" -i "audioFile.mp3" -shortest outPutFile.mp4

ป้อน .... คุณจะได้รับไฟล์ใหม่ชื่อ outPutFime.mp4 (ไฟล์ที่รวมเสียงและวิดีโอ)


2
ไม่จำเป็นต้องอธิบายวิธีใช้บรรทัดคำสั่งที่นี่จริงๆ มันค่อนข้างบอกเป็นนัย ๆ ว่าผู้ใช้จะสามารถเข้าใจได้ โดยเฉพาะอย่างยิ่งเนื่องจากผู้ถามระบุ FFmpeg เหมือนกันทั้งหมด-shortestแท็กนั้นดีมาก ง่ายกว่าคำตอบของ @ user136036
Kat

3
นี่จะเข้ารหัสทุกอย่างอีกครั้งซึ่งอาจไม่ใช่สิ่งที่ต้องการ
mivk


'ffmpeg' ไม่ได้รับการยอมรับว่าเป็นคำสั่งภายในหรือภายนอก
UniCoder

คุณต้องเพิ่ม ffmpeg ไปที่ PATH wikihow.com/Install-FFmpeg-on-Windows
Arete

5

สิ่งนี้ใช้ได้กับฉัน:

ffmpeg.exe -i AudioT.m4a -i VideoT.mp4 -acodec copy -vcodec copy muxed.mp4

1
บางส่วนใช้งานได้สำหรับฉันไม่ทำงานสำหรับอินพุตทั้งหมดบางวิดีโออินพุตที่ได้ยังคงเหมือนเดิมในเอาต์พุต
Narendra Singh


1

ลองใช้ mencoder (ใช่แล้วมันใช้ ffmpeg แล้วแต่คุณไม่รู้) ฉันใช้-audiofileอาร์กิวเมนต์ แต่โดยทั่วไปฉันใช้ ffmpeg ดังนั้นควรทำตามคำแนะนำนี้ด้วยเกลือเล็กน้อย

และถ้าคุณใช้ Windows, Mediacoder (ไม่ใช่โอเพ่นซอร์สอีกต่อไปเศร้า) ทำงาน ... มันเป็นส่วนหน้าสำหรับการเข้ารหัส gnu จำนวนมากและไม่กี่คนฟรี

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