簡體   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