配置 ALSA 以使用特定麦克风和输出

配置 ALSA 以使用特定麦克风和输出

我正在尝试将 ALSA 配置为使用 HDMI 声音作为输出,使用 USB 麦克风作为输入。我有一个asound.conf没有 dmix/dsnoop 的工作:

pcm.usb_mic_raw {
  type hw
  card Device
  device 0
}

pcm.usb_mic_plug {
  type plug
  slave {
    pcm usb_mic_raw
    format S16_LE
    rate 48000
    channels 1
  }
}

# Don't use pcm.hdmi because it's taken by the default config files
pcm.hdmi_raw {
  type hw
  card HDMI
  device 9
}

pcm.hdmi_plug {
  type plug
  slave {
    pcm hdmi_raw
    format S16_LE
    rate 48000
    channels 2
  }
}

pcm.!default {
  type asym;
  playback.pcm "hdmi_plug";
  capture.pcm "usb_mic_plug";
}

这工作得很好,只是没有混合——一次只有一个程序可以播放声音。

当我尝试从 切换plug到时dmix,出现以下错误:

juice:~ aplay -D hdmi_plug good.wav                                                                  1 :(
Playing WAVE 'good.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono
[..works..]

juice:~ aplay -D hdmi_dmix good.wav                                                                  1 :(
Playing WAVE 'good.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono
aplay: set_params:1358: Channels count non available

我添加的部分如下:

pcm.hdmi_dmix {
  type dmix
  ipc_key 200
  slave {
    pcm hdmi_raw
    format S16_LE
    rate 48000
    period_time 0
    period_size 2048
    buffer_size 8192
    channels 2
  }
  bindings {
   0 0
   1 1
  }
}

如果重要的话,我使用的是 Arch Linux,并且安装了pulseaudio和pulseaudio-alsa。

答案1

部分答案:

当我在未安装pulseaudio的情况下打开Discord时,我看到零个设备并且没有音频。

这意味着 Discord 可能没有 ALSA 驱动程序,只有 Pulseaudio 驱动程序。 (但 Discord 是闭源的,所以我不能肯定地说)。

当我打开安装了pulseaudio的Discord时,我看到了一个输出设备,称为“alsa”。

不确定 Discord 如何命名 Pulseaudio 设备。

我正在配置 ALSA,因为pulseaudio 似乎没有检测到我的设备,

那么你需要对此进行调试。显示什么pactl list short?您应该看到至少一张 ALSA 卡(可能更多)以及关联的源和接收器。

如果是:同时安装pavucontrol,在 Discord 运行时启动它,并为 Discord 选择正确的源和接收器。

相关内容