魅力程序猿

  • 首页
  • Java
  • Android
  • APP
    • 扑克计分器
    • Video Wallpaper
  • 联系我
  • 关于我
  • 资助
道子
向阳而生
  1. 首页
  2. AI技术
  3. 正文

ClassIn 在 Linux 下无法播放音频

2026年5月24日 11点热度 0人点赞 0条评论

📰 来源: 博客园


我在 Debian (KDE Plasma) 系统上使用 ClassIn 时,发现无法播放任何音频。其他应用程序(如浏览器、媒体播放器)声音正常,仅 ClassIn 存在问题。ClassIn 的音频输出设备选项中也仅有 "default" 一项,无法手动选择其他设备。

  • 系统:Debian Testing
  • 内核:7.0.7+deb14-amd64
  • 桌面环境:KDE Plasma 6.6.5
  • 音频服务:PipeWire
  • ClassIn 版本:6.0.6
  • 从 ClassIn 官方得知,ClassIn 使用 ALSA。

    **** List of PLAYBACK Hardware Devices ****
    card 0: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 0: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 0: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: PCH [HDA Intel PCH], device 0: ALC3232 Analog [ALC3232 Analog]
      Subdevices: 0/1
      Subdevice #0: subdevice #0
    
  • card 0:HDA Intel HDMI,对应 HDMI 输出
  • card 1:HDA Intel PCH (ALC3232 Analog),对应耳机孔或内置扬声器
  • 由于 ALSA 的 "default" 设备通常指向 card 0,而我的 HDMI 显示器并没有扬声器,这意味着 ClassIn 的声音可能被送到了一个没有输出能力的设备上。

    那么问题来了:我的显示器没有任何扬声器。为什么系统会认为它是一个音频输出设备?

    读取显示器的 EDID 信息:

    edid-decode /sys/class/drm/card0-HDMI-A-2/edid
    

    输出中 CTA-861 Extension Block 部分仅包含 Video Data Block 和 Vendor-Specific Data Block,完全没有 Audio Data Block 和 Speaker Allocation Data Block。这说明显示器已经如实向系统报告了自己不支持音频。

    那为什么系统还觉得我的显示器有扬声器?搜索得知,Linux 内核的 HDA HDMI 驱动(snd-hda-codec-hdmi)的设计策略是为所有 HDMI 输出端口创建音频设备,而不会根据 EDID 中的音频信息自动禁用无用的端口。

    既然 card 0 指向了一个没有扬声器的 HDMI 设备,一个自然的思路是让 PCH 声卡排到第一位,这样 ALSA 的 "default" 就会指向它。

    编辑 /etc/modprobe.d/alsa-reorder.conf:

    options snd-hda-intel index=1,0
    

    index=1,0 的作用是将先被内核发现的 HDMI 设备降为 card 1,后被发现的 PCH 设备提为 card 0。

    我重启设备。再打开ClassIn,依然没有声音。

    **** List of PLAYBACK Hardware Devices ****
    card 0: PCH [HDA Intel PCH], device 0: ALC3232 Analog [ALC3232 Analog]
      Subdevices: 0/1
      Subdevice #0: subdevice #0
    card 1: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    

    此时 PCH 已经成功变为 card 0。配置生效了,但没有解决问题。

    ALSA default 设备排查

    speaker-test -t wav -c 2
    
    speaker-test 1.2.15.2
    Playback device is default
    Stream parameters are 48000Hz, S16_LE, 2 channels
    WAV file(s)
    ALSA lib pcm_dmix.c:1000:(snd_pcm_dmix_open) [error.pcm] unable to open slave
    Playback open error: -16,Device or resource busy
    

    Device or resource busy。这说明声卡硬件已经被其他进程占用,ALSA 无法直接访问。

    查看谁占用了音频设备:

    fuser -v /dev/snd/*
    
                         USER        PID ACCESS COMMAND
    /dev/snd/controlC0:  user       1114 F.... pipewire
                         user       1175 F.... wireplumber
    /dev/snd/controlC1:  user       1175 F.... wireplumber
    /dev/snd/pcmC0D0p:   user       1114 F...m pipewire
    /dev/snd/seq:        user       1114 F.... pipewire
    

    PipeWire 占用了 /dev/snd/pcmC0D0p(即 card 0 的播放设备)。这正是 ClassIn 想要访问的设备。

    pactl info 2>&1 | head -5
    
    Server String: /run/user/1000/pulse/native
    Library Protocol Version: 35
    Server Protocol Version: 35
    Is Local: yes
    Client Index: 156
    

    系统使用的是 PipeWire(兼容 PulseAudio 接口)。ALSA 声卡硬件设备被占用了

  • PipeWire 作为系统音频服务,直接占用了 ALSA 声卡硬件设备
  • ClassIn 尝试通过 ALSA 的 "default" 设备直接访问硬件
  • 由于硬件已被 PipeWire 独占,ClassIn 无法打开设备,播放失败
  • 其他应用声音正常,是因为它们通过 PipeWire(PulseAudio 兼容接口)播放,而非直接操作 ALSA 硬件
  • pipewire-alsa 包提供了 ALSA 到 PipeWire 的兼容层。

    sudo apt ins


    🔗 原文链接: 点击阅读原文

    标签: AI 人工智能 技术博客
    最后更新:2026年5月24日

    daozi

    这个人很懒,什么都没留下

    点赞
    < 上一篇

    文章评论

    您需要 登录 之后才可以评论
    搜索
    联系方式

    QQ群:179730949
    QQ群:114559024
    欢迎您加入Android大家庭
    本人QQ:136049925

    赐我一丝安慰
    给我一点鼓励

    COPYRIGHT © 2023 魅力程序猿. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang

    豫ICP备15000477号