我正在尝试将 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 选择正确的源和接收器。