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 -codecs
或 avconv -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
频道的 ffmpeg
的 Emiel, 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 )
我试图在 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 -codecs
或 avconv -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
频道的 ffmpeg
的 Emiel, 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 )