我需要的
我正在开发带有样本分析器的音乐播放器。我的问题是我目前正在使用 pydub 从歌曲中获取样本,但是随着歌曲变得更长,两者变得越不同步。我已经使这两个字面上同步,pydub 恰好读出了它[我什至同时启动它们,这两个实际上逐渐与音频不同步,并且随着歌曲继续播放更多]。
基本上,是否有一个 python-vlc 相当于pydub.AudioSegment.get_array_of_samples()
?
您可以在此处查看 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]
根本不同步。从
sound.get_time()
py-vlclen(sound)
中缩放到 pydub 中。这不能按预期工作。我不能告诉你为什么,但它仍然不同步。使用
sound.get_time()
随时间增加的平均偏移量。似乎pydub.AudioSegment[index]
没有正确排列。使用
aubio
. 它只读取 WAV 文件,对于实时分析仪,首先转换为 WAV 需要很长时间。
我发现的事情
- 我查看了每首歌曲的时长(以毫秒为单位),
len(sound)
对于 pydub 和sound.get_length()
python-vlc 通常相差 10 秒左右。
行不通的事情
- 使用 pydub 的
play()
命令。我不喜欢它,因为它非常有限。 - 使用 py-vlc 以外的其他东西来播放音频,VLC 具有许多无法复制的功能。
以前的建议
- 使用如何使用 ffmpeg 从视频中提取音频?
- 这不起作用,因为我不想从现有的视频文件中提取音频,我正在尝试获取类似的样本
pydub.AudioSegment.get_array_of_samples()
- 这不起作用,因为我不想从现有的视频文件中提取音频,我正在尝试获取类似的样本
我很好奇
- Audacity 有 python 模块吗?我一直在寻找并找不到它。如果可能的话,我还可以使用其他一些可以与 Audacity 交互的命令行工具[我知道内置的命令行实用程序根本没有做太多事情]