使用pydub导出时出错 - 如何为pydub安装mp3编解码器?

I w*_*ges 2 python mp3 ffmpeg export pydub

我是第一次使用这个库所以我不确定这是一个错误还是我没有正确地做某事.

我想将文件导出为mp3,加载完美:

wav=AudioSegment.from_wav(Path)  #If I execute only this line, there are no errors.
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将我的文件导出到mp3时:

wav.export(r"WavOut.mp3",format="mp3")
Run Code Online (Sandbox Code Playgroud)

它会引发以下错误:

WindowsError:[错误2]系统找不到指定的文件

完整的错误报告:http://pastebin.com/3CpZBkEK

我相信我使用的语法正确.它创建了mp3输出文件,但绝对是空的,并且输入路径是正确的,因为:

os.startfile(Path) #Will work
Run Code Online (Sandbox Code Playgroud)

另外,我在windows路径中注册了ffmpeg:

;c:\ffmpeg\bin   #It is currently callable from any cmd prompt in windows.
Run Code Online (Sandbox Code Playgroud)

什么可以失败?谢谢!


经过更多测试,我发现了它的编码问题.如果我将输出设置为"wav"就可以了.但我真的不知道我该怎样安装一个MP3编码器为它与pydub工作,所以我改变了问题要问的是,因为它的真正的问题.安装ffmpeg所以我不知道还能做什么:

Jia*_*aro 5

我认为它无法找到ffmpeg二进制文件.Python内置了wave支持,因此pydub不需要ffmpeg来打开/关闭/修改wave文件.

尝试在使用之前指定ffmpeg二进制文件的位置,如下所示:

from pydub import AudioSegment
AudioSegment.converter = "c:\ffmpeg\bin\ffmpeg.exe"

wav = AudioSegment.from_wav(Path)  #If I execute only this line, there are no errors.
wav.export(r"WavOut.mp3",format="mp3")
Run Code Online (Sandbox Code Playgroud)

编辑:我们已经改变,从更改属性的名称AudioSegment.ffmpegAudioSegment.converter因为我们现在支持的ffmpeg和avconv.

在分配到此属性之前,请检查您的版本使用的版本(从0.9.0版本开始,它是"转换器")