แปลงไฟล์เสียงเป็น mp3 โดยใช้ ffmpeg


159

ฉันต้องการแปลงไฟล์เสียงเป็น mp3 โดยใช้ ffmpeg

เมื่อฉันเขียนคำสั่งเป็นffmpeg -i audio.ogg -acodec mp3 newfile.mp3ฉันได้รับข้อผิดพลาด:

FFmpeg version 0.5.2, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: 
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  built on Jun 24 2010 14:56:20, gcc: 4.4.1
Input #0, mp3, from 'ZHRE.mp3':
  Duration: 00:04:12.52, start: 0.000000, bitrate: 208 kb/s
    Stream #0.0: Audio: mp3, 44100 Hz, stereo, s16, 256 kb/s
Output #0, mp3, to 'audio.mp3':
    Stream #0.0: Audio: 0x0000, 44100 Hz, stereo, s16, 64 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
Unsupported codec for output stream #0.0

ฉันยังใช้คำสั่งนี้:

 ffmpeg -formats | grep mp3

และได้รับสิ่งนี้ในการตอบสนอง:

FFmpeg version 0.5.2, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: 
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  built on Jun 24 2010 14:56:20, gcc: 4.4.1
 DE mp3             MPEG audio layer 3
 D A    mp3             MP3 (MPEG audio layer 3)
 D A    mp3adu          ADU (Application Data Unit) MP3 (MPEG audio layer 3)
 D A    mp3on4          MP3onMP4
 text2movsub remove_extra noise mov2textsub mp3decomp mp3comp mjpegadump imxdump h264_mp4toannexb dump_extra

ฉันเดาว่าตัวแปลงสัญญาณ mp3 ไม่ได้ติดตั้ง ฉันมาถูกทางแล้วใช่ไหม

คำตอบ:


230

คุณสามารถใช้คำสั่งนี้:

ffmpeg -i input.wav -vn -ar 44100 -ac 2 -b:a 192k output.mp3

คำอธิบายของอาร์กิวเมนต์ที่ใช้ในตัวอย่างนี้:

  • -i - ไฟล์อินพุต

  • -vn - ปิดการใช้งานวิดีโอเพื่อให้แน่ใจว่าไม่มีวิดีโอ (รวมถึงภาพหน้าปกอัลบั้ม) หากแหล่งข้อมูลนั้นเป็นไฟล์วิดีโอ

  • -ar- ตั้งค่าความถี่การสุ่มตัวอย่างเสียง สำหรับเอาต์พุตสตรีมจะถูกตั้งค่าตามความถี่ของสตรีมอินพุตที่สอดคล้องกัน สำหรับอินพุตสตรีมตัวเลือกนี้เหมาะสมสำหรับอุปกรณ์จับเสียงและตัวรับข้อมูลดิบเท่านั้นและจะถูกจับคู่กับตัวเลือก demuxer ที่เกี่ยวข้อง

  • -ac- ตั้งค่าจำนวนช่องสัญญาณเสียง สำหรับเอาต์พุตสตรีมจะถูกตั้งค่าตามจำนวนช่องสัญญาณเสียงเข้าเป็นค่าเริ่มต้น สำหรับอินพุตสตรีมตัวเลือกนี้เหมาะสมสำหรับอุปกรณ์จับเสียงและตัวรับข้อมูลดิบเท่านั้นและจะถูกจับคู่กับตัวเลือก demuxer ที่เกี่ยวข้อง ใช้ที่นี่เพื่อให้แน่ใจว่าเป็นสเตอริโอ (2 ช่องสัญญาณ)

  • -b:a - แปลงบิตเรตเสียงเป็น 192kbit ที่แน่นอนต่อวินาที


5
บันทึกนี้ความแตกต่างสำหรับข้อโต้แย้ง ffmpeg บิตเรตที่ -qscale:aสำหรับ VBR และ-b:aสำหรับ CBR การเข้ารหัส ABR นั้นเป็นไปได้ แต่มีรายละเอียดในที่อื่น
1934286

2
ฉันจะแทนที่ -b: a ด้วย -q: a 2 ซึ่งจะให้ VBR ~ 192 แทน CBR
apanloco

@apanloco สำหรับฉันเปลี่ยน -b เป็น -q ลองดูเสียง ไม่ใช้ตัวเลือกเลยหรือใช้ตัวเลือกที่แสดงในคำตอบเสียงแทบจะเหมือนกับแหล่งที่มา. wav
Michael Teter

76

1) wav เป็น mp3

ffmpeg -i audio.wav -acodec libmp3lame audio.mp3

2) ogg เป็น mp3

ffmpeg -i audio.ogg -acodec libmp3lame audio.mp3

3) ac3 เป็น mp3

ffmpeg -i audio.ac3 -acodec libmp3lame audio.mp3

4) aac เป็น mp3

ffmpeg -i audio.aac -acodec libmp3lame audio.mp3

คุณจะระบุบิตเรต mp3 ได้อย่างไร
Suragch

4
เพิ่ม-b:a 128kเป็น 128 kbps
Gyan

5
หรือน้อยกว่านี้acodec: ffmpeg -i audio.aac audio.mp3
Timo

วิธีการแปลงจาก. mp3 เป็น. ogg
Cristea Victor

18

ไม่เป็นไร,

ฉันกำลังแปลงไฟล์เสียงเป็น mp2 โดยใช้คำสั่ง:

ffmpeg -i input.wav -f mp2 output.mp3

คำสั่งนี้ทำงานได้อย่างสมบูรณ์

ฉันรู้ว่าสิ่งนี้จริง ๆ แล้วแปลงไฟล์เป็นฟอร์แมต mp2 แต่ขนาดไฟล์ที่ได้จะเท่ากัน ..


2
สร้างไฟล์คลื่น
LtWorf

8
สิ่งนี้ไม่ส่งผลให้ไฟล์ mp3
m13r

2
ในขณะที่ขนาดเท่ากันไฟล์ MP2 เหล่านี้ไม่สามารถเล่นได้ในเว็บเบราว์เซอร์เนื่องจากไม่ใช่ไฟล์ MP3 ไม่ถึงกับเล่นแฟลช ประโยชน์อย่างเดียวที่พวกเขามีคือพวกเขาต้องการซีพียูน้อยลงในการเข้ารหัส แต่ข้อเสียไม่คุ้มค่า
Daniel F

3
สิ่งนี้ไม่ควรเป็นคำตอบที่ยอมรับได้เนื่องจากไม่สามารถตอบคำถามได้อย่างถูกต้อง
reinierpost

18

สำหรับการประมวลผลแบบแบตช์ด้วยไฟล์ในโฟลเดอร์โดยมีเป้าหมายที่ 190 VBR และนามสกุลไฟล์ = .mp3 แทน. ac3.mp3 คุณสามารถใช้รหัสต่อไปนี้

เปลี่ยน. ac3 เป็นรูปแบบเสียงต้นฉบับ

การตั้งค่า ffmpeg mp3

for f in *.ac3 ; do ffmpeg -i "$f" -acodec libmp3lame -q:a 2 "${f%.*}.mp3"; done

13

สำหรับไฟล์ประมวลผลแบตช์ในโฟลเดอร์:

for i in *.wav; do ffmpeg -i "$i" -f mp3 "${i%}.mp3"; done

สคริปต์นี้แปลงไฟล์ "wav" ทั้งหมดในโฟลเดอร์เป็นไฟล์ mp3 และเพิ่มนามสกุล mp3

ต้องติดตั้งffmpeg (ดูคำตอบอื่น ๆ )


1
-f mp2สร้างขึ้นด้วยMP2 ไม่ใช่ MP3 เปลี่ยนเป็น-f mp3
Gyan

3
wav.mp3คำสั่งดังกล่าวจะสร้างไฟล์ที่มีชื่อ ที่จะได้รับไฟล์ที่มีนามสกุลไฟล์ที่ถูกต้องเปลี่ยนคำสั่งดังต่อไปนี้for i in *.wav; do ffmpeg -i "$i" -f mp3 "${i%.*}.mp3"; doneคือเพิ่มหลัง.* i%
Suzana

11

ฉันต้องกำจัด ffmpeg ของฉันแล้วติดตั้งอีกอันจาก ppa:

sudo apt-get purge ffmpeg
sudo apt-add-repository -y ppa:jon-severinsson/ffmpeg 
sudo apt-get update 
sudo apt-get install ffmpeg

จากนั้นแปลง:

 ffmpeg -i audio.ogg -f mp3 newfile.mp3

4
นี่เป็นวิธีที่สั้น แต่ถ้าคุณต้องการระบุคุณภาพ kb ต่อวินาทีให้ใช้ -ab 192k
wrivas

7

ตามที่อธิบายไว้ที่นี่อินพุตและเอาต์พุตส่วนขยายจะตรวจพบโดยffmpegไม่จำเป็นต้องกังวลเกี่ยวกับรูปแบบเพียงเรียกใช้คำสั่งนี้:

ffmpeg -i inputFile.ogg outputFile.mp3





0

หากคุณมีโฟลเดอร์และโฟลเดอร์ย่อยที่เต็มไปด้วย wav ที่คุณต้องการแปลงให้ใส่คำสั่งด้านล่างในไฟล์บันทึกในไฟล์. bat ในรูทของโฟลเดอร์ที่คุณต้องการแปลงแล้วเรียกใช้ไฟล์ค้างคาว

for /R %%g in (*.wav) do start /b /wait "" "C:\ffmpeg-4.0.1-win64-static\bin\ffmpeg" -threads 16 -i "%%g" -acodec libmp3lame "%%~dpng.mp3" && del "%%g"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.