带 alsa 和 USB 音频混音器的并行/多音频输出

带 alsa 和 USB 音频混音器的并行/多音频输出

我的笔记本电脑有一个新的扩展坞,但配置音频/alsa 时遇到了困难。

检查 cat /proc/asound/cards 后

 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xec248000 irq 158
 1 [Audio          ]: USB-Audio - ThinkPad Dock USB Audio
                      Generic ThinkPad Dock USB Audio at usb-0000:3c:00.0-1.4.4, high speed

我像这样创建了 /etc/asound.conf

pcm.!default {
    type hw
    card 1
}

ctl.!default {
    type hw           
    card 1
}

这似乎适用于大多数应用程序(Chromium、VLC、mpd 等),但我在 Firefox 中没有音频输出,并且同时在多个应用程序(并行?)上没有音频输出(例如:如果我启动 Chromium 我在 VLC 中没有音频)。

VLC 给我这个错误消息,例如:

Audio output failed:
The audio device "default" could not be used:
Device or resource busy.
  • 如何使其同时适用于多个应用程序?
  • Firefox 有什么特别要做的事情吗?
  • 如果卡 1(扩展坞)未插入,如何回退到卡 0(笔记本电脑)?

资源:

已安装的软件包:

alsa-utils, alsa-firmware, sof-firmware

名称-a:

Linux T480s 6.7.4-arch1-1 #1 SMP PREEMPT_DYNAMIC Mon, 05 Feb 2024 22:07:49 +0000 x86_64 GNU/Linux

编辑:多个音频输出和 Firefox 音频与 card0(内部)一起工作正常

编辑2:

下列的https://wiki.archlinux.org/title/Advanced_Linux_Sound_Architecture#Configuring_the_index_order_via_kernel_module_options我更改了 /etc/modprobe.d/alsa-base.conf 中卡的索引顺序:

options snd_usb_audio index=0
options snd_hda_intel index=1

我删除了 /etc/asound.conf 并重新启动。

当 snd_usb_audio 作为默认卡(card0)加载时,它正在工作。 Firefox 音频工作正常,我可以同时在多个应用程序中输出音频。

所以这意味着我只需要在插入时将 snd_usb_audio 作为 card0 加载,如果没有插入则回退到 snd_hda_intel。我们可以在 alsa-base.conf 或 /etc/asound.conf 中执行此操作吗?

答案1

<kidding>“呃?我同意你的观点,我的朋友!</kidding>


以某种混乱的方式处理你的问题:

我在 Firefox 中没有音频输出

因为……噗……我不记得了,出于某种悲惨的原因,Firefox 决定支持单个音频后端:pulseaudio。
如果您想直接输出到 alsa(或其他声音服务器),唯一遵循的方法是……从源代码构建它,因为它仍然提供一些配置选项来实现这一点。

设备或资源繁忙。

考虑到您对pcm.!default
第一个应用程序的定义,使用它的第一个应用程序将立即阻止设备供其自己和独占使用,从而阻止任何其他应用程序同时进行。
为了避免这种情况,我在系统上实现的解决方案包括使 pcm.default 成为 dmixer 插件:

pcm.!default{
        type plug
        slave.pcm "dmixer"
        hint{
                show on
                description "Tux Alsa Default"}}

作为记录,以下是我的 dmixer 详细信息:

pcm.dmixer{
        type dmix
        ipc_key 219345
        slave{
                pcm MAUDIO
                format S32_LE
                period_size 1024
                buffer_size 4096 }}

以及我的 MAUDIO pcm,只是为了让您注意到定义nonblock true

pcm.MAUDIO{
        type hw
        card M2496
        device 0
        subdevice 0
        nonblock true}

相关内容