应用实践 | 📅 2020-09-19 | ffmpeg
当执行
./ffmpeg -i A.flac A.mp3
FFmpeg
输出如下错误:
Automatic encoder selection failed for output stream #0:1. Default encoder for format mp3 (codec mp3) is probably disabled. Please choose an encoder manually.
简单说就是没有 MP3
的编码器,不能输出 MP3
文件。
检查编码器:
./ffmpeg -codecs |grep mp3
......
D.AIL. mp3 MP3 (MPEG audio layer 3) (decoders: mp3float mp3 )
D.AIL. mp3adu ADU (Application Data Unit) MP3 (MPEG audio layer 3) (decoders: mp3adufloat mp3adu )
D.AIL. mp3on4 MP3onMP4 (decoders: mp3on4float mp3on4 )
可见 MP3
格式,只有解码器,没得编码器。
FFmpeg
如需编码 MP3
格式,则需 libmp3lame
支持。
Ubuntu 需要安装: libmp3lame-dev
sudo apt-get install libmp3lame-dev -y
CentOS 需要安装: lame-devel
sudo yum install lame-devel -y
这俩是同一个东西。
然后就可以重新编译 FFmpeg
了,编译有可能遇见:
nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.
加上参数 --disable-x86asm
便是,要注意还增加了 libmp3lame
:
./configure --disable-x86asm --enable-libmp3lame
make
此时我们就获得了能输出 MP3
格式文件的 FFmpeg
了。
验证:
./ffmpeg -codecs |grep mp3
......
DEAIL. mp3 MP3 (MPEG audio layer 3) (decoders: mp3float mp3 ) (encoders: libmp3lame )
D.AIL. mp3adu ADU (Application Data Unit) MP3 (MPEG audio layer 3) (decoders: mp3adufloat mp3adu )
D.AIL. mp3on4 MP3onMP4 (decoders: mp3on4float mp3on4 )
看到 MP3
的编码器了。至此解决 FFmpeg
编码 MP3
的问题。