Créez un lecteur audio en python avec le module PyMedia
Posté par jbj le 24 sept 2007 dans Python • 5 commentairespyMedia est un module pour manipuler les fichiers wav, mp3, ogg, avi, divx, dvd et cdda.
Voyons ensemble comment réaliser un lecteur audio minimaliste en utilisant la classe player de pyMedia.
Avant de commencer
Le site du module: http://pymedia.org/
La documentation: Documentation
Installation sous GNU/Linux:
Pour les utilisateurs Debian/Ubuntu, un paquet .deb est disponible ici: paquet pymedia pour Debian/Ubuntu
Installez-le via votre gestionnaire de paquets.
Installation sous Windows:
Les utilisateurs de windows trouveront un fichier .exe ici
Ouvrez-le et il s'installera automatiquement.
Les exemples:
Un player audio minimal:
import pymedia
import time
player = pymedia.Player() #Création de l'objet player
player.start()
player.startPlayback('unFichierSon.mp3') #Chemin du fichier son à lire
while player.isPlaying(): #On boucle tant que la lecture n'est pas terminée
time.sleep( 0.01 )
Le module pymedia.player permet de lire facilement les types de fichiers musicaux supportés par pymedia.
Un meilleur exemple avec un Thread:
import threading
import time
import pymedia
from Tkinter import *
class playFile(threading.Thread):
def __init__(self, file_name):
global player
threading.Thread.__init__ (self)
player= pymedia.Player()
player.start()
self.keepGoing = True
player.startPlayback(file_name)
def run(self):
global player
while player.isPlaying() and self.keepGoing:
time.sleep( 0.01 )
def stop(self):
global player
player.stopPlayback()
self.keepGoing = False
def play():
global pf
pf = playFile("a.mp3") #le fichier son à jouer
pf.start()
def stop():
global pf
pf.stop()
#La GUI
root= Tk()
play = Button(text="play", command=play)
play.pack()
stop = Button(text="stop", command=stop)
stop.pack()
e = Entry()
e.pack()
root.mainloop()
Cet exemple utilisant les Threads, il est necessaire de s'assurer que tous les threads ont été stoppés avant de quitter l'application, sinon gare aux mauvaises surprises. L'utilisation du thread permet -outre le fait de disposer d'une classe totalement réutilisable- l'execution simultanée de deux portions de code distinctes, à savoir l'interface graphique Tk et les fonctions de controle du son.
La documentation du module pymedia.player liste les différentes méthodes disponibles.









