我尝试使用pyaudio播放.wav文件。在Windows上运行良好,但在Ubuntu上当另一个设备正在使用声音时无法工作。
错误是“IOError:[错误编号 无效的输出设备(没有默认 输出设备)] -9996”
是否有其他库可以尝试使用?还有其他方法吗?
我尝试使用pyaudio播放.wav文件。在Windows上运行良好,但在Ubuntu上当另一个设备正在使用声音时无法工作。
错误是“IOError:[错误编号 无效的输出设备(没有默认 输出设备)] -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
当然,你可以查看Python维基百科的音频部分(http://wiki.python.org/moin/Audio/),了解其他库,例如https://docs.python.org/library/wave.html或者在Python的游戏库维基百科中(http://wiki.python.org/moin/PythonGameLibraries)寻找指向OpenAL或Pygame的声音模块。
最后,虽然我不知道pyaudio的限制,但是你的错误信息听起来更像是该库无法找到默认输出设备,而不是设备正在被另一个进程使用。也许可以查看pyaudio的get_default_output_device_info
返回的输出设备,并将其与Ubuntu默认设置进行比较。
> 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()
playsound
是最简单的。from playsound import playsound
is_synchronus = False
playsound(r"C:\Windows\Media\chimes.wav", is_synchronus)
os.path.join
让 Python 自动使用正确的斜杠呢?https://docs.python.org/3/library/os.path.html#join - Nav我不确定那是否符合你的要求,但是我马上想到了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()