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

当我把命令写成ffmpeg -i audio时。ogg -acodec 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编解码器没有安装。我的思路对吗?


当前回答

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

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

Ffmpeg mp3设置

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

其他回答

似乎没有人使用find,它让您在一行上完成所有操作。基于这个答案和这篇文章

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

对于播客来说,128k对我来说已经足够了。你可以把这个参数调整到其他参数旁边:

-i - input file -vn - Disable video, to make sure no video (including album cover image) is included if the source would be a video file -ar - Set the audio sampling frequency. For output streams it is set by default to the frequency of the corresponding input stream. For input streams this option only makes sense for audio grabbing devices and raw demuxers and is mapped to the corresponding demuxer options. -ac - Set the number of audio channels. For output streams it is set by default to the number of input audio channels. For input streams this option only makes sense for audio grabbing devices and raw demuxers and is mapped to the corresponding demuxer options. So used here to make sure it is stereo (2 channels) -b:a - Converts the audio bitrate to be exact 192kbit per second

此外,这还说明了ffmpeg比特率参数的区别

使用之前的答案,这里是一个别名,通过将以下添加到.bashrc/.zshrc:

alias convert-aac="cd ~/Downloads && aac-to-mp3"

# Convert all .aac files into .mp3 files in the current folder, don't convert if a mp3 file already exists
aac-to-mp3(){
    find . -type f -iname "*.aac" -exec \
        bash -c 'file="$1"; ffmpeg -n -i "$file" -acodec libmp3lame "${file%.aac}.mp3";' _ '{}' \;
}

用法: Convert-aac (shell)

感谢https://stackoverflow.com/a/70339561/2391795, https://stackoverflow.com/a/12952172/2391795和https://unix.stackexchange.com/a/683488/60329

我必须清除我的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

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

的VBR编码:

ffmpeg -vn -ar 44100 -ac 2 -q:a 1 -codec:a libmp3lame output.mp3

高质量的Mac OS工作完美!

Ffmpeg -i input.wma -q: 0输出。mp3