使用 Xubuntu 18.04,我连接了一个耳机,它有自己的麦克风输入。每次连接时,我都必须启动pavucontrol
,单击“输入设备”选项卡,然后在“端口”下拉菜单中选择“耳机麦克风”(而不是“内置麦克风”)。
每当我断开耳机时,“端口”就会切换回“内置麦克风”,因此下次连接耳机时我必须重复该过程。
有没有办法可以自动完成此操作,或者只需我付出很少的努力?
我在网上搜索并看到了确保 PulseAudio 已加载的建议module-switch-on-connect
,但我检查后pactl list short modules
发现它似乎已经加载了。
答案1
我几乎用这种方法在运行 Debian 10 的笔记本电脑上修复了这个问题:
- 拔下耳机。
- 編輯
/etc/pulse/daemon.conf
— 設定log-level = debug
- 重新启动 pulseaudio:
pulseaudio -k
journalctl --follow
在单独的终端/tmux 窗口中运行- 插入耳机,观察会发生什么。
module-alsa-card.c: Jack 'Headphone Mic Jack' is now plugged in
显示检测到哪个插孔 - 编辑
/usr/share/pulseaudio/alsa-mixer/paths/analog-input-headset-mic.conf
,找到[Jack Headphone Mic]
部分并将state.plugged
从更改unknown
为yes
我说“几乎”,因为
- 麦克风增益未恢复
- 它不会区分外部扬声器(TRS 插孔)和耳机(TRRS 插孔)并切换输入源,所以我听到的是静电噪音而不是内部麦克风音频。
博客文章引导我朝这个方向发展。
答案2
上面发送的解决方案适用于某些 PC,但并非适用于所有 PC。我测试了文档或论坛上能找到的解决方案很长时间,这是唯一有效的解决方案。
所以这里有一个我创建的脚本,您可以在启动会话时添加它(不幸的是,它不适用于整个计算机,因为 PulseAudio 是一个为每个用户独立运行的服务)。
#!/bin/bash
index=$(pacmd list-sources | egrep 'index|ports|analog-input-headset-mic' | egrep '\*\sindex:\s+[0-9]' | cut -d':' -f2);
acpi_listen | while IFS= read -r line;
do
if [ "$line" = "jack/headphone HEADPHONE plug" ]
then
pacmd set-source-port $index analog-input-headset-mic;
elif [ "$line" = "jack/headphone HEADPHONE unplug" ]
then
pacmd set-source-port $index analog-input-internal-mic;
fi
done
这个主题是我的资料的一部分,这里是另一个帮助我进行研究和开发脚本的链接: