Pyglet 播放兑现的声音
Pyglet plays cashed sounds
我有一个简单的代码来播放音频,但 pyglet 似乎保存了所有音频,并且每次它尝试播放新音频时,所有以前的音频都会同时播放。
import pyglet
def plays(name):
file = pyglet.resource.media(name + '.mp3')
file.play()
pyglet.app.event_loop.sleep(1)
plays('definite')
plays('filling-your-inbox')
有什么办法可以玩第二个而不重玩第一个吗?
声音没有缓存,您使用的代码也不是很有用。如果你仔细听,你的两个文件实际上都在播放并且相互重叠。区分这一点的最简单方法是让第一个是缓慢柔和的曲调,然后是第二个是尖锐的短促声音 - 你会更容易注意到它。
另一个问题是您正在循环播放函数,而没有真正使用正确的事件循环。一个更合适的例子是做这样的事情:
import pyglet, signal
media_player = pyglet.media.Player()
def queue(name):
file = pyglet.resource.media(name + '.mp3')
media_player.queue(file)
def on_eos(*args, **kwargs):
pyglet.app.exit()
media_player.on_player_eos = on_eos
queue('definite')
queue('filling-your-inbox')
media_player.play()
pyglet.app.run()
旁注是您可能应该使用推送事件处理程序,而不是像我那样只是替换函数,我有点匆忙所以它有点难看,但它有效:)
我有一个简单的代码来播放音频,但 pyglet 似乎保存了所有音频,并且每次它尝试播放新音频时,所有以前的音频都会同时播放。
import pyglet
def plays(name):
file = pyglet.resource.media(name + '.mp3')
file.play()
pyglet.app.event_loop.sleep(1)
plays('definite')
plays('filling-your-inbox')
有什么办法可以玩第二个而不重玩第一个吗?
声音没有缓存,您使用的代码也不是很有用。如果你仔细听,你的两个文件实际上都在播放并且相互重叠。区分这一点的最简单方法是让第一个是缓慢柔和的曲调,然后是第二个是尖锐的短促声音 - 你会更容易注意到它。
另一个问题是您正在循环播放函数,而没有真正使用正确的事件循环。一个更合适的例子是做这样的事情:
import pyglet, signal
media_player = pyglet.media.Player()
def queue(name):
file = pyglet.resource.media(name + '.mp3')
media_player.queue(file)
def on_eos(*args, **kwargs):
pyglet.app.exit()
media_player.on_player_eos = on_eos
queue('definite')
queue('filling-your-inbox')
media_player.play()
pyglet.app.run()
旁注是您可能应该使用推送事件处理程序,而不是像我那样只是替换函数,我有点匆忙所以它有点难看,但它有效:)