![](/img/trans.png)
[英]What's the simplest cross-platform way to pop up graphical dialogs in Python?
[英]What's a cross platform way to play a sound file in python?
我嘗試使用pyaudio播放.wav文件。 它在Windows上運行良好,但在其他設備使用聲音時在Ubuntu中不起作用。
錯誤是“IOError:[Errorno無效的輸出設備(無默認輸出設備)] -9996
我可以嘗試使用另一個庫嗎? 另一種方法?
你看過pymedia嗎? 播放WAV文件看起來很簡單:
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)
參考: http : //pymedia.org/tut/play_wav.html
當然,您可以查看Audio( http://wiki.python.org/moin/Audio/ )下的Python wiki,了解其他庫,例如https://docs.python.org/library/wave.html或者再次在Python的游戲庫( http://wiki.python.org/moin/PythonGameLibraries )下的wiki中,它將指向綁定到具有聲音模塊的OpenAL或Pygame。
最后,雖然我不知道pyaudio的局限性,但是您的錯誤消息聽起來更像是庫無法找到默認輸出設備而不是另一個進程正在使用該設備。 也許看一下get_default_output_device_info
的get_default_output_device_info返回的輸出設備,並將它與Ubuntu中的默認設置進行比較。
您可以嘗試Simpleaudio :
> 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()
我不確定這是否符合你的要求,但我立刻想到了PyGame
http://www.pygame.org/docs/ref/mixer.html#pygame.mixer.Sound
from pygame import mixer
mixer.init()
s = mixer.Sound('sound.wav')
s.play()
我發現playsound
是最簡單的。
from playsound import playsound
is_synchronus = False
playsound(r"C:\Windows\Media\chimes.wav", is_synchronus)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.