แยก wav จาก mp4 ในขณะที่รักษาคุณภาพสูงสุดไว้


39

ฉันอ่านเอกสารและสามารถแยกwavไฟล์จากmp4ไฟล์ด้วยคำสั่ง:

ffmpeg -i my_video.mp4 output_audio.wav

อย่างไรก็ตามฉันจะควบคุมคุณภาพของwavไฟล์ได้อย่างไร (เช่นพูดว่าฉันต้องการรักษาคุณภาพของเสียงต้นฉบับให้มากที่สุด)

คำตอบ:


20

wavโดยปกติจะมีไฟล์เสียงที่ถูกบีบอัดและที่เป็นค่าเริ่มต้นเมื่อผลิตไฟล์โดยใช้wav ffmpegดังนั้นคำสั่งของคุณจะรักษาคุณภาพสูงสุดไว้แล้วเนื่องจากไม่มีการบีบอัดแบบ lossy (หรือการบีบอัดใด ๆ ) เพื่อลดคุณภาพ

สมมติว่าเสียงต้นฉบับถูกบีบอัดคุณสามารถรักษาคุณภาพเดิมไว้ได้โดยไม่ต้องมีไฟล์ขนาดใหญ่สำหรับเสียงที่ไม่ได้บีบอัดโดยเพียงแค่คัดลอกไฟล์เสียงต้นฉบับ (โดยไม่มีวิดีโอ) ไปยังmp4ไฟล์ใหม่:

ffmpeg -i my_video.mp4 -c copy -map 0:a output_audio.mp4

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


ขอบคุณ อัตราการสุ่มตัวอย่างและจำนวนไบต์ต่อวินาทีเป็นอย่างไร ffmpeg เลือกสิ่งเหล่านี้โดยอัตโนมัติอย่างไร
Amelio Vazquez-Reina

อัตราตัวอย่างจะเหมือนกับของอินพุต เพราะมันเป็นเรื่องไม่ถูกบีบอัด, อัตราบิตสำหรับwavไฟล์เป็นเพียงอัตราตัวอย่าง × ขนาดของกลุ่มตัวอย่าง × จำนวนช่อง หากคุณต้องการลดคุณภาพคุณสามารถขอffmpegให้ทดลองใช้ในอัตราที่ต่ำกว่าให้เปลี่ยนเป็น 8 บิต PCM หรือดาวน์มิกซ์เป็นขาวดำ แต่ไม่ได้ทำตามค่าเริ่มต้น
mark4o

1
BTW คุณสามารถขอให้มันทำการสุ่มตัวอย่างอีกครั้งในอัตราที่สูงขึ้น แต่นั่นจะเป็นการเพิ่มขนาดของไฟล์และไม่ใช่คุณภาพดังนั้นจึงไม่มีประเด็นที่ว่าถ้าคุณต้องการอัตราตัวอย่างที่เฉพาะเจาะจง
mark4o

1
ในระบบของฉันกับ Ubuntu 14.04 ฉันต้องใช้-acodec copyแทน-c copy -map 0:a
Daniel Alder

สิ่งนี้ไม่ส่งออกเป็นไฟล์ wave และไม่ตอบคำถาม
แอนดรู

22

แยกเสียง Lossless / Lossy จากวิดีโอ ( flv / mp4 to wav / flac / mp3) ใช้ffmpegรุ่น 2.3.1 ใน Ubuntu 14.04

เยี่ยมชม: http://howto-pages.org/ffmpeg/

ก่อนอื่นให้ค้นหาข้อมูลพื้นฐานจากแหล่งที่มา เปิดวิดีโอใน VLC Player ไปที่

> Tools > Codec Information 
> Stream 0 (Video/ Codec/ Resolution/ Frame rate) 
> Stream 1 (Audio/ Codec/ Channel/ Sample rate)

พิจารณาไฟล์อินพุต ( -i) เช่นinput.mp4หรือไฟล์อื่น ๆflv, avi, ...) ในการลบวิดีโอ ( -vn) และยกเลิกการบีบอัดสัญญาณเสียง ( output.wav) ที่อัตราตัวอย่าง 44100 Hz ( -ar 44100) ในรหัสชีพจรที่ปรับด้วยตัวอย่างที่ลงชื่อ, 16 บิต, endian น้อย ( -acodec pcm_s16le) และ 2 ช่องสัญญาณ (สเตอริโอ) ( -ac 2) ใช้คำสั่งต่อไปนี้

ffmpeg -i input.mp4 -vn -acodec pcm_s16le -ar 44100 -ac 2 output.wav

อื่น ๆมีตัวเลือก-acodecmp3 flac m4a

-acode flacแปลงเป็นไฟล์ 24 บิต สำหรับการสุ่มตัวอย่าง 16 บิตควรจะเป็น

ffmpeg -i input.mp4 -acodec flac -bits_per_raw_sample 16 -ar 44100 output.flac

ไฟล์ wav และ flac มีขนาดใหญ่กว่าไฟล์ mp4

ac3การแปลงใช้งานได้-acodec 3F2R/LFE -ac 6แต่ creats dummy แทร็ค 4 แทร็กตามที่ตรวจสอบใน Audacity

สำหรับการแปลง mp3 เพียงใช้

ffmpeg -i input.mp4 -vn -acodec mp3 -ab 320k -ar 44100 -ac 2 output.mp3

หนึ่งสามารถรับตัวเลือกเพิ่มเติมสำหรับทั้งอินพุตและเอาต์พุตโดยลองจากรายการที่ได้รับจากบรรทัดคำสั่งบนเทอร์มินัล

$ ffmpeg -help

1
นี่ไม่ได้ตอบคำถาม OP ทราบวิธีการแยกไฟล์เสียงเป็นไฟล์ WAV เรียบร้อยแล้ว พวกเขากำลังถามว่าจะควบคุมคุณภาพอย่างไรซึ่งแน่นอนว่าเป็นไปไม่ได้จริง ๆ และดังนั้นจึงควรเป็นคำตอบ (เช่นของ mark4o) MP3 และ FLAC นั้นอยู่นอกขอบเขตที่นี่
slhck

ฉันมาที่ลิงค์นี้เพื่อหาวิธีแก้ปัญหาและเมื่อฉันแก้ไขปัญหาฉันได้รับมากขึ้นตามที่ได้กล่าวไว้ ปัญหาที่ฉันเข้าใจและฉันก็ทำงานด้วยเช่นกันคือ "ฉันจะควบคุมคุณภาพของไฟล์ wav ได้อย่างไร (เช่นพูดว่าฉันต้องการรักษาคุณภาพของเสียงต้นฉบับให้มากที่สุด") ฉันไม่ใช่ช่างเทคนิค แต่เป็นนักอดิเรกและเป็นมือใหม่สำหรับ Ubuntu และ ffmpeg $ ffmpeg -i input.mp4 ยังให้คุณภาพเริ่มต้นทั้งหมดและสามารถเพิ่มตัวเลือกตามลำดับเพื่อให้ได้รับประโยชน์สูงสุด
dr.murli

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