You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04下Pygame/Pyglet直接调用ALSA致多音频播放失败

Ubuntu 20.04.5 LTS下Pygame/Pyglet无法与其他音频源同时播放的问题

我使用Ubuntu 20.04.5 LTS系统,单独运行Pygame或Pyglet播放音频时一切正常,但当系统有其他音频源正在播放时就会报错。

Pygame相关情况

代码示例:

from pygame import mixer

mixer.init()
mixer.music.load("path_to_file.wav")
mixer.music.play()

报错信息:

pygame.error: ALSA: Couldn't open audio device: Device or resource busy

看起来Pygame直接调用ALSA,导致无法同时播放多音频。

Pyglet相关情况

代码示例:

import pyglet
pyglet.options['audio'] = ('openal', 'pulse', 'directsound', 'silent')

pyglet.media.load("path_to_file.wav", streaming=True).play()

单独运行正常,但有其他音频源时报错:

AttributeError: 'OpenALDriver' object has no attribute 'worker'

已尝试的解决操作

核心问题似乎是这些程序直接调用ALSA,我已安装pulseaudio和openal,但无法正常使用。后来尝试通过环境变量指定Pygame使用PulseAudio驱动:

from os import environ
environ["SDL_AUDIODRIVER"] = "pulseaudio"

但报错:

pygame.error: Could not setup connection to PulseAudio

怀疑系统缺少某些组件,但不知道具体是什么。


解决方案

1. 修复Pygame的PulseAudio连接问题

  • 先确保PulseAudio服务正常运行:
    systemctl --user restart pulseaudio
    
  • 安装SDL与PulseAudio相关依赖:
    sudo apt install libsdl2-mixer-2.0-0 libsdl2-mixer-dev libpulse-dev
    
  • 重新安装带PulseAudio支持的Pygame:
    pip uninstall pygame
    pip install pygame --no-binary pygame
    
  • 调整代码中环境变量的位置(必须放在mixer.init()之前):
    from os import environ
    environ["SDL_AUDIODRIVER"] = "pulseaudio"
    from pygame import mixer
    
    mixer.init()
    mixer.music.load("path_to_file.wav")
    mixer.music.play()
    

2. 调整Pyglet的音频驱动优先级

  • 把PulseAudio放在驱动列表最前面,避免OpenAL抢占设备:
    import pyglet
    pyglet.options['audio'] = ('pulse', 'openal', 'directsound', 'silent')
    
    player = pyglet.media.load("path_to_file.wav", streaming=True).play()
    pyglet.app.run()
    
  • 升级Pyglet并安装依赖:
    sudo apt install libpulse-dev
    pip install pyglet --upgrade
    

3. 配置ALSA通过PulseAudio转发

新建或编辑~/.asoundrc文件,添加以下内容:

pcm.!default {
    type pulse
}
ctl.!default {
    type pulse
}

这样所有调用ALSA的程序都会通过PulseAudio处理,实现多音频同时播放。

内容的提问来源于stack exchange,提问作者user20061243

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:30:43