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

Hri*_*ari 126 media audio ffmpeg

我需要使用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
Run Code Online (Sandbox Code Playgroud)

我也运行了这个命令:

 ffmpeg -formats | grep mp3
Run Code Online (Sandbox Code Playgroud)

得到这个回应:

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
Run Code Online (Sandbox Code Playgroud)

我猜这个mp3编解码器没有安装.我在这儿吗?有人可以帮我从这里出去吗 ?

Fra*_*ank 174

可以在此处找到非常完整的ffmpeg参数列表:

http://www.catswhocode.com/blog/19-ffmpeg-commands-for-all-needs

所以你可以使用这个命令:

ffmpeg -i input.wav -vn -ar 44100 -ac 2 -b:a 192k output.mp3
Run Code Online (Sandbox Code Playgroud)

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

  • -i - 输入文件

  • -vn - 禁用视频,以确保如果源是视频文件,则不包含视频

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

  • -ac - 设置音频通道的数量.对于输出流,默认设置为输入音频通道的数量.对于输入流,此选项仅对音频抓取设备和原始分路器有意义,并映射到相应的分路器选项.所以用这里确保它是立体声(2声道)

  • -b:a- 实际上似乎已被更改,因此应更换为更新的ffmpeg版本,以-i 将音频比特率转换为精确的每秒192kbit

  • -vn - 强制输入或输出文件格式.通常会自动检测输入文件的格式,并从输出文件的文件扩展名中猜出格式,因此在大多数情况下不需要此选项.

  • 酷批`for f in *.wma; 执行 ffmpeg -i "$f" -vn -ar 44100 -ac 2 -b:a 192k "${f%.*}.mp3"; 完成` (10认同)
  • @nikt:`man ffmpeg`是最新的! (7认同)
  • [这注明了ffmpeg比特率参数的区别](https://trac.ffmpeg.org/wiki/Encode/MP3).`-qscale:a`用于VBR,`-b:a`用于CBR.ABR编码是可能的,但在不同的地方详述. (4认同)
  • 我将 -b:a 替换为 -q:a 2,这将给出 VBR ~192 而不是 CBR (4认同)
  • @Ax_ 需要注意的是,您的解决方案仅适用于非 Windows 安装。要从 Windows 命令行执行此操作,您可以使用以下命令: `for %f in (*.wma) do ffmpeg.exe -i "%f" -vn -ar 44100 -ac 2 -b:a 192k "%f .mp3"` 这将为当前文件夹中的每个 wma 文件创建文件,并在“.wma”之后附加原始名称和“.mp3”。例如 `input.wma -> input.wma.mp3` (4认同)

Ija*_*d N 53

1)wav到mp3

ffmpeg -i audio.wav -acodec libmp3lame audio.mp3
Run Code Online (Sandbox Code Playgroud)

2)ogg到mp3

ffmpeg -i audio.ogg -acodec libmp3lame audio.mp3
Run Code Online (Sandbox Code Playgroud)

3)ac3到mp3

ffmpeg -i audio.ac3 -acodec libmp3lame audio.mp3
Run Code Online (Sandbox Code Playgroud)

4)aac到mp3

ffmpeg -i audio.aac -acodec libmp3lame audio.mp3
Run Code Online (Sandbox Code Playgroud)

在此处获取所有ffmpeg转换格式.

  • 添加`-b:128k`为128 kbps. (4认同)
  • 甚至更短而没有`acodec`:ffmpeg -i audio.aac audio.mp3 (3认同)

Hri*_*ari 18

没关系,

我正在使用以下命令将我的音频文件转换为mp2:

ffmpeg -i input.wav -f mp2 output.mp3
Run Code Online (Sandbox Code Playgroud)

这个命令很完美.

我知道这实际上将文件转换为mp2格式,但结果文件大小相同..

  • 这不会导致mp3文件 (7认同)
  • 这不应该是公认的答案,因为它没有正确回答问题。 (6认同)
  • 生成波形文件 (2认同)
  • 虽然大小相同,但这些mp2文件无法在网络浏览器中播放**,因为它们不是mp3.甚至没有Flash播放器.他们唯一的好处是他们需要更少的CPU编码,但缺点是不值得. (2认同)

pla*_*anb 14

对于文件夹中文件的批处理,目标是190 VBR,文件扩展名= .mp3而不是.ac3.mp3,您可以使用以下代码

将.ac3更改为源音频格式.

ffmpeg mp3设置

for f in *.ac3 ; do ffmpeg -i "$f" -acodec libmp3lame -q:a 2 "${f%.*}.mp3"; done
Run Code Online (Sandbox Code Playgroud)


Kas*_*a K 14

如此处所述输入和输出扩展名将被检测到,ffmpeg因此无需担心格式,只需运行以下命令:

ffmpeg -i inputFile.ogg outputFile.mp3


Kom*_*omu 10

我不得不清除我的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
Run Code Online (Sandbox Code Playgroud)

然后转换:

 ffmpeg -i audio.ogg -f mp3 newfile.mp3
Run Code Online (Sandbox Code Playgroud)

  • 这是短路,但如果要指定每秒的质量kb,请使用-ab 192k (4认同)

MKK*_*MKK 10

对于文件夹中的批处理文件:

for i in *.wav; do ffmpeg -i "$i" -f mp3 "${i%}.mp3"; done
Run Code Online (Sandbox Code Playgroud)

此脚本将文件夹中的所有"wav"文件转换为mp3文件并添加mp3扩展名

必须安装ffmpeg.(见其他答案)

  • 上面的命令创建名为`wav.mp3`的文件.要获取具有正确文件扩展名的文件,请将命令更改为:`for i in*.wav; do ffmpeg -i"$ i"-f mp3"$ {i%.*}.mp3"; 完成`,即在`i%`之后添加`.*`. (3认同)

Pab*_*o A 6

似乎没有人使用find,它可以让你在一行中完成所有事情。基于这个答案这篇文章

find . -type f -iname "*.webm" -exec bash -c 'FILE="$1"; ffmpeg -i "${FILE}" -vn -ab 128k "${FILE%.webm}.mp3";' _ '{}' \;
Run Code Online (Sandbox Code Playgroud)

对于例如播客,128k 对我来说就足够了。您可以在其他一些参数旁边调整该参数:

  • -i- 输入文件
  • -vn- 禁用视频,以确保如果源是视频文件则不包含视频(包括专辑封面图像)
  • -ar- 设置音频采样频率。对于输出流,它默认设置为相应输入流的频率。对于输入流,此选项仅对音频抓取设备和原始解复用器有意义,并映射到相应的解复用器选项。
  • -ac-设置音频通道数。对于输出流,它默认设置为输入音频通道的数量。对于输入流,此选项仅对音频抓取设备和原始解复用器有意义,并映射到相应的解复用器选项。所以用在这里来确保它是立体声(2 个通道)
  • -b:a- 将音频比特率转换为精确的 192kbit 每秒


小智 5

https://trac.ffmpeg.org/wiki/Encode/MP3

VBR编码:

ffmpeg -i input.ogg -vn -ar 44100 -ac 2 -q:a 1 -codec:a libmp3lame output.mp3
Run Code Online (Sandbox Code Playgroud)

  • 你忘记输入了。 (3认同)