pydub - 内存错误

Posted

技术标签:

【中文标题】pydub - 内存错误【英文标题】:pydub - memoryerror 【发布时间】:2017-08-11 22:22:38 【问题描述】:

我正在尝试使用 python 和 pydub 库将大型播客 mp3 文件拆分为更小的 5 分钟块。这是我的代码:

folder = r"C:\temp"
filename = r"p967.mp3"

from pydub import Audiosegment

sound = AudioSegment.from_mp3(folder + "\\" + filename)

这适用于小文件,但对于我对 100mb + 感兴趣的大型播客。这将返回以下错误。

Traceback (most recent call last):    
  File "C:\temp\mp3split.py", line 6, in <module>
sound = AudioSegment.from_mp3(folder + "\\" + filename)
  File "C:\Python27\lib\site-packages\pydub\audio_segment.py", line 522, in from_mp3
return cls.from_file(file, 'mp3', parameters)
  File "C:\Python27\lib\site-packages\pydub\audio_segment.py", line 511, in from_file
obj = cls._from_safe_wav(output)
  File "C:\Python27\lib\site-packages\pydub\audio_segment.py", line 544, in _from_safe_wav
return cls(data=file)
  File "C:\Python27\lib\site-packages\pydub\audio_segment.py", line 146, in __init__
data = data if isinstance(data, (basestring, bytes)) else data.read()
MemoryError

这是图书馆的限制吗?我应该使用其他方法来实现这一点吗?


如果我添加以下代码来检查运行时的内存状态。

import psutil
print psutil.virtual_memory()

这打印:

svmem(total=8476975104L, available=5342715904L, percent=37.0 used=3134259200L, free=5342715904L)

这表明我在操作开始时有足够的内存,尽管我很高兴被证明是错误的。

【问题讨论】:

感谢您的更新。对于其他人,svmem 报告可用的虚拟内存。这表明大约 5Gb 可用,需要 50 倍。 【参考方案1】:

是的,最可能的原因是您的可用内存已用完。在执行该语句之前,您知道有多少可用内存吗?考虑在失败语句之前插入系统调用(参见 os 包)。

【讨论】:

您好,感谢您抽出宝贵时间提供帮助。当我在运行导致错误的代码行之前请求内存使用时,我在我的问题中添加了更多显示输出的内容。这看起来对吗? 这正是我想要的。该对象是否可能需要 100Mb 的*物理内存,而您没有那么多?我遇到过几次这个问题。

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

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

server2008物理内存使用82%导致程序内存错误

电脑关机时候总是提示内存错误

电脑关机时出现内存错误

电脑每回关机时显示内存错误是怎么回事

电脑关机出现内存错误