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

时间:2017-05-18 22:11:15

标签: python audio mp3 encoder pydub

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

  

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

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

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

3 个答案:

答案 0 :(得分:3)

另一种解决方案对我不起作用。对我来说问题是,与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,检查是否有编码器(没有#!t。)。
  • conda uninstall ffmpeg
  • 打开新的终端窗口。
  • brew install ffmpeg --with-libmp3lame
  • ffmpeg -codecs | grep mp3,检查是否有编码器(现在有!)。

答案 1 :(得分:2)

您可以找到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")

答案 2 :(得分:2)

我遇到了与Emiel相同的问题,其中Anaconda中可用的<DirectoryRef Id="TARGETDIR"> <Component Id="DisableWeakCipherSuites" Guid="7DBE2D50-3C00-4CEF-86CC-897C0C96E7FF" KeyPath="yes"> <RegistryKey Key="SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128" Root="HKLM" Action="createAndRemoveOnUninstall"> <RegistryValue Name="Enabled" Value="0" Type="integer" /> </RegistryKey> <RegistryKey Key="SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\Triple DES 168" Root="HKLM" Action="createAndRemoveOnUninstall"> <RegistryValue Name="Enabled" Value="0" Type="integer" /> </RegistryKey> <RegistryKey Key="SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 128/128" Root="HKLM" Action="createAndRemoveOnUninstall"> <RegistryValue Name="Enabled" Value="0" Type="integer" /> </RegistryKey> <RegistryKey Key="SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 56/128" Root="HKLM" Action="createAndRemoveOnUninstall"> <RegistryValue Name="Enabled" Value="0" Type="integer" /> </RegistryKey> </Component> </DirectoryRef> 版本确实具有mp3编码器。我通过从ffmpeg频道安装ffmpeg的{​​{3}}来解决了这个问题。我用过:

conda-forge

现在使用conda install -n <anaconda-env> -c conda-forge ffmpeg 会显示mp3编码器:

ffmpeg -codecs | grep mp3