使用ossaudiodev进行播放

时间:2011-05-25 00:22:47

标签: python audio audio-streaming

我正在尝试编写流式音频客户端,我想使用ossaudiodev函数来帮助我在本地计算机上播放音频。不幸的是,每次我尝试运行代码时都会出现异常:

Unhandled exception in thread started by <function audioplayer at 0x88e96f4>
Traceback (most recent call last):
  File "client.py", line 56, in audioplayer
    audio = ossaudiodev.open("/dev/audio", 'w')
IOError: [Errno 16] Device or resource busy: '/dev/audio'

这是我的代码。非常简单的方法,但不知道如何释放/ dev / audio资源。

def audioplayer():

    audio = ossaudiodev.open("/dev/audio", 'w')
    audio.setfmt(ossaudiodev.AFMT_MU_LAW)
    audio.channels(2)
    audio.speed(8000)

    packet = 0

    sleep(.20) # give it a little bit of time to fill ze buffers

    while (packets[packet] != "\0"):
        audio.write(packets[packet])
        packet += 1

对此有什么窍门?

编辑:答案显而易见且愚蠢。我在运行代码的时候正在玩潘多拉,因此扬声器正忙着这样做。任何人都可以澄清为什么会这样吗?其他应用程序如何同时运行多个音频流,但我似乎不能?

2 个答案:

答案 0 :(得分:0)

即使在可用的系统上,OSS界面通常只是ALSA的外观。考虑使用支持多个接口的库,例如pyao。

答案 1 :(得分:0)

你的桌面管理员已经在使用你的声卡了,你可能有更多运气用于alsa的dmix插件,但它通常很难

soundblaster live有混合,所以你可以多次打开

并且肯定地说你可以找到一个工作的pyao后端