繁体   English   中英

如何使用 Pyglet 播放音频(在生成器循环中)?

[英]How to play audio(in generator loop) with Pyglet?

pyglet 版本 - 1.4.2。
Python - 3.6.6
Ubuntu - 18.04

代码示例:

import pyglet
import time

pyglet.options['audio'] = ('openal', 'pulse', 'directsound', 'silent')
source = pyglet.media.StaticSource(pyglet.media.load('explosion.wav'))

def my_playlist():
    while True:
        print(time.time())
        print(1)
        yield source


player = pyglet.media.Player()
player.queue(my_playlist())
player.play()

pyglet.app.run()

代码是根据文档编写的

登录控制台:

1566296930.8165386  # played once
1
1566296931.529639  # won't play
1
1566296931.5301056  # won't play and etc.
1
1566296931.5304687
1
1566296931.5309348
1

预期结果:

音频应该与从生成器返回的声音循环播放。

当前结果:

音频播放一次。

题:

我在这里做错了什么以及如何达到预期的结果?

不确定您是否想要完成更多的事情,但是如果您的循环中所需要的只是循环声音,则您实际上不应该使用任何类型的loop 相反,使用指定的EOS_LOOP标志/触发器。

import pyglet
import time

pyglet.options['audio'] = ('openal', 'pulse', 'directsound', 'silent')
source = pyglet.media.StaticSource(pyglet.media.load('explosion.wav'))

player = pyglet.media.Player()
player.queue(source)
player.EOS_LOOP = 'loop'
player.play()

pyglet.app.run()

并且由于它已被弃用,您应该转而使用带有循环标志集的SourceGroup

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM