Pydub 导出错误 - 手动选择编码器

Pydub export error - Choose encoder manually

我试图在 pydub 中将文件导出为 mp3,但出现此错误:

Automatic encoder selection failed for output stream #0:0. Default encoder for format mp3 is probably disabled. Please choose an encoder manually

如何 select 手动编码器,默认编码器是什么,如何启用它?

PS:我的Pydub打开mp3文件没问题。我正在使用 Windows 和 Libav。

您可以找到 ffmpeg -codecsavconv -codecs 可用的编解码器,在 mp3 行上您会看到类似以下内容:

DEA.L. mp3                  MP3 (MPEG audio layer 3) (decoders: mp3 mp3float mp3_at ) (encoders: libmp3lame )

D表示ffmpeg可以解码
E表示可以编码
A 表示它是音频编解码器
L 表示它是有损编码

但最重要的部分是 encoders: … 部分

认为 您需要选择列出的编码器之一并告诉 pydub 使用它(我不确定为什么,这在我的机器上不需要- 但它可能取决于你的 ffmpeg 安装)

from pydub import AudioSegment
sound = AudioSegment.from_file(…)
sound.export("/path/to/output.mp3", codec="libmp3lame")

另一个解决方案对我不起作用。我的问题是随 Anaconda 安装的 ffmpeg 版本似乎没有使用编码器编译。所以而不是:

DEA.L. mp3 MP3 (MPEG audio layer 3) (decoders: mp3 mp3float mp3_at ) (encoders: libmp3lame )

我看到了:

DEA.L. mp3 MP3 (MPEG audio layer 3) (decoders: mp3 mp3float mp3_at )

没有 (encoders: ...) 部分。

我的解决方案是这样做的:

  • ffmpeg -codecs | grep mp3,检查是否有编码器(没有!)。
  • conda uninstall ffmpeg
  • 打开新终端window.
  • brew install ffmpeg --with-libmp3lame
  • ffmpeg -codecs | grep mp3,检查是否有编码器(现在有!)。

我遇到了与来自 conda-forge 频道的 ffmpegEmiel, where the ffmpeg version available in Anaconda did have an mp3 encoder. I solved the problem another way, by installing this version 相同的问题。我用过:

conda install -n <anaconda-env> -c conda-forge ffmpeg 

现在使用 ffmpeg -codecs | grep mp3 mp3 编码器显示:

 DEA.L. mp3      MP3 (MPEG audio layer 3) (decoders: mp3float mp3 ) (encoders: libmp3lame libshine )