【发布时间】:2011-01-08 16:38:18
【问题描述】:
我正在用 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()
它工作得很好,除非任何其他设备已经在输出声音。
如果没有不播放声音的先决条件,我怎么能做基本相同的(在 linux 下)?
如果您认为该过程需要 API 来确保软件混合,请提出一种方法:)
感谢支持 :)
【问题讨论】:
-
没有现代音响系统一次只能处理一个流。