当我将耳机连接到前置插孔时,我的扬声器(线路输出)会静音。我想在不断开耳机的情况下切换到扬声器。我在gnome-control-center
和中看到两个可能的选择pavucontrol
:耳机和线路输出。但当我切换到线路输出时,我什么也没听到。我怎样才能设置正确的行为?
我安装了 Realtek ALC1150,并安装了 Alsa 和 PulseAudio。
答案1
1.软件切换支持
检查您的声卡是否支持前音频面板的软件切换。一些较旧的主板根本不支持软件切换。某些声卡在主板上具有适用于这两种变体的连接器:软件和硬件交换。在这种情况下,请确保根据主板手册,使用带有软件切换功能的连接器。
2.Alsamixer 自动静音
自动静音是 Alsa 的一项功能。它确保当您连接耳机时,其他音频输出会自动静音。您可以在中找到并禁用它alsamixer
。打开 AlsaMixer,选择您的声卡,然后使用和F6移动并找到自动静音。如果已启用,请使用向下箭头键将其禁用。<>
3.PulseAudio配置
这对我来说是最有问题的部分,因为 PulseAudio 的文档很少。当我在上一步中禁用自动静音时,扬声器在这两种情况下都会播放。不管我是否切换到耳机或线路输出。
所以我要做的就是再次研究 AlsaMixer 并了解音量条如何对设置或 pavucontrol 中的音频切换做出反应。
正如您所看到的,切换到耳机后,几乎所有音量条都静音了。但不久后我发现,由于某种原因,我的扬声器的音量是由正面酒吧。所以现在我要做的最后一件事就是配置 PulseAudio 将其静音正面切换到耳机后的音量条。
我们需要编辑的PulseAudio配置文件存储在/usr/share/pulseaudio/alsa-mixer/paths/
.就我而言,我只编辑了文件analog-output-headphones.conf
,但这可能会因配置而异。您必须以 root 身份编辑该文件才能包含以下行:
[Element Front]
switch = off
volume = off
完成后,保存文件并使用 重新启动 PulseAudio pulseaudio -k
。
输出切换现在应该按预期工作。
答案2
您可以使用以下在线快捷方式进行切换:
[[ $(pacmd list-cards | grep "active profile" | cut -d " " -f 3-) = "<output:hdmi-stereo-extra1+input:analog-stereo>" ]] && pacmd set-card-profile 0 "output:analog-stereo+input:analog-stereo" || pacmd set-card-profile 0 "output:hdmi-stereo-extra1+input:analog-stereo"
在这种情况下,替代方案是hdmi-stereo-extra1+input:analog-stereo
和output:analog-stereo+input:analog-stereo
。列出您可用的个人资料:
pacmd list-cards | grep "output:" | grep -v "available: no"
答案3
Pablo A 给出的有用的一句话可以设置到 bash 脚本中,如下所示(并且至少在 GNOME 中设置为应用程序快捷方式):-
#!/bin/bash
AudJk=$(pacmd list-cards | grep "active profile" | grep "output:" | cut -d " " -f 3-)
HDMI="output:hdmi-stereo+input:analog-stereo"
HdFn="output:analog-stereo+input:analog-stereo"
[[ $AudJk = "<$HDMI>" ]] && pacmd set-card-profile 0 $HdFn || pacmd set-card-profile 0 $HDMI
我是脚本新手,但是...
...希望将卡配置文件字符串转换为变量使其更容易理解?
...也许有一种更优雅的方式来执行第一个逻辑测试,因为[[ $AudJk = "<$HDMI>" ]]
可能不是最佳的?
...也许有比使用更简单的内置方法来引用输出配置文件grep "output:"
,但据我们所知,pacmd
.
希望这对一些人有帮助。