Python pydub mp3导出是否有最大长度?
当我尝试将长音频段导出到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
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实际上没有,只是有较短的视频。。。