Python pydub mp3导出是否有最大长度?

Python pydub mp3导出是否有最大长度?,python,python-3.x,pydub,Python,Python 3.x,Pydub,当我尝试将长音频段导出到mp3时,出现错误OSError:[Errno 22]无效参数。可接受的最大持续时间似乎介于202到205分钟之间。错误和代码如下所示 是否有任何方法可以导出超过205分钟的MP3 compilation_audio.export(mp3_path, format = "mp3") File "/usr/local/lib/python3.6/site-packages/pydub/audio_segment.py", line 612, in export w

当我尝试将长音频段导出到mp3时,出现错误
OSError:[Errno 22]无效参数
。可接受的最大持续时间似乎介于202到205分钟之间。错误和代码如下所示

是否有任何方法可以导出超过205分钟的MP3

compilation_audio.export(mp3_path, format = "mp3")   
File "/usr/local/lib/python3.6/site-packages/pydub/audio_segment.py", line 612, 
 in export wave_data.writeframesraw(self._data)
File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/wave.py", line 422, 
 in writeframesraw self._file.write(data)   
File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tempfile.py", line 483,
 in func_wrapper return func(*args, **kwargs) 
OSError: [Errno 22] Invalid argument
这是代码。我使用了“Fur Elise”作为最初的mp3文件

202分钟段(“毛发Elise”重复69次)保存正常,205分钟段(“毛发Elise”重复70次)导出失败

import os, pydub
audio_name = os.path.expanduser('~/Downloads/Fur Elise.mp3') # just under 3 min long
audio = pydub.AudioSegment.from_mp3(audio_name)
for compilation_audio in (audio * 69, audio * 70):
    length_music = len(compilation_audio) / 60000.0
    print("compilation_audio duration (min): " + str((length_music)))
    mp3_path = os.path.expanduser('~/Downloads/compilation' + str(int(length_music)) + '.mp3')
    compilation_audio.export(mp3_path, format = "mp3")
如果试图保存1000分钟以上的mp3(Fur Elise*370),则会出现另一条错误消息:

    compilation_audio.export(mp3_path, format = "mp3")
  File "/usr/local/lib/python3.6/site-packages/pydub/audio_segment.py", line 612, in export
    wave_data.writeframesraw(self._data)
  File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/wave.py", line 416, in writeframesraw
    self._ensure_header_written(len(data))
  File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/wave.py", line 457, in _ensure_header_written
    self._write_header(datasize)
  File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/wave.py", line 474, in _write_header
    self._sampwidth * 8, b'data'))
struct.error: 'L' format requires 0 <= number <= 4294967295
Exception ignored in: <bound method Wave_write.__del__ of <wave.Wave_write object at 0x1177e7cf8>>
Traceback (most recent call last):
  File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/wave.py", line 316, in __del__
    self.close()
  File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/wave.py", line 434, in close
    self._ensure_header_written(0)
  File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/wave.py", line 457, in _ensure_header_written
    self._write_header(datasize)
  File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/wave.py", line 474, in _write_header
    self._sampwidth * 8, b'data'))
struct.error: 'L' format requires 0 <= number <= 4294967295
compilation\u audio.export(mp3\u路径,format=“mp3”)
导出文件“/usr/local/lib/python3.6/site packages/pydub/audio_segment.py”,第612行
wave_data.writeframesraw(自写入数据)
文件“/usr/local/ceral/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/wave.py”,第416行,writeframesraw
自我确认?标题?已写入(len(数据))
文件“/usr/local/cillar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/wave.py”,第457行,以“确保”标题书写
自写头(数据大小)
文件“/usr/local/cillar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/wave.py”,第474行,在写头中
self._sampwidth*8,b'data'))

struct.error:'L'格式需要0我认为这可能是Python中的一个错误

有一个

我们也遇到了这个问题


有一个类似的堆栈跟踪。他们发现问题出在
lseek()
上。我不明白修复方法,但我能够找到似乎尚未解决的问题。问题似乎是有符号整数环绕,使得在某些情况下无法在大于2^63的文件中进行搜索。

我也有同样的问题,你找到办法了吗?@vkuzma实际上没有,只是有较短的视频。。。