Chuyển đổi tập tin âm thanh sang mp3 bằng ffmpeg


159

Tôi cần chuyển đổi tập tin âm thanh sang mp3 bằng ffmpeg.

Khi tôi viết lệnh như ffmpeg -i audio.ogg -acodec mp3 newfile.mp3, tôi nhận được lỗi:

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

Tôi cũng đã chạy lệnh này:

 ffmpeg -formats | grep mp3

và nhận được điều này trong phản ứng:

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

Tôi đoán rằng codec mp3 không được cài đặt. Tôi có đang đi đúng hướng ở đây không?

Câu trả lời:


230

Bạn có thể sử dụng lệnh này:

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

Giải thích về các đối số được sử dụng trong ví dụ này:

  • -i - tập tin đầu vào

  • -vn - Tắt video, để đảm bảo không có video (bao gồm ảnh bìa album) được bao gồm nếu nguồn sẽ là tệp video

  • -ar- Đặt tần số lấy mẫu âm thanh. Đối với các luồng đầu ra, nó được đặt theo mặc định theo tần số của luồng đầu vào tương ứng. Đối với các luồng đầu vào, tùy chọn này chỉ có ý nghĩa đối với các thiết bị thu âm và bộ giải thô và được ánh xạ tới các tùy chọn bộ giải mã tương ứng.

  • -ac- Đặt số lượng kênh âm thanh. Đối với các luồng đầu ra, nó được đặt theo mặc định cho số lượng kênh âm thanh đầu vào. Đối với các luồng đầu vào, tùy chọn này chỉ có ý nghĩa đối với các thiết bị thu âm và bộ giải thô và được ánh xạ tới các tùy chọn bộ giải mã tương ứng. Vì vậy, được sử dụng ở đây để đảm bảo nó là âm thanh nổi (2 kênh)

  • -b:a - Chuyển đổi tốc độ bit âm thanh thành chính xác 192kbit mỗi giây


5
Điều này lưu ý sự khác biệt cho các đối số bitrate ffmpeg . -qscale:adành cho VBR và -b:adành cho CBR. Mã hóa ABR là có thể nhưng chi tiết ở một nơi khác.
1934286

2
Tôi sẽ thay thế -b: a bằng -q: a 2, sẽ cung cấp cho VBR ~ 192 thay vì CBR
apanloco

@apanloco đối với tôi, thay đổi -b thành -q hoàn toàn làm giảm âm thanh. Không sử dụng tùy chọn nào cả hoặc sử dụng các tùy chọn được trình bày trong câu trả lời, âm thanh gần giống với nguồn .wav.
Michael Teter

76

1) wav để mp3

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

2) để mp3

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

3) ac3 sang mp3

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

4) aac sang mp3

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

Làm thế nào để bạn chỉ định bitrate mp3?
Suragch

4
Thêm -b:a 128kcho 128 kbps.
Gyan

5
Hoặc thậm chí ngắn hơn mà không có acodec: ffmpeg -i audio.aac audio.mp3
Timo

Làm thế nào để chuyển đổi từ .mp3 sang .ogg?
Cristea Victor

18

Đừng bận tâm,

Tôi đang chuyển đổi tập tin âm thanh của mình sang mp2 bằng cách sử dụng lệnh:

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

Lệnh này hoạt động hoàn hảo.

Tôi biết rằng điều này thực sự chuyển đổi các tệp thành định dạng mp2, nhưng sau đó kích thước tệp kết quả là như nhau ..


2
Tạo tệp sóng
LtWorf

8
Điều này không dẫn đến một tệp mp3
m13r

2
Mặc dù kích thước là như nhau, các tệp mp2 này không thể phát được trong trình duyệt web , vì chúng không phải là mp3. Ngay cả với một máy nghe nhạc flash. Lợi ích duy nhất họ có là họ yêu cầu ít cpu hơn để mã hóa, nhưng nhược điểm không đáng có.
Daniel F

3
Đây không phải là câu trả lời được chấp nhận, vì nó không trả lời chính xác câu hỏi.
Revierpost

18

Để xử lý hàng loạt với các tệp trong thư mục nhắm đến 190 VBR và phần mở rộng tệp = .mp3 thay vì .ac3.mp3, bạn có thể sử dụng mã sau đây

Thay đổi .ac3 thành bất kỳ định dạng âm thanh nguồn nào.

cài đặt mp3 ffmpeg

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

13

Đối với các tệp xử lý hàng loạt trong thư mục:

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

Tập lệnh này chuyển đổi tất cả các tệp "wav" trong thư mục thành các tệp mp3 và thêm phần mở rộng mp3

ffmpeg phải được cài đặt. (Xem câu trả lời khác)


1
Với -f mp2MP2 được tạo ra, không phải MP3. Đổi nó thành-f mp3
Gyan

3
Lệnh trên tạo các tệp được đặt tên wav.mp3. Để có được các tệp có phần mở rộng tệp chính xác, hãy thay đổi lệnh thành : for i in *.wav; do ffmpeg -i "$i" -f mp3 "${i%.*}.mp3"; done, tức là thêm .*sau i%.
Suzana

11

Tôi đã phải thanh lọc ffmpeg của mình và sau đó cài đặt một cái khác từ ppa:

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

Sau đó chuyển đổi:

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

4
đây là con đường ngắn, nhưng nếu bạn muốn chỉ định chất lượng kb mỗi giây, hãy sử dụng -ab 192k
wrivas

7

Như được mô tả ở đây , phần mở rộng đầu vào và đầu ra sẽ được phát hiện bởi ffmpegvì vậy không cần phải lo lắng về các định dạng, chỉ cần chạy lệnh này:

ffmpeg -i inputFile.ogg outputFile.mp3



2

Chất lượng cao cho Mac OS hoạt động hoàn hảo!

ffmpeg -i input.wma -q:a 0 output.mp3


1

Hãy thử Liên kết xây dựng tĩnh FFmpeg

Tài liệu: https://www.johnvansickle.com/ffmpeg/

Lưu trữ bản dựng tĩnh trên máy chủ của bạn trong cùng thư mục

$ffmpeg = dirname(__FILE__).'/ffmpeg';

$command = $ffmpeg.'ffmpeg -i audio.ogg -acodec libmp3lame audio.mp3';

shell_exec($command);

0

Nếu bạn có một thư mục và thư mục con chứa đầy wav mà bạn muốn chuyển đổi, hãy đặt lệnh bên dưới trong một tệp, lưu nó trong tệp .bat trong thư mục gốc của thư mục nơi bạn muốn chuyển đổi, rồi chạy tệp 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"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.