2008-11-09 22 views
18

pyaudio uygulamasını kullanarak bir .wav dosyasını çalmayı denedim. Pencerelerde harika çalışıyor, ancak başka bir cihaz ses kullanırken Ubuntu'da çalışmıyor.Python'da bir ses dosyasını çalmanın çapraz platform yolu nedir?

The error is "IOError: [Errorno Invalid output device (no default output device)] -9996

Kullanmaya çalışabileceğim başka bir kitaplık var mı? Diğer yöntem?

cevap

4

Pymedia'ya baktınız mı?

import time, wave, pymedia.audio.sound as sound 
f= wave.open('YOUR FILE NAME', 'rb') 
sampleRate= f.getframerate() 
channels= f.getnchannels() 
format= sound.AFMT_S16_LE 
snd= sound.Output(sampleRate, channels, format) 
s= f.readframes(300000) 
snd.play(s) 
while snd.isPlaying(): time.sleep(0.05) 

Ref:: Tabii http://pymedia.org/tut/play_wav.html

, bu tür https://docs.python.org/library/wave.html veya diğer kütüphaneler için Ses altında Python wiki (http://wiki.python.org/moin/Audio/) bir göz bu bir WAV dosyasını oynatmak için gibi bu kadar kolay görünüyor tekrar Python'un wiki'sinde Oyun Kütüphaneleri (http://wiki.python.org/moin/PythonGameLibraries) altında sizi ses modüllerine sahip OpenAL veya Pygame'e bağlayacaksınız.

Son olarak, pyaudio'un sınırlamalarını bilmeme rağmen, hata mesajınız kütüphanenin varsayılan çıkış cihazını başka bir işlem tarafından kullanılmakta olan cihazdan daha fazla bulamamasına benziyor. Belki de çıktı aygıtının get_default_output_device_info pyaudio tarafından ne döndüğüne bir göz atın ve bunu Ubuntu'daki varsayılan ayarlarınızla karşılaştırın.

12

Sen wxPython

sound = wx.Sound('sound.wav') 
sound.Play(wx.SOUND_SYNC) 

veya

sound.Play(wx.SOUND_ASYNC) 

Here wxPython demo dan bir örnek kullanabilirsiniz. senin koşulları yerine getirdiği takdirde

2

düşündüm: Sonra

> pip install simpleaudio 

:

import simpleaudio as sa 

wave_obj = sa.WaveObject.from_wave_file("path/to/file.wav") 
play_obj = wave_obj.play() 
play_obj.wait_done() 
0

En basitinden playsound buldum.

from playsound import playsound 

is_synchronus = False 
playsound(r"C:\Windows\Media\chimes.wav", is_synchronus) 
İlgili konular