我正在使用样本分析仪在音乐播放器上工作。我的问题是,我目前正在使用pydub从歌曲中获取样本,但是随着歌曲变长,两者之间变得越不同步。我已经使这两个字面上同步,pydub恰好从其中读出了[我什至同时启动了它们,实际上两个音都逐渐与音频逐渐不同步,以至于歌曲继续播放时更多。] >
基本上,是否有一个与pydub.AudioSegment.get_array_of_samples()
等效的python-vlc?
您可以在此处查看python-vlc文档:https://www.olivieraubert.net/vlc/python-ctypes/doc/
python-vlc具有sound.get_time()
,它以毫秒为单位返回上次更新时间。该命令的问题不在于它仅每半秒更新一次(我已经找到一种解决方法),而没有返回准确的时间。我可以使用time.monotonic()
从计时器开始播放时开始计时。随着时间的流逝,get_time()
与计时器大相径庭。我相距195ms,294ms和217ms。
我尝试通过threading
模块使用外部计时器。看来pydub.AudioSegment[index]
根本不同步。
从py-vlc中的sound.get_time()
缩放到pydub中的len(sound)
。这不符合预期。我不能告诉你为什么,但是它仍然不同步。
使用sound.get_time()
且其平均偏移量会随时间增加。看来pydub.AudioSegment[index]
的排列不正确。
使用aubio
。它只读取WAV文件,而对于实时分析仪,首先转换为WAV将花费太长时间。
len(sound)
和python-vlc的sound.get_length()
通常相差10秒钟左右。play()
命令。我不喜欢它,因为它非常有限。pydub.AudioSegment.get_array_of_samples()
之类的样本答案 0 :(得分:0)
您可能想要直接使用ffmpeg。