我正在尝试使用两个 dmix 设备同时向两个硬件设备megalodon
和播放音频analog
。megalodon
是 USB 耳机,analog
只是我电脑上的 3.5 毫米端口。当我将音频路由到megalodon
called的 dmixheadsetout
并将其直接路由到 时analog
,它工作正常。但是,如果我将其路由到headsetout
和analogout
( 的 dmix analog
),我会收到错误ALSA lib pcm_params.c:2162:(snd1_pcm_hw_refine_slave) Slave PCM not usable
。如果我只输出到analogout
,无论是直接播放它还是创建仅输出到它的多输出设备都analogout
可以正常工作。
我怎样才能使两者输出headsetout
并analogout
正常工作?
以下是我的 asound.conf 的相关部分,以便于理解发生了什么。此外,我尝试过将 dmix 设备包装在设备中,plug
就像它们在下面的配置中一样,以及直接使用它们,但都无济于事。
pcm.megalodon {
type hw
card "Megalodon"
}
pcm.analog {
type hw
card "PCH"
device 0
}
#Play to headphones and earbuds
pcm.splitout {
type plug
slave.pcm {
type multi
slaves {
a { channels 2 pcm "headsetout" }
b { channels 2 pcm "analog" }
}
bindings {
0 { slave a channel 0 }
1 { slave a channel 1 }
2 { slave b channel 0 }
3 { slave b channel 1 }
}
}
ttable [
[ 1 0 1 0 ]
[ 0 1 0 1 ]
]
}
#Theoretically play to headphones and earbuds
#this one doesn't work
#error:
#ALSA lib pcm_params.c:2162:(snd1_pcm_hw_refine_slave) Slave PCM not usable
#aplay: set_params:1204: Broken configuration for this PCM: no configurations available
#
#However, analogout works when used on it's own
pcm.splitout1 {
type plug
slave.pcm {
type multi
slaves {
a { channels 2 pcm "headsetout" }
b { channels 2 pcm "analogout" }
}
bindings {
0 { slave a channel 0 }
1 { slave a channel 1 }
2 { slave b channel 0 }
3 { slave b channel 1 }
}
}
ttable [
[ 1 0 1 0 ]
[ 0 1 0 1 ]
]
}
#dmix output for headphones
pcm.headsetout {
type plug
slave.pcm {
type dmix
ipc_key 192959
ipc_key_add_uid true
ipc_perm 0666
slave {
pcm "megalodon"
rate 48000
channels 6
period_time 0
period_size 1024
buffer_time 0
buffer_size 16384
}
}
}
#dmix output for analog jack (3.5mm)
pcm.analogout {
type plug
slave.pcm {
type dmix
ipc_key 3785682
ipc_key_add_uid true
ipc_perm 0666
slave {
pcm "analog"
rate 48000
channels 2
period_time 0
period_size 1024
buffer_time 0
buffer_size 16384
}
}
}
答案1
我决定尝试使用不同的插件来解决这个问题,最后我能够用 upmix 来解决这个问题。我以为这样type plug
就可以解决这个问题,但事实并非如此。
前:
#dmix output for headphones
pcm.headsetout {
type plug
slave.pcm {
type dmix
ipc_key 192959
ipc_key_add_uid true
ipc_perm 0666
slave {
pcm "megalodon"
rate 48000
channels 6
period_time 0
period_size 1024
buffer_time 0
buffer_size 16384
}
}
}
后:
#dmix output for headphones
pcm.headsetout {
type upmix
slave.pcm {
type plug
slave.pcm {
type dmix
ipc_key 192959
ipc_key_add_uid true
ipc_perm 0666
slave {
pcm "megalodon"
rate 48000
channels 6
period_time 0
period_size 1024
buffer_time 0
buffer_size 16384
}
}
}
}