python中的pydub错误

Posted

技术标签:

【中文标题】python中的pydub错误【英文标题】:Error with pydub in python 【发布时间】:2013-06-03 13:02:08 【问题描述】:

我已经成功导入pydub 但对于代码:

from pydub import Audiosegment
song = AudioSegment.from_mp3("c:\mks.mp3")
first_ten_seconds = song[:10000]
song.export("d:\mks.mp3", format="mp3")

但它给出了以下错误:

python "C:\Users\mKs\Desktop\mks2.py"
Process started >>>
Traceback (most recent call last):
  File "C:\Users\mKs\Desktop\mks2.py", line 2, in <module>
    song=AudioSegment.from_mp3("c:\mks.mp3");
  File "C:\Python27\lib\site-packages\pydub-0.5.2-py2.7.egg\pydub\audio_segment.py", line 194, in from_mp3
    return cls.from_file(file, 'mp3')
  File "C:\Python27\lib\site-packages\pydub-0.5.2-py2.7.egg\pydub\audio_segment.py", line 189, in from_file
    return cls.from_wav(output)
  File "C:\Python27\lib\site-packages\pydub-0.5.2-py2.7.egg\pydub\audio_segment.py", line 206, in from_wav
    return cls(data=file)
  File "C:\Python27\lib\site-packages\pydub-0.5.2-py2.7.egg\pydub\audio_segment.py", line 33, in __init__
    raw = wave.open(StringIO(data), 'rb')
  File "C:\Python27\lib\wave.py", line 498, in open
    return Wave_read(f)
  File "C:\Python27\lib\wave.py", line 163, in __init__
    self.initfp(f)
  File "C:\Python27\lib\wave.py", line 128, in initfp
    self._file = Chunk(file, bigendian = 0)
  File "C:\Python27\lib\chunk.py", line 63, in __init__
    raise EOFError
EOFError

我很想获得有关此主题的帮助

【问题讨论】:

你的 msk.mp3 有多长? 请删除“;”在行尾。 仅供参考,分号在 Python 中很好用。尽管它们是可选的并且没有真正的用途,所以没有人会费心使用它们。 【参考方案1】:

我在您的代码中看到的唯一问题是尾随“;”在最后 3 行的末尾。请删除这些,看看是否仍然出现错误。

此外,请确保您已安装 ffmpeg (http://www.ffmpeg.org/)。它是支持所有非 wav 文件格式所必需的。

添加:

我认为您在 python 安装中破坏了模块依赖项。 我已经尝试过您在上面使用 python 2.7.2 提供的代码。对我来说效果很好:

>>> from pydub import AudioSegment
>>> song = AudioSegment.from_wav('goodbye.wav')
>>> first_ten_seconds = song[:10000]
>>> song.export('goodbye1.wav',format='wav')
<open file 'goodbye1.wav', mode 'wb+' at 0x10cf2b270>

【讨论】:

你安装了 ffmpeg (ffmpeg.org) 吗?所有非 wav 文件格式都需要它。 这个库调用ffmpeg 命令。请参阅github.com/jiaaro/pydub/blob/master/pydub/audio_segment.py#L208 您需要安装它并能够在命令行中键入ffmpeg 而不会出现错误。 我可以将 ffmpeg 与 cmp prmpt 一起使用,但错误仍然相同 你试过wav文件吗?如果没有,请先尝试。它应该被 pydub 原生支持。 with wav 如果我这样做: from pydub import AudioSegment song = AudioSegment.from_wav("c:\Explosion.wav") 它可以工作,但如果我添加行:song.export("d :\abc.wav","wav") 然后出现错误: Traceback(最近一次调用最后一次):文件“C:\Users\mKs\Desktop\mks2.py”,第 3 行,在 歌曲中。 export("abc.wav","wav") 文件“C:\Python27\lib\site-packages\pydub-0.5.2-py2.7.egg\pydub\audio_segment.py”,第 239 行,在导出数据中.unlink(data.name) File "C:\Python27\lib\tempfile.py", line 376, in getattr a = getattr(file, name) AttributeError: 'file' object has no attribute 'unlink

以上是关于python中的pydub错误的主要内容,如果未能解决你的问题,请参考以下文章

Python pydub音频处理

Python,pydub分割音频文件

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

Pydub Slice Audio Segment By Sample

Python pydub 截取音频

Python pydub 截取音频