我的笔记本电脑有一个新的扩展坞,但配置音频/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(笔记本电脑)?
蒂
资源:
- https://superuser.com/questions/626606/how-to-make-alsa-pick-a-preferred-sound-device-automatically
- https://wiki.archlinux.org/title/Advanced_Linux_Sound_Architecture#Set_the_default_sound_card
已安装的软件包:
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}