How to play music continuously in pyglet

杀马特。学长 韩版系。学妹 提交于 2019-12-03 22:59:35

问题


me and my friend are working on a game and we want our music to loop as long as the game is running. Help please there seems to be no function to put music on repeat


回答1:


In current versions of pyglet, you should use a SourceGroup, setting the loop attribute to True. You can then queue it into a Player to play it:

snd = pyglet.media.load('sound.wav')
looper = pyglet.media.SourceGroup(snd.audio_format, None)
looper.loop = True
looper.queue(snd)
p = pyglet.media.Player()
p.queue(looper)
p.play()

Not sure if there's a more compact way of doing this but it seems to work...




回答2:


To make a sound play in a loop, you can use a Player:

# create a player and queue the song
player = pyglet.media.Player()
sound = pyglet.media.load('lines.mp3')
player.queue(sound) 

# keep playing for as long as the app is running (or you tell it to stop):
player.eos_action = pyglet.media.SourceGroup.loop

player.play()

To play more background sounds simultaneously, just start up another player for each of the sounds, with the same EOS_LOOP "eos_action" setting as above for each of them.




回答3:


this works for me

myplayer = pyglet.media.Player()
Path = "c:/path/to/youraudio.mp3"
source = pyglet.media.load(filename=source, streaming=False)
myplayer.queue(self.slowCaseSongSource)
myplayer.eos_action = 'loop'



回答4:


For playing continuously you can use this code

This will allow you to play files from your root directory

import pyglet
from pyglet.window import key
import glob

window = pyglet.window.Window(1280, 720, "Python Player", resizable=True)
window.set_minimum_size(400,300)
songs=glob.glob("*.wav")
player=pyglet.media.Player()

@window.event
def on_key_press(symbol, modifiers):
    if symbol == key.ENTER:
        print("A key was pressed")
        @window.event
        def on_draw():
            global player
            for i in range(len(songs)):
                source=pyglet.resource.media(songs[i])
                player.queue(source)
            player.play()

pyglet.app.run()



回答5:


this might be irrelevant:

import pyglet
import time
import random

#WARNING: You have to download your own sounds and define them like this:
#sound_1 = pyglet.resource.media("sound_file.wav", streaming=False)
#replacing "sound_file" with your own file.

# Add the sound variables here
BACKGROUND_OPTIONS = ()

player = pyglet.media.Player()

def play_background_sound():
  global player
  player.queue(random.choice(BACKGROUND_OPTIONS))
  player.play()

  # This is optional; it's just a function that keeps the player filled so there aren't any breaks.
  def queue_sounds():
    global player
    while True:
      player.queue(random.choice(BACKGROUND_OPTIONS))
      time.sleep(60) # change this if the background music you have is shorter than 3 minutes

threading.Thread(target=queue_sounds).start()


来源:https://stackoverflow.com/questions/27391240/how-to-play-music-continuously-in-pyglet

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!