如何在没有 pulseaudio 的情况下更改 ALSA 中的音频设备并需要重新启动

如何在没有 pulseaudio 的情况下更改 ALSA 中的音频设备并需要重新启动

在解决了无法解决的 pulseaudio 问题后,我决定使用简单的 sudo apt-get purge pulseaudio 恢复到 alsa。

这对我来说很有用,但是将默认设备更改为我的 USB 耳机很困难,因为我想要切换它们而不是为整个会话设置默认值。

答案1

我目前正在使用的解决方案是通过在我的主文件夹中创建 .asoundrc 文件并添加代码来更改默认设备:pcm.!default {type hw card 2}

我知道运行时要从输出中指定卡 2:aplay -l

对于我来说,输出是这样的:

**** List of PLAYBACK Hardware Devices ****
card 0: SB [HDA ATI SB], device 0: ALC892 Analog [ALC892 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: SB [HDA ATI SB], device 1: ALC892 Digital [ALC892 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: Headset [Cyborg F.R.E.Q.5 Gaming Headset], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

此后我使用以下命令重新加载 alsa:sudo alsa reload

不过,正在运行的程序仍然需要重新启动,但这是一个开始。

我使用这个奇怪的脚本在我的两张卡之间切换:

#!/bin/bash
currentSound=`cat currentSound`
if [ "$currentSound" == "0" ]; then
    echo "pcm.!default { type hw card 2}" > ~/.asoundrc
    echo "2" > currentSound
    echo "2"
else 
    echo "pcm.!default { type hw card 0}" > ~/.asoundrc
    echo "0" > currentSound
    echo "0"
fi
sudo alsa reload

它创建一个文件,用于了解下一步需要交换什么。

它并不像 pulseaudio 那样无缝,但这是我目前所能想到的全部。

相关内容