2012-03-31 5 views
5

У кого-нибудь есть опыт воспроизведения аудио (прямо сейчас специально mp3s) с помощью python с использованием любых libs?Windows (XP to Windows 7) воспроизведение звука с помощью python?

Детали:

Использование находится в приложении WxPython (да я попытался wx.media.MediaCtrl)

Хорошо, теперь находится здесь вещи, которые я пробовал.

попытался код, как http://www.daniweb.com/software-development/python/code/216465/play-mp3-files-via-pythons-win32com-support

Не работает (нет звука, что так когда-либо)

пытался WxPython MediaCtrl: иногда работает, но недавно только воспроизведение файлов работы, URLs играть в течение нескольких секунд, а затем ни одной (но отслеживание продолжается, я знаю, что файл загружен полностью, так что это не тот, который не загружается). Я смог исправить это перезагрузкой, затем он немного поработал, затем снова попытался перезапустить, и на этот раз это не исправило, однако другой плеер, использующий Windows Media apis (приложение C# .NET), работает просто отлично и так же как и проигрыватель Windows Media. Так что это какая-то ошибка в wxWidgets libs. Я думаю,

попытался использовать mplayer, например: http://www.blog.pythonlibrary.org/2010/07/24/wxpython-creating-a-simple-media-player/ Основные проблемы mplayer не любит устанавливать свойства, и поэтому я никогда не могу приостановить, потому что, если я это сделаю, (см. код, который я использую здесь http://paste.pocoo.org/show/574269/)

В Linux Я использовал gstreamer, работает после некоторых головных болей (хотя все еще есть проблемы), MacOS X еще не был протестирован, но я собираюсь попробуйте quicktime и wx.media.MediaCtrl, надеясь, что это работает)

ответ

6

Я использовал PortAudio в нескольких проектах, который представляет собой свободно-кросс-платформенный-open-source-audio библиотека, но никогда с python. Не волнуйтесь, есть привязки для него:

PyAudio обеспечивает привязки Python для 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

Спасибо, проверим! – Zimm3r

+0

Ну, я проверял это не совсем то, что искал, спасибо за помощь и все такое. Наслаждайтесь щедростью :) – Zimm3r

Смежные вопросы