ffmpeg - แทนที่เสียงในวิดีโอ


48

วิธีการแทนที่เสียงในไฟล์วิดีโอโดยใช้ไฟล์เสียงโดยใช้ ffmpeg

ฉันจินตนาการว่าคำสั่งมีลักษณะดังนี้:

ffmpeg -i v.mp4 -i a.wav -MAGIC video-new.mp4

สิ่งนี้คล้ายกันมากกับวิธีการแทนที่สตรีมเสียงในไฟล์วิดีโอด้วยสตรีมเสียงหลายรายการ? แต่คำถามนั้นจัดการแทร็กเสียงหลายแทร็กซึ่งทำให้มันซับซ้อนมากทำให้ไม่ชัดเจนว่าส่วนใดของโซลูชันนั้นเพียงพอสำหรับการสลับออดิโอแบบง่าย

คำตอบ:


68

คุณต้องการคัดลอกสตรีมวิดีโอโดยไม่ต้องเข้ารหัสซ้ำเพื่อประหยัดเวลาได้มาก แต่การเข้ารหัสเสียงใหม่อาจช่วยป้องกันความเข้ากันไม่ได้:

ffmpeg -i v.mp4 -i a.wav -c:v copy -map 0:v:0 -map 1:a:0 new.mp4

-map 0:v:0จับคู่0สตรีมวิดีโอ(ดัชนี) แรกจากอินพุตไปยัง0สตรีมวิดีโอ(ดัชนี) แรกในเอาต์พุต

-map 1:a:0แม็พ1กระแสข้อมูลเสียงที่สอง (ดัชนี) จากอินพุตไปยัง0กระแสข้อมูลเสียงแรก (ดัชนี) ในเอาต์พุต

หากเสียงยาวกว่าวิดีโอคุณจะต้องเพิ่ม-shortestก่อนชื่อไฟล์ที่ส่งออก

ไม่ได้ระบุตัวแปลงสัญญาณเสียงโดยอัตโนมัติจะเลือกหนึ่งที่ทำงานได้ คุณสามารถระบุหนึ่งโดยยกตัวอย่างเช่นการเพิ่มหลังจาก-c:a libvorbis-c:v copy


2
หรือโดยตรง-c copyเพียงแค่รีเฟรช mux เสียงและวิดีโอโดยไม่ต้องเข้ารหัสสตรีมใด ๆ อีกครั้ง ^^
Francesco Yoshi Gobbo

1
คุณรู้วิธีการแปลงเสียงใหม่ในรูปแบบเดียวกัน (ด้วยพารามิเตอร์เดียวกัน) เหมือนในวิดีโอต้นฉบับหรือไม่ ฉันหมายถึงฉันต้องการไฟล์เสียงใหม่ที่จะเข้ารหัสในแบบเดียวกับที่เป็นเสียงเก่า
Kostanos

ทำงานเหมือนจับใจ !!
Tessaracter

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