Mor*_*ock 7 python linux audio timer
我正在使用python中的一个计时器,当等待时间结束时,它会发出响声.我使用以下代码:
from wave import open as wave_open
from ossaudiodev import open as oss_open
def _play_chime():
"""
Play a sound file once.
"""
sound_file = wave_open('chime.wav','rb')
(nc,sw,fr,nf,comptype, compname) = sound_file.getparams( )
dsp = oss_open('/dev/dsp','w')
try:
from ossaudiodev import AFMT_S16_NE
except ImportError:
if byteorder == "little":
AFMT_S16_NE = ossaudiodev.AFMT_S16_LE
else:
AFMT_S16_NE = ossaudiodev.AFMT_S16_BE
dsp.setparameters(AFMT_S16_NE, nc, fr)
data = sound_file.readframes(nf)
sound_file.close()
dsp.write(data)
dsp.close()
Run Code Online (Sandbox Code Playgroud)
它工作得很好,除非任何其他设备已经输出声音.
如果没有播放声音的先决条件,我怎么能基本相同(在linux下)?
如果您认为该过程需要API来确保软件混合,请建议一种方法:)
Thx的支持:)
简单的答案是"从OSS切换到PulseAudio".(或者设置ALSA使用dmix,或者使用更好的Linux驱动程序获得声卡......)
更复杂的答案是,你的代码已经按照你想要的方式工作......在某些声卡上.OSS驱动程序可以暴露硬件混音器,以便您可以同时播放多个音频流,或者它们可以显示单个流,从而导致您在系统上看到阻塞音频.这里唯一正确的解决方案是使用确保软件混合的API.
| 归档时间: |
|
| 查看次数: |
2332 次 |
| 最近记录: |