2012-03-31 15 views
5

¿Alguien tiene experiencia tocando audio (ahora específicamente mp3s) con python usando a libs?Reproducción de audio de Windows (XP a Windows 7) con python?

Detalles:

de uso en una aplicación de wxPython (sí he tratado wx.media.MediaCtrl)

Ok, ahora está aquí cosas que he probado.

código trataron como http://www.daniweb.com/software-development/python/code/216465/play-mp3-files-via-pythons-win32com-support

No funciona (sin audio de lo que nunca)

trataron wxPython MediaCtrl: a veces funciona, pero sólo recientemente los trabajos de reproducción de archivos, direcciones URL jugar por un par de segundos y luego hay audio (pero la pista continúa, sé que el archivo se descargó completamente también, así que no es el medio el que no se está descargando). Pude solucionar esto reiniciando, luego funcionó durante un tiempo y luego se rompió, intenté reiniciar de nuevo y esta vez eso no lo solucionó, sin embargo, otros jugadores que usan apis de Windows Media (una aplicación C# .NET) funcionan bien y también lo hace Windows Media Player. Así que es un error en las wxWidgets libs Supongo que

intenté usar mplayer, por ejemplo: http://www.blog.pythonlibrary.org/2010/07/24/wxpython-creating-a-simple-media-player/ problemas mayores a mplayer no le gusta establecer las propiedades y por eso no puedo detenerme porque si lo hago no me lo permite establecer el estado de nuevo para jugar (ver código que uso aquí http://paste.pocoo.org/show/574269/)

En Linux he usado gstreamer, funciona después de algunos dolores de cabeza (aunque todavía tiene sus problemas también), MacOS X no ha sido probado aún pero voy intentar quicktime y wx.media.MediaCtrl esperando que funcione)

Respuesta

6

He usado PortAudio en un par de proyectos, que es un free-cross-platform-open-source-audio biblioteca, pero nunca con python. No se preocupe, hay enlaces para ello:

PyAudio proporciona enlaces de Python para PortAudio.

""" Play a WAVE file. """ 

import pyaudio 
import wave 
import sys 

chunk = 1024 

if len(sys.argv) < 2: 
    print "Plays a wave file.\n\n" +\ 
      "Usage: %s filename.wav" % sys.argv[0] 
    sys.exit(-1) 

wf = wave.open(sys.argv[1], 'rb') 

p = pyaudio.PyAudio() 

# open stream 
stream = p.open(format = 
       p.get_format_from_width(wf.getsampwidth()), 
       channels = wf.getnchannels(), 
       rate = wf.getframerate(), 
       output = True) 

# read data 
data = wf.readframes(chunk) 

# play stream 
while data != '': 
    stream.write(data) 
    data = wf.readframes(chunk) 

stream.close() 
p.terminate() 
+0

¡Gracias, lo comprobaré! – Zimm3r

+0

Bueno, lo probé, no era realmente lo que estaba buscando, así que gracias por la ayuda y todo. Disfruta de la recompensa :) – Zimm3r

Cuestiones relacionadas