簡體   English   中英

如何使用 pyglet 在 Mayavi 動畫中播放聲音?

[英]how to use pyglet to play sound in a mayavi animation?

我想在 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 毫秒內快速更新聲音。

我終於通過使用winsound模塊解決了這個問題。 使用

winsound.PlaySound(sound, winsound.SND_FILENAME | winsound.SND_ASYNC)

取代

sound_adjust = pyglet.resource.media(sound, streaming=False) 
sound_adjust.play()

異步播放定義的聲音。 當然,您必須在一開始就import winsound

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM