使用ffmpeg将音频文件转换为mp3


159

我需要使用ffmpeg将音频文件转换为mp3。

当我将命令写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编解码器。我在正确的轨道上吗?

Answers:


230

您可以使用以下命令:

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

此示例中使用的参数的说明:

  • -i - 输入文件

  • -vn -禁用视频,以确保如果源是视频文件,则不包含任何视频(包括专辑封面图像)

  • -ar-设置音频采样频率。对于输出流,默认情况下将其设置为相应输入流的频率。对于输入流,此选项仅对音频捕获设备和原始多路分配器有意义,并已映射到相应的多路分配器选项。

  • -ac-设置音频通道数。对于输出流,默认情况下将其设置为输入音频通道的数量。对于输入流,此选项仅对音频捕获设备和原始多路分配器有意义,并已映射到相应的多路分配器选项。所以在这里用来确保它是立体声的(2声道)

  • -b:a -将音频比特率转换为精确的每秒192kbit


5
这说明了ffmpeg比特率参数的区别-qscale:a用于VBR和-b:aCBR。ABR编码是可能的,但在其他位置有详细说明。
1934286 '17年

2
我将-b:a替换为-q:a 2,这将使
VBR〜192

@apanloco对我来说,将-b更改为-q绝对可以消除声音。完全不使用任何选项,或使用答案中提供的选项,听起来实际上与源.wav相同。
迈克尔·泰特

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 '16

4
添加-b:a 128k128 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 2014年

8
这不会导致MP3文件
M13R

2
尽管大小相同,但是这些mp2文件不能在 mp3 中在网络浏览器中播放。甚至没有Flash Player。它们唯一的好处是它们需要更少的cpu进行编码,但是缺点并不值得。
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 mp2MP2生成,而不是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文件中,然后运行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"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.