ฉันจะแปลงวิดีโอ MP4 เป็นเสียง MP3 ด้วย FFmpeg ได้อย่างไร


120

ฉันต้องการแยกแทร็กเสียง MP3 จากวิดีโอ MP4 ด้วย ffmpeg ฉันสามารถทำสิ่งนี้กับ. flv -> mp3 แต่ฉันไม่รู้พารามิเตอร์บรรทัดคำสั่งสำหรับ mp4-> mp3 ตัวอย่างเช่น flv -> mp3:

ffmpeg -i video.flv -acodec copy audio.mp3

ฉันควรใช้พารามิเตอร์ใดสำหรับ mp4 -> mp3


2
หากคุณไม่ต้องการ MP3 จริง ๆ ฉันจะไม่แปลงเสียง: MP4-> MP3 เป็นการแปลงแบบสูญเสียคุณจะสูญเสียข้อมูลต้นฉบับเพิ่มเติม
Thom Wiggers

ไม่มี ffmpeg สำหรับ Ubuntu 14.04 อีกต่อไป
Louis

@ThomWiggers จำเป็นต้องสูญเสียหรือไม่ ฉันไม่ทราบวิธีการเข้ารหัส mp4 แต่ตราบใดที่คุณสามารถแยกวิดีโอและเสียงมันไม่ควรจะเป็นอย่างนั้น
ตรง

คำถามเดิมของคำถามนี้ไม่ชัดเจนว่าเสียงถูกเข้ารหัสอย่างไร - ซึ่งมีการเปลี่ยนแปลงในการแก้ไข การรีมิกซ์ไม่จำเป็นต้องสูญเสีย
Thom Wiggers

คำตอบ:


150

คำสั่งพื้นฐานคือ:

ffmpeg -i filename.mp4 filename.mp3

หรือ

ffmpeg -i video.mp4 -b:a 192K -vn music.mp3

ตรวจสอบ URL นี้: วิดีโอ MP4 เป็นไฟล์ MP3 โดยใช้ ffmpeg (Ubuntu 9.10 Karmic Koala)

หมายเหตุ:อูบุนตูไม่จ่าย FFmpeg แต่ส้อมชื่อLibav ไวยากรณ์เหมือนกัน - ใช้avconvแทนffmpegตัวอย่างข้างต้น


3
ขอขอบคุณ! คุณภาพนี้ดีที่สุดหรือฉันสามารถทำได้ดีกว่า

ลองกับ 320kbs en.wikipedia.org/wiki/MP3#Bit_rate

ไม่มี ffmpeg สำหรับ Ubuntu 14.04 อีกต่อไป
Louis

2
@Louis คุณยังสามารถดาวน์โหลดได้จากffmpeg.org/download.html
slhck

1
@Louis - เหมือนกันสำหรับ 14.10 แต่เห็นได้ชัดว่ากำลังกลับมาใน 15.04: askubuntu.com/questions/432542//
วิลฟ์

52

วิธีที่ดีกว่าในการเข้ารหัส MP3 คือการใช้-q:aอัตราบิตผันแปร

ffmpeg -i k.mp4 -q:a 0 -map a k.mp3

qตัวเลือกเท่านั้นที่สามารถนำมาใช้กับ libmp3lame และสอดคล้องกับกะพร่องกะแพร่ง-Vตัวเลือก ดู:


@slhck ... มันเป็นจุดที่ดี แต่ฉันเพิ่งทดสอบไฟล์วิดีโอและปล่อยให้-vnเพียงคัดลอกกระแสข้อมูลเสียง ฉันคิดว่า ffmpeg จะต้องมีวิธีการตรวจสอบความแตกต่างบางคน (ฉันเพียงแค่การตรวจสอบไฟล์ที่มี ffprobe และวิดีโอสตรีมเป็น 1 มากกว่าปกติ 0 และมีบางส่วนเมตาcomment : Cover (front))
evilsoup

หนึ่งนี้ในที่สุดก็เล่นเครื่องเล่นเพลง Android ขอบคุณ
michalzuber

1
และการแปลงทั้งไดเรกทอรี (รวมถึงชื่อไฟล์ด้วยช่องว่าง) ด้วยคำสั่งดังกล่าว: สำหรับฉันใน * .mp4; ทำ ffmpeg -i "$ i" -q: a 0 -map a "$ (basename" $ ​​{i / .mp4} "). mp3"; ทำ;
kingSlayer

mp3 ที่ได้นั้นแตกต่างจากคำสั่ง vanilla ffmpeg -i vid.mp4 audio.mp3ในคำตอบของ @Naga Harish M อย่างไร การสูญเสียน้อยลง?
จริงใจ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.