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

Dan*_*ler 3 python audio mp3 encoder pydub

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

输出流#0:0的自动编码器选择失败。mp3格式的默认编码器可能已禁用。请手动选择编码器

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

PS:My Pydub可以打开mp3文件,没有任何问题。我正在使用Windows和Libav。

Emi*_*iel 5

另一个解决方案对我不起作用。对我来说,问题是ffmpegAnaconda随附的版本似乎未使用编码器进行编译。所以代替:

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
  • 打开新的终端窗口。
  • brew install ffmpeg --with-libmp3lame
  • ffmpeg -codecs | grep mp3,以检查是否有编码器(现在有!)。


Jia*_*aro 3

ffmpeg -codecs您可以使用或找到可用的编解码器,avconv -codecs并且在mp3您会看到类似以下内容的行:

\n\n
DEA.L. mp3                  MP3 (MPEG audio layer 3) (decoders: mp3 mp3float mp3_at ) (encoders: libmp3lame )\n
Run Code Online (Sandbox Code Playgroud)\n\n

D表示 ffmpeg 可以解码
\nE表示它可以编码
\nA表示它是音频编解码器
\nL表示它是有损编码

\n\n

但最重要的部分是encoders: \xe2\x80\xa6部分

\n\n

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

\n\n
from pydub import AudioSegment\nsound = AudioSegment.from_file(\xe2\x80\xa6)\nsound.export("/path/to/output.mp3", codec="libmp3lame")\n
Run Code Online (Sandbox Code Playgroud)\n