每次文件很大(电影的长度)时我都会收到内存错误。有没有办法处理大文件音频段?
nil
sound = AudioSegment.from_mp3("vanilla_sky.mp3")
答案 0 :(得分:2)
简而言之,没有 - 一个pydub AudioSegment
代表音频本身(并包含音频数据)。
关于添加AudioSegment
的流媒体版本以帮助解决这些内存问题,已经进行了一些讨论,但这项工作尚未完成(尽管我不知道任何打算解决问题的人。
如果您只想转换音频,可以turn on logging并复制转换所需的特定ffmpeg命令。日志记录输出将显示一个可以在python代码中立即使用的子进程调用:
>>> import logging
>>> l = logging.getLogger("pydub.converter")
>>> l.setLevel(logging.DEBUG)
>>> l.addHandler(logging.StreamHandler())
>>> AudioSegment.from_file("./vanilla_sky.mp3")
subprocess.call(['ffmpeg', '-y', '-i', '/var/folders/71/42k8g72x4pq09tfp920d033r0000gn/T/tmpeZTgMy', '-vn', '-f', 'wav', '/var/folders/71/42k8g72x4pq09tfp920d033r0000gn/T/tmpK5aLcZ'])
(第一个/var/…
文件是输入文件的副本,第二个是输出文件,在转换完成后加载到AudioSegment
中