问题描述
我需要什么
我正在使用样本分析仪在音乐播放器上工作。我的问题是,我目前正在使用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将花费太长时间。
我发现的事情
- 我查看了每首歌曲以毫秒为单位的时间,pydub的
len(sound)
和python-vlc的sound.get_length()
通常相差10秒钟左右。
无法正常工作
- 使用pydub的
play()
命令。我不喜欢它,因为它非常有限。 - 使用py-vlc以外的其他设备播放音频,VLC具有许多无法复制的功能。
以前的建议
- 使用How can I extract audio from video with ffmpeg?
- 这不起作用,因为我不想从现有的视频文件中提取音频,而是尝试获取
pydub.AudioSegment.get_array_of_samples()
之类的样本
- 这不起作用,因为我不想从现有的视频文件中提取音频,而是尝试获取
我很好奇
- 是否有用于Audacity的python模块?我一直在寻找,但找不到。我还可以使用其他一些可能与Audacity进行交互的命令行工具[我知道内置的命令行实用程序根本不能做很多事情]
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)