2

我需要的

我正在开发带有样本分析器的音乐播放器。我的问题是我目前正在使用 pydub 从歌曲中获取样本,但是随着歌曲变得更长,两者变得越不同步。我已经使这两个字面上同步,pydub 恰好读出了它[我什至同时启动它们,这两个实际上逐渐与音频不同步,并且随着歌曲继续播放更多]。

基本上,是否有一个 python-vlc 相当于pydub.AudioSegment.get_array_of_samples()

您可以在此处查看 python-vlc 文档:https ://www.olivieraubert.net/vlc/python-ctypes/doc/

我试过的

  1. python-vlcsound.get_time()以毫秒为单位返回最后更新时间。该命令的问题不在于它仅每半秒左右更新一次[我找到了解决方法],而是它没有返回准确的时间。我可以从它开始播放时开始使用time.monotonic(). 随着时间的推移,get_time()计时器的变化很大。我得到了 195ms、294ms 和 217ms 的差异。

  2. 我尝试使用该模块使用外部计时器threading。看来这pydub.AudioSegment[index]根本不同步。

  3. sound.get_time()py-vlclen(sound)中缩放到 pydub 中。这不能按预期工作。我不能告诉你为什么,但它仍然不同步。

  4. 使用sound.get_time()随时间增加的平均偏移量。似乎pydub.AudioSegment[index]没有正确排列。

  5. 使用aubio. 它只读取 WAV 文件,对于实时分析仪,首先转换为 WAV 需要很长时间。

我发现的事情

  • 我查看了每首歌曲的时长(以毫秒为单位),len(sound)对于 pydub 和sound.get_length()python-vlc 通常相差 10 秒左右。

行不通的事情

  • 使用 pydub 的play()命令。我不喜欢它,因为它非常有限。
  • 使用 py-vlc 以外的其他东西来播放音频,VLC 具有许多无法复制的功能。

以前的建议

我很好奇

  • Audacity 有 python 模块吗?我一直在寻找并找不到它。如果可能的话,我还可以使用其他一些可以与 Audacity 交互的命令行工具[我知道内置的命令行实用程序根本没有做太多事情]
4

1 回答 1

0

您可能想为此直接使用 ffmpeg。

于 2020-09-25T06:59:17.987 回答