因此,我目前的设置是使用通过 HDMI 插入笔记本电脑的显示器,并使用其中的扬声器(而不是内置笔记本电脑的扬声器)来播放音频。机器启动时默认使用 HDMI,但我经常会在一天中暂停笔记本电脑,每当它恢复时,它就会将声音设备切换到内置扬声器。
你可以想象这不是一个大问题,但很烦人,我想知道是否有一个脚本可以用来强制它在恢复后重新选择 HDMI 或禁用内置扬声器,或以某种方式设置为默认值。仅供参考,两个内置扬声器都在同一个“声卡”上,但属于两个不同的设备。我使用 Ubuntu 16.04。
答案1
如果您不想重新启动,只需重新启动 pulseaudio:
pulseaudio --kill; pulseaudio --start
答案2
我在 Ubuntu 17.10 上遇到了同样的问题。挂起后,甚至在调暗显示器后,它总是会将我的音频输出从数字输出(所需)更改为 HDMI,即使我的显示器没有任何扬声器。注释掉以下行
load-module module-switch-on-port-available
按照/etc/pulse/default.pa
描述的方法做了永久禁用 HDMI 声音。
请注意,如上所述设置默认接收器不会改变行为。此外,上面提供的用于在挂起后设置音频卡配置文件的脚本是特定于用户的。
答案3
此问题可能与 Pulseaudio 版本 8 的问题有关,具体请参见freedesktop.org 上的这个(长)错误线程。
基本上,Pulseaudio 在与 HDMI 失去联系时会重新路由声音,并且在 HDMI 重新连接后不会返回声音。该问题已在版本 9 中得到修复。
要将版本 8 恢复到以前版本的行为,请按照这些方向然后重新启动。
编辑
/etc/pulse/default.pa
以注释掉(添加#
到开头)该行:#load-module module-switch-on-port-available
然后将声音输出设置为声音设置并通过暂停/恢复或黑屏来检查它是否持续存在。它对我来说确实有效。
答案4
修复 PulseAudio 在暂停时关闭 HDMI 声音的问题
此“未记录的功能”出现在 Ubuntu 16.04 和新版本的 PulseAudio 8 中。
创建一个新文件/lib/systemd/system-sleep/tv-sound
并复制:
#!/bin/sh
case $1/$2 in
pre/*)
echo "Going to $2..."
# Place your pre suspend commands here, or `exit 0`
# if no pre suspend action required
sleep 1
;;
post/*)
echo "Waking up from $2..."
# Place your post suspend (resume) commands here, or `exit 0`
# if no post suspend action required
sleep 2
export PULSE_RUNTIME_PATH="/run/user/1000/pulse/"
sudo -u rick -E pacmd set-card-profile 0 output:hdmi-stereo
;;
esac
笔记:将用户名rick
(倒数第三行)替换为您的用户名。
然后使用以下命令将其标记为可执行:
sudo chmod +x /lib/systemd/system-sleep/tv-sound
output:hdmi-stereo
如果您的系统上的设备(对于大多数人来说)不同,则可能需要执行额外的步骤。