Ubuntu 16.04挂起后更改声音设备,如何解决?


18

因此,我目前的设置是使用一台通过HDMI插入笔记本电脑的显示器,并在其中使用扬声器而不是笔记本电脑内置的扬声器。机器启动时,默认情况下使用HDMI,但我通常会全天将笔记本电脑挂起,并且无论何时恢复使用,它都会将声音设备切换为内置扬声器。

可以想象,这不是一个大问题,但很烦人,我想知道是否有一个脚本可以用来迫使它在恢复或禁用内置扬声器后重新选择HDMI,或者将其设置为默认值。仅供参考,两个内置扬声器都在同一个“声卡”上,但是是两个不同的设备

谢谢你的帮助!


您的视频卡是什么?您是否使用任何专有驱动程序?
马科斯·西尔维拉

Answers:


18

如果您不想重新启动,只需重新启动pulseaudio:

pulseaudio --kill; pulseaudio --start

1
这对我不起作用
Elliott

1
这在没有第二个启动命令的情况下有所帮助。我不得不等待几秒钟,并且必须取消输出的静音
最终

这是第一条命令!BOOM又回来了!
markackerman8-gmail.com 18-10-2

7

我在Ubuntu 17.10上遇到了同样的问题。挂起后,甚至在显示器变暗后,即使我的显示器没有任何扬声器,它也始终会将我的音频输出从“数字输出”(所需)更改为HDMI。注释行

load-module module-switch-on-port-available

/etc/pulse/default.pa做的把戏中所述通过HDMI永久禁用声音

请注意,如上所述,设置默认接收器不会更改行为。另外,上面提供的用于在挂起后设置声卡配置文件的脚本是特定于用户的。


1
我知道这已经很老了,但是当插入系统上的耳机时,此功能禁用了自动切换功能。
AmbientCyan


2

跑:

$ pacmd list-cards

显示卡片索引。例如,我的pci声卡位于索引2。模拟输出的声音配置文件(再次作为示例)称为output:analog-stereo

然后:

$ pacmd set-card-profile 2 output:analog-stereo

将此设置为输出(尝试一下)。要使其永久,请编辑/etc/pulse/default.pa并添加:

set-card-profile 2  output:analog-stereo
set-default-sink 2

重新启动pulseaudio或重新启动以检查持久性。


在重新启动时,HDMI音频始终是默认的持久性音频,只有从睡眠恢复后才更改为内置扬声器。做您要说的事并不会阻止hdmi在唤醒后变为内置扬声器。当系统从睡眠状态恢复时,是否可以运行set-card-profile命令?
MattJC

2

这个问题可能与版本8的Pulseaudio的问题有关,如freedesktop.org上的此(长)错误线程所述

基本上,Pulseaudio在失去与HDMI的连接时会重新路由声音,并且在重新连接HDMI之后不会返回声音。它在版本9中已修复。

为了使版本8恢复为先前版本的行为,请遵循以下说明并重新启动。

编辑/etc/pulse/default.pa以注释掉#该行(添加到该行的开头):

#load-module module-switch-on-port-available

然后在“ 声音设置”中设置声音输出,并通过挂起/恢复或黑屏检查其是否持续。它确实为我工作。


@PaulH。,@Toilal您是如何编辑/etc/pulse/default.pa文件的?sudo gedit对我不起作用。
Py-ser

使用gksu gedit /etc/pulse/default.pa
rubo77

已经被注释掉了-SNIF!但是命令.... pulseaudio --kill .....效果很好!
markackerman8-gmail.com 18-10-2

1

对我来说,情况也一样,但是只有当OS启动或恢复时HDMI监视器没有“唤醒”时:“ 设置”>“声音 ”中的设备列表甚至不再显示HMDI / DisplayPort-内置音频

对我来说,解决方法是暂停会话,确保HDMI监视器已打开,然后恢复会话。

在Ubuntu 18.04中,挂起状态在下拉菜单中的PowerOff按钮后面有点疯狂:按住鼠标不放,或按Alt将PowerOff按钮转换为Suspend。谈论隐藏的导航!


+1,感谢您描述如何找到隐藏的暂停!有些人(也许恰巧有一个打开的终端)可能更喜欢运行命令systemctl suspend
赞纳

抱歉,我不得不对我的评论投反对票,因为这似乎是完全随机的:HDMI音频是否出现在声音设备列表中:(
mr0

1

修复PulseAudio关闭Suspend上的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(大多数人使用的设备)系统上的其他设备不同,则可能需要执行其他步骤。


抱歉,但这不能解决问题。我还需要做更多的事情吗?重新启动什么?(我不想重新启动,因为无论如何这都会解决我的系统上的问题)
rubo77

@ rubo77您是否将用户ID更改rick为自己的用户ID?
WinEunuuchs2Unix

当然。如您所说😃–
rubo77

0

自Ubuntu 9.04起,我就遇到了这个问题。从来没有奏效过,现在刚接触HDMI或刚接触Ubuntu的孩子们认为问题是新事物,所以人们试图查看设置中的最新变化而被误导了。因此,让我澄清一下:这个问题一直存在,没有人在研究。我已经花了至少20个小时研究这个问题。所以我过去所做的:

  1. 重启
  2. 在打开电视(HDMI目标)的同时,如果我在正确的时间摆动鼠标,它可能会在50%的时间内恢复声音。这是与时间相关/握手的问题。
  3. 在Ubuntu 14中,我将屏幕分辨率更改为其他分辨率,然后再次返回。这似乎不适用于Ubuntu 16
  4. 不要让它休眠。一种替代方法是执行定时关机。稍后,您只需引导计算机,而不是重新引导。请记住,这是一个TIMING问题,因此,我认为如果时机恰到好处,您在这里的任何想法都可以使用。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.