如何在不断开连接的情况下在耳机和扬声器之间切换

如何在不断开连接的情况下在耳机和扬声器之间切换

当我将耳机连接到前置插孔时,我的扬声器(线路输出)会静音。我想在不断开耳机的情况下切换到扬声器。我在gnome-control-center和中看到两个可能的选择pavucontrol:耳机线路输出。但当我切换到线路输出时,我什么也没听到。我怎样才能设置正确的行为?

我安装了 Realtek ALC1150,并安装了 Alsa 和 PulseAudio。

答案1

1.软件切换支持

检查您的声卡是否支持前音频面板的软件切换。一些较旧的主板根本不支持软件切换。某些声卡在主板上具有适用于这两种变体的连接器:软件硬件交换。在这种情况下,请确保根据主板手册,使用带有软件切换功能的连接器。

2.Alsamixer 自动静音

自动静音是 Alsa 的一项功能。它确保当您连接耳机时,其他音频输出会自动静音。您可以在中找到并禁用它alsamixer。打开 AlsaMixer,选择您的声卡,然后使用和F6移动并找到自动静音。如果已启用,请使用向下箭头键将其禁用。<>

3.PulseAudio配置

这对我来说是最有问题的部分,因为 PulseAudio 的文档很少。当我在上一步中禁用自动静音时,扬声器在这两种情况下都会播放。不管我是否切换到耳机或线路输出。

所以我要做的就是再次研究 AlsaMixer 并了解音量条如何对设置或 pavucontrol 中的音频切换做出反应。

线路输出: AlsaMixer 线路输出

耳机: AlsaMixer 耳机

正如您所看到的,切换到耳机后,几乎所有音量条都静音了。但不久后我发现,由于某种原因,我的扬声器的音量是由正面酒吧。所以现在我要做的最后一件事就是配置 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-stereooutput: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.

希望这对一些人有帮助。

相关内容