แปลงวิดีโอและแทร็กเสียงเฉพาะด้วย ffmpeg เท่านั้น


26

ฉันมีไฟล์ MKV ( vidui.mkv) พร้อม 6 แทร็กในนั้น

Track 1 - video - xvid - 1920x1080
Track 2 - video - xvid - 720x576
Track 3 - audio -  AAC - 1240kbps - English
Track 4 - audio -  AAC - 648kbps - Spanish
Track 5 - audio -  AAC - 648kbps - Commentary 1
Track 6 - audio -  AAC - 648kbps - Commentary 2

ฉันต้องการแปลงไฟล์ด้านบนเป็นรูปแบบ mp4 ด้วยวิดีโอ h264 หนึ่งไฟล์และหนึ่งเสียง AC3 นอกจากนี้ฉันต้องการแปลงแทร็ก 1 (วิดีโอ) และแทร็ก 5 (เสียง)

ถ้าฉันใช้

ffmpeg.exe -i vidui.mkv -f mp4 -vcodec libx264 -acodec ac3 -crf 20 -sn -n vidui.mp4

มันแปลงแทร็กวิดีโอแรกและแทร็กเสียงแรก แต่สิ่งที่ฉันอยากทำคือแปลง track 1 และ track 5

คำตอบ:


43

คุณสามารถใช้-mapตัวเลือก ( เอกสารเต็มรูปแบบ ) เพื่อเลือกกระแสข้อมูลเฉพาะและแมปกับเอาต์พุตของคุณ

ที่ง่ายที่สุดmapไวยากรณ์คุณสามารถใช้เป็น-map i:sที่iคือ ID ใส่ไฟล์และเป็นรหัสกระแสทั้งที่เริ่มต้นด้วยs 0ในกรณีของคุณนั่นหมายถึงเราเลือกแทร็ก0และ4:

ffmpeg -i vidui.mkv -c:v libx264 -c:a ac3 -crf 20 -map 0:0 -map 0:4 vidui.mp4

หากคุณต้องการเลือกแทร็กวิดีโอเสียงหรือคำบรรยายโดยเฉพาะคุณสามารถใช้ตัวระบุสตรีม :

ffmpeg -i vidui.mkv -c:v libx264 -c:a ac3 -crf 20 -map 0:v:0 -map 0:a:1 vidui.mp4

นี่0:v:0คือวิดีโอสตรีมแรกและ0:a:1เป็นสตรีมเสียงที่สอง


มีวิธีการทำเช่นนี้แบบไดนามิกหรือไม่? ถ้าฉันต้องการทำสิ่งนี้กับแทร็กเสียงในภาษา X เท่านั้นและ ffmpeg เลือกมาได้ไหม
Freedo

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