import pygame
file = 'some.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
pygame.mixer.music.play()
Cette commande affiche "Processus terminé avec le code de sortie 0", mais ne lit rien. Comment puis-je résoudre ce problème?
La fonction de lecture commence la lecture de la musique, mais revient immédiatement. Ensuite, votre programme arrive à sa fin et l’objet pygame est automatiquement détruit, ce qui provoque l’arrêt de la musique.
Comme vous l'avez dit, la musique est lue si vous attendez avant de quitter, car l'objet pygame n'est pas détruit jusqu'à la fin de la boucle while.
while pygame.mixer.music.get_busy():
pygame.time.Clock().tick(10)
La musique s'arrête parce que c'est un événement asynchrone, ce qui signifie que le script continue. ensuite, le script s’arrête instantanément, ne laissant aucune chance à la musique de commencer ...
while pygame.mixer.music.get_busy():
pygame.time.Clock().tick(10)
cependant, pygame.event.wait()
est encore meilleur, car il attendra la fin de tous les événements asynchrones.
Voici un moyen super facile.
import pygame
file = 'some.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
pygame.mixer.music.play()
pygame.event.wait()
J'ai trouvé une bonne solution de thepythongamebook.com :
pygame.mixer.pre_init(44100, -16, 2, 2048) # setup mixer to avoid sound lag
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load('music_01.mp3')
pygame.mixer.music.play(-1)
Essaye ça,
#!/usr/bin/env python
import pygame
from Tkinter import *
file = 'Your MP3 here'
root = Tk()
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
pygame.mixer.music.play()
root.mainloop()
vous devrez installer Tkinter, mais cela fonctionnera, espérons-le, et vous n'aurez pas besoin de régler l'heure manuellement . Si cela a fonctionné, faites-le-moi savoir, je l'ai testé sur mon ordinateur, mais parfois les choses ne fonctionnent pas. . Je vais essayer de vous aider si je peux.
essaye celui-là.
import pygame
def pmusic(file):
pygame.init()
pygame.mixer.init()
clock = pygame.time.Clock()
pygame.mixer.music.load(file)
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
print("Playing...")
clock.tick(1000)
def stopmusic():
pygame.mixer.music.stop()
def getmixerargs():
pygame.mixer.init()
freq, size, chan = pygame.mixer.get_init()
return freq, size, chan
def initMixer():
BUFFER = 3072 # audio buffer size, number of samples since pygame 1.8.
FREQ, SIZE, CHAN = getmixerargs()
pygame.mixer.init(FREQ, SIZE, CHAN, BUFFER)
try:
initMixer()
file = 'C:\\data\\03.mp3'
pmusic(file)
except KeyboardInterrupt: # to stop playing, press "ctrl-c"
stopmusic()
print("\nPlay Stopped by user")
except Exception:
print("unknown error")
print("Done")
Il semble que l'audio ne soit pas lu à cause de la façon dont vous l'avez importé. Le code ci-dessous joue le son comme prévu. Rien n'a changé ici si ce n'est qu'au lieu de import pygame
, il utilise from pygame import mixer
. Cela peut être dû au fait que Pygame est un package, mais je ne suis pas sûr.
from pygame import mixer
file = 'some.mp3'
mixer.init()
mixer.music.load(file)
mixer.music.play()