¿Cómo reproducir música a través de Python con mpg321?

Quiero reproducir un archivo de música con mpg321 usando Python usando otro evento como disparador. Luego, cuando escribo una cadena específica, me gustaría que la música dejara de reproducirse.

¿Cómo puedo hacer esto usando Python?

 import os from subprocess import Popen, PIPE music = None while 1: cmd = raw_input('> ') if cmd.lower() == 'play': music = Popen('mpg321 /home/Torxed/test.mp3'.split(' ',1), stdout=PIPE, stderr=STDOUT, close_fds=True) elif cmd.lower() == 'stop': try: music.stdout.close() music.stdin.close() except: pass music = None 

En lugar de usar el subproceso podrías hacer:

 music = os.popen('mpg321 /home/Torxed/test.mp3', 'w') 

y solo hacer

 music.close() 

Todavía creo que esta es una solución horrible, porque no debería confiar en fonts externas para hacer su tarea si es progtwigdor. Debe manejarse dentro de su aplicación y no tanto en el sistema operativo o en algunos 3: Aplicación del partido d.

Alternativas

Pygame : Ir con Pygame, por ejemplo, hará el trabajo por ti y algo más.

 import pygame, time pygame.init() pygame.mixer.music.load('/home/Torxed/test.mp3') pygame.mixer.music.play() time.sleep(5) pygame.mixer.music.fadeout(5) 

El kit de herramientas Snack Sound : ¡Es una biblioteca de audio pura de Python con gran flexibilidad!

 s = Sound() s.read('/home/Torxed/test.mp3') s.play() 

Pyglet : Fácilmente mi favorita, una biblioteca de OpenGL gráfica multiplataforma con acceso a la música también:

 import pyglet music = pyglet.resource.media('/home/Torxed/test.mp3') music.play() pyglet.app.run() 

Alternativas nativas de Python

Winsound es una alternativa única de Windows

 import winsound winsound.PlaySound('C:\\users\\Torxed\\Desktop\\test.mp3') 

OSSaudio Esta es una alternativa nativa de Linux a las demás, OSS es una de las reproducciones de audio más predeterminadas en sistemas Linux / Unix, por lo que no debería ser una opción extraña para la mayoría de las personas. (Cortesía de @orestis aquí en Stackoverflow)

 from wave import open as waveOpen from ossaudiodev import open as ossOpen s = waveOpen('/home/Torxed/test.wav','rb') (nc,sw,fr,nf,comptype, compname) = s.getparams( ) dsp = ossOpen('/dev/dsp','w') try: from ossaudiodev import AFMT_S16_NE except ImportError: if byteorder == "little": AFMT_S16_NE = ossaudiodev.AFMT_S16_LE else: AFMT_S16_NE = ossaudiodev.AFMT_S16_BE dsp.setparameters(AFMT_S16_NE, nc, fr) data = s.readframes(nf) s.close() dsp.write(data) dsp.close() 

Algunos de los google que me llevaron a la solución OSS me dieron esto (asegúrate de dar crédito a esos tipos, buenos ejemplos): Play a Sound with Python