【发布时间】:2019-07-05 05:39:40
【问题描述】:
我想在 mayavi 动画循环中使用 pyglet 播放声音,但我发现 pyglet 与必须在 mayavi 动画中使用的 'yield' 配合得不好。情况是,当声音播放和动画完成一次时,它无法开始一个新的循环,这是我的一些代码,有什么想法吗?
pyglet 可以在 for 循环中播放声音,但不能使用 yield。
@mlab.animate(delay=delays)
def animate():
f = mlab.gcf()
while True:
for i in range(frames_num):
# update sound
sound = 'shiping/shiping_%d.wav'%i
sound_adjust = pyglet.resource.media(sound, streaming=False)
sound_adjust.play()
# update scene
print('Update scene >>', time.time())
function_to_update_scene()
# with out 'yield' it works well
yield
animate()
也可以接受任何其他模块的建议。问题是我需要在 20 毫秒内快速更新声音。
【问题讨论】:
-
看来您必须在单独的进程中播放声音,使用queues 或类似的方式发送“立即播放”命令。
-
我对多线程不熟悉,让我试一试。谢谢你,费利佩。
标签: python yield pyglet mayavi