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


19

ฉันต้องการแทนที่สตรีมเสียงที่สอง (0: 2) ในไฟล์วิดีโอที่มีสตรีมเสียงสองรายการและให้ป้ายกำกับหากเป็นไปได้ ฉันจะไปเกี่ยวกับเรื่องนี้อย่างไร คำสั่ง ffmpeg ทั้งหมดที่ฉันพบจะไม่ให้ฉันเก็บกระแสข้อมูลเสียงที่สอง

คำตอบ:


22

ใช้-mapตัวเลือกเพื่อเลือกสตรีมของคุณ การเลือกสตรีมเริ่มต้นจะเลือกหนึ่งสตรีมแต่ละประเภทเท่านั้นดังนั้นจึง-mapต้องใช้

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

ป้อนคำอธิบายรูปภาพที่นี่

ffmpeg -i video.mkv -i audio.mp3 -map 0:v -map 0:a:0 -map 1:a \
-metadata:s:a:0 language=eng -metadata:s:a:1 language=sme -codec copy \
-shortest output.mkv
  • 0:v- เดอะหมายถึงการป้อนข้อมูลซึ่งเป็นครั้งแรก0 หมายถึง "เลือกวิดีโอประเภทกระแส"video.mkvv

  • 0:a:0- เดอะหมายถึงการป้อนข้อมูลซึ่งเป็นครั้งแรก0 หมายถึง "เลือกประเภทสตรีมเสียง" สุดท้ายหมายถึงสตรีมเสียงแรกจากอินพุตนี้ หากใช้เฉพาะสตรีมวิดีโอทั้งหมดจะถูกแมปvideo.mkva00:a

  • 1:a- เดอะหมายถึงการป้อนข้อมูลที่สองซึ่งเป็น1 หมายถึง "เลือกประเภทสตรีมเสียง"audio.mp3a

  • -codec copyจะสตรีมการคัดลอก (re-mux) แทนการเข้ารหัส หากคุณต้องการตัวแปลงสัญญาณเสียงที่เฉพาะเจาะจงคุณควรระบุ-c:v copy(เพื่อเก็บวิดีโอ) และจากนั้นตัวอย่างเช่น-c:a libmp3lameการเข้ารหัสสตรีมเสียงเป็น MP3 อีกครั้ง

  • -shortest จะจบเอาต์พุตเมื่ออินพุตที่สั้นที่สุดสิ้นสุดลง

รวมการสตรีมเสียงสองรายการไว้ในที่เดียว

ป้อนคำอธิบายรูปภาพที่นี่

ffmpeg -i vid.mkv -i aud.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a aac -strict experimental -b:a 192k -ac 2 \
-shortest out.mp4
  • การกรองต้องมีการเข้ารหัสใหม่และใช้amergeตัวกรองที่นี่ดังนั้นจึงไม่สามารถคัดลอกเสียงในตัวอย่างนี้ได้

ไม่ได้ผลสำหรับฉันเลย
Rudolf Olah

@ บ้าน "ไม่ทำงาน" ยากที่จะให้ความช่วยเหลือ คุณควรใช้ลิงค์ pastebin เพื่อแสดงคำสั่งและเอาต์พุตคอนโซลที่สมบูรณ์
4707 llogan

ปัญหาของฉันคือ-codec copyแต่ฉันแก้ไขที่ (เวอร์ชันที่แตกต่างกันของ ffmpeg) ปัญหาอื่น ๆ ที่ฉันเคยมีกับ-mapมันบ่นเกี่ยวกับจำนวนกระแสที่ไม่ถูกต้อง
Rudolf Olah

1
-map 0:v -map 1:aฉันเพียงแค่ใช้ ฉันถือว่านี่หมายถึงการใช้วิดีโอจากไฟล์แรก (video.mkv) จากนั้นใช้เสียงจากไฟล์ที่สอง (audio.mp4) เพื่อสร้าง output.mkv ... ไม่แน่ใจว่า-map 0:a:0มันคืออะไร ฉันไม่ได้รวมและได้ผลลัพธ์ที่ต้องการ
อาทิตย์

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