Python Pyglet在被多次呼叫后停止播放声音

Python Pyglet在被多次呼叫后停止播放声音,python,macos,audio,mp3,pyglet,Python,Macos,Audio,Mp3,Pyglet,我有大量的小mp3文件需要单独检查。在python foreach文件循环中,我调用这个使用pyglet的函数: def play(player,src): try: #music = pyglet.resource.media(src) music = pyglet.media.load(src, streaming=False) music.play() ans = raw_input("\tWas this sound good (r to replay

我有大量的小mp3文件需要单独检查。在python foreach文件循环中,我调用这个使用pyglet的函数:

def play(player,src):
  try:
    #music = pyglet.resource.media(src)
    music = pyglet.media.load(src, streaming=False)
    music.play()
    ans = raw_input("\tWas this sound good (r to replay, q to quit)? [y|n|r|q]: ")
    if (ans == 'r'): 
      return play(player,src)
    if (ans == 'q'):
      sys.exit(0)
    else:
      success = (ans == 'y')
  except pyglet.media.avbin.AVbinException, e:
    print "Exception playing file. Assuming bad."
    success = 0  
  print "%s -> %d" % ( src, success )
  return success
它对大约10个文件非常有效,但随后它就停止了静默工作。它的行为就像是在播放声音,但只有沉默。是否有一些资源我应该卸载或释放或什么?我在OSX上,最初必须安装AVBin才能让pyglet工作

谢谢

欢迎来到SO

首先,你应该看看这个特性,它提供了大量的automagic来停止和释放资源以方便你

第二,如果你有任何错误,请分享

大致如下:

player = pyglet.media.Player()
player.queue(source1)
player.queue(source2)
player.play()
# wait 5 sec...
player.next()
如果您更喜欢在每次播放之间以手动方式进行,应该会有所帮助

player.stop()
player.clear()