另一个解决方案对我不起作用。对我来说,问题是ffmpeg
Anaconda随附的版本似乎未使用编码器进行编译。所以代替:
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
,以检查是否有编码器(现在有!)。ffmpeg -codecs
您可以使用或找到可用的编解码器,avconv -codecs
并且在mp3
您会看到类似以下内容的行:
DEA.L. mp3 MP3 (MPEG audio layer 3) (decoders: mp3 mp3float mp3_at ) (encoders: libmp3lame )\n
Run Code Online (Sandbox Code Playgroud)\n\nD
表示 ffmpeg 可以解码
\nE
表示它可以编码
\nA
表示它是音频编解码器
\nL
表示它是有损编码
但最重要的部分是encoders: \xe2\x80\xa6
部分
我认为您需要选择列出的编码器之一并告诉 pydub 使用它(我不确定为什么,我的机器不需要这 - 但这可能取决于您的 ffmpeg 安装)
\n\nfrom 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