python - Pyglet - 获取声音频率
问题描述
我想获得使用 media.load() 加载的声音的频率,以便以后可以将其可视化,有没有办法使用 pyglet 来做到这一点?
解决方案
任何登陆这里的人,包括你 OP。
要浏览此信息(在许多其他情况下很有帮助),请尝试查看您正在使用的变量。
mport pyglet
music = pyglet.media.load('./test.wav')
music.play()
pyglet.app.run()
这是一个简单的音乐播放器,它可以工作(如果你想播放 .mp3 等,则需要 avbin7)。
现在,你想得到频率吗?
如果您不知道如何,请始终从探索库和/或变量开始:
print(dir(music))
这将立即给你一个死的放弃:
['__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_audio_buffer', '_audio_stream', '_audio_stream_index', '_buffered_audio_data', '_decode_audio_packet', '_decode_video_packet', '_duration', '_ensure_video_packets', '_events', '_file', '_get_duration', '_get_packet', '_get_queue_source', '_is_queued', '_packet', '_process_packet', '_video_stream', '_video_stream_index', '_video_timestamp', 'audio_format', 'delete', 'duration', 'get_animation', 'get_audio_data', 'get_next_video_frame', 'get_next_video_timestamp', 'info', 'is_queued', 'play', 'seek', 'video_format']
在这里,video_format
向我伸出了手,看着我们找到的剩余的那堆东西audio_format
。
这应该像针一样戳你的眼睛。
下一个合乎逻辑的步骤是打印该变量,这些替代方案中的任何一个都是不错的选择:
print(music.audio_format)
print(music.audio_format())
print(dir(audio_format))
但第一个会给你:
AudioFormat(channels=2, sample_size=16, sample_rate=44100)
它就在那里,44100Hz
. 您正在寻找的频率。
import pyglet
music = pyglet.media.load('./test.wav')
print(dir(music)) # find music.audio_format / music.video_format
print(music.audio_format) # try it out
# >>> AudioFormat(channels=2, sample_size=16, sample_rate=44100)
music.play()
pyglet.app.run()
推荐阅读
- java - 无法使用 GestureDetector 刷回 android studio 中的主要活动
- python - 创建新虚拟机不起作用
- coldfusion - 将物理文件转换为 blob 并在浏览器上显示
- tensorflow - 用于附加数据的 ImageDataGenerator 流函数
- algorithm - 二叉树算法变体:如果每个组都可以容纳有限的元素,如何进行搜索?
- python - Azure Blob 存储在 Python 中下载 ORC 文件
- amazon-web-services - #AWS ALB:有没有办法将 https 请求转发到端口 8081 上的 ALB 到端口 443
- reactjs - 将两个单击处理程序添加到 1 个函数都使用 React 钩子 useState
- syntax - 在gnuplot中每两行跳过
- flutter - 如何对异步函数的调用进行排队并按顺序执行它们?