AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 962920
Accepted
bgoodr
bgoodr
Asked: 2017-10-08 13:40:57 +0800 CST2017-10-08 13:40:57 +0800 CST 2017-10-08 13:40:57 +0800 CST

如何让 pulseaudio 在 Firefox 的 Ubuntu 17.04 和 17.10 中自动启动?

  • 772

我正在尝试让 Ubuntu 17.04 和 17.10 上的 Firefox 56.0 在 Facebook 的视频中播放声音(甚至不确定它是否特定于 Facebook)。我已将问题归结为在播放视频时 pulseaudio 没有启动,或者根本没有启动。但是,如果我从命令行执行 pulseaudio,然后从 Facebook 中播放视频,我会听到声音。

让我困惑的是试图弄清楚我应该期望什么时候应该启动这个 pulseaudio UNIX 进程。

  1. 在启动时?
  2. 在用户登录之前的 X11 启动时间?
  3. 在用户登录时(“欢迎者”的东西;GDM 或其他)?
  4. 由 Firefox 在某些共享库中执行代码时要求启动 pulseaudio

https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Running/向我暗示它应该在用户登录时。

/etc/xdg/autostart 是一个目录,其中包含有关会话服务的信息,图形会话管理器应在用户登录时自动启动。PulseAudio 在那里发布自己的文件。pulseaudio.desktop 告诉会话管理器运行 start-pulseaudio-x11,这是一个加载一些 X11 相关模块的脚本(在 KDE 上还有 module-device-manager,这是 KDE 的音频路由配置工具所必需的)。start-pulseaudio-x11 通常是需要运行 PulseAudio 服务器的第一件事,因此通常当会话管理器在登录会话开始时运行 start-pulseaudio-x11 时服务器会启动。

如果禁用自动生成,start-pulseaudio-x11 没有效果,因为 start-pulseaudio-x11 不会显式启动服务器。它在加载 X11 模块时依赖于自动生成。从这个意义上说,脚本名称具有误导性。过去用于显式启动服务器的 start-pulseaudio-x11 脚本,其中解释了脚本名称。

根据http://support.system76.com/articles/audio/上的说明,我最近执行的命令是为了确保我从一个良好的基线开始(出于不同的原因,因为我的机器中的前音频连接器不是工作并执行以下修复它):

rm -r ~/.config/pulse
sudo apt install --reinstall alsa-base alsa-utils pulseaudio linux-sound-base libasound2

我现在不认为丢失的~/.config/pulse目录是罪魁祸首,但它是吗?

dmesg | grep pulse

什么都没有显示,所以就好像某些东西甚至没有在正确的时间执行正确的脚本。

我需要更改什么才能启用此功能?我不想在pulseaudio每次运行 firefox 时手动调用(我可以在脚本上拼凑一些东西,但我不想)。

我得出结论,自动生成已启用,因为它已被注释掉(假设注释掉意味着被注释掉的东西是程序的默认值):

drunkard@norehab:~$ ps -ef --forest --cols=10000 | grep pulse
drunkard    3448  2721  0 14:25 pts/0    00:00:00  |               \_ grep pulse
drunkard@norehab:~$ ls -ld ~/.config/pulse
ls: cannot access '/home/drunkard/.config/pulse': No such file or directory
drunkard@norehab:~$ ls -ld /etc/xdg/autostart/pulseaudio-kde.desktop
ls: cannot access '/etc/xdg/autostart/pulseaudio-kde.desktop': No such file or directory
drunkard@norehab:~$ ls -ld /etc/xdg/autostart/pulseaudio*
-rw-r--r-- 1 root root 4836 Mar 29  2017 /etc/xdg/autostart/pulseaudio.desktop
drunkard@norehab:~$ grep auto /etc/pulse/client.conf
; autospawn = yes
; auto-connect-localhost = no
; auto-connect-display = no
drunkard@norehab:~$ 

更新#1

我试过这个:

cp -p /etc/pulse/client.conf ~/.config/pulse/client.conf

并重新启动,它仍然没有自动启动。

更新#2

以下向我证明/usr/bin/start-pulseaudio-x11根本没有被执行:

我省了/usr/bin/start-pulseaudio-x11:

drunkard@norehab:~$ sudo cp -p /usr/bin/start-pulseaudio-x11 /usr/bin/start-pulseaudio-x11.orig

然后在末尾添加一行,简单地将当前时间戳写到日志文件中/tmp/start-pulseaudio-x11.log:

drunkard@norehab:~$ sudo sh -c 'echo "date >> /tmp/start-pulseaudio-x11.log" >> /usr/bin/start-pulseaudio-x11'
drunkard@norehab:~$ tail /usr/bin/start-pulseaudio-x11

    if [ x"$KDE_FULL_SESSION" = x"true" ]; then
       /usr/bin/pactl load-module module-device-manager "do_routing=1" > /dev/null
    fi

    if [ x"$SESSION_MANAGER" != x ] ; then
      /usr/bin/pactl load-module module-x11-xsmp "display=$DISPLAY session_manager=$SESSION_MANAGER" > /dev/null
    fi
fi
date >> /tmp/start-pulseaudio-x11.log
drunkard@norehab:~$

然后重新启动并登录,发现/tmp/start-pulseaudio-x11.log不存在。

因此,在登录之前或之后应该调用的任何东西都/usr/bin/start-pulseaudio-x11没有这样做。

更新#3

这在 Ubuntu 17.10 中仍然存在问题。但评论告诉我我的解决方法可以使用systemctl而不是直接执行。

但是我说这仍然是坏的,因为为什么没有为所有使用桌面的用户启用声音?我的意思是,在我能想到的任何情况下,我都不想听到任何浏览器播放的视频的声音。无论哪种声音守护程序(在这种情况下为 pulseaudio,但没关系)都应该默认为桌面用户“启用”。服务器安装并非如此,但此处并非如此。

firefox
  • 2 2 个回答
  • 20415 Views

2 个回答

  • Voted
  1. Best Answer
    bgoodr
    2017-10-08T14:58:33+08:002017-10-08T14:58:33+08:00

    这是一种解决方法,我将其视为答案,直到有人可以向我确认这已在处理桌面用户配置的上游 Ubuntu 安装逻辑中得到修复:

    我有一个在启动时使用此答案中显示的启动应用程序运行的脚本:https://unix.stackexchange.com/a/32616/21372,所以在该脚本中我添加了:

    # Start pulseaudio because something got broken in Ubuntu or Firefox
    # or PulseAudio or or
    # or... (https://askubuntu.com/questions/962920/how-do-i-get-pulseaudio-to-start-automatically-in-ubuntu-17-04-for-firefox):
    if ! pulseaudio --check
    then
      # But not via the old way:
      #
      #   nohup pulseaudio > /dev/null 2>&1 &
      #
      # Use the proper way to enable this at login time per https://askubuntu.com/a/989674/340383
      systemctl --user enable pulseaudio && systemctl --user start pulseaudio
    fi
    

    这将检查是否使用该--check选项启动了 pulseaudio 进程,如果它没有运行,则启动它。

    更新#1:

    我稍微更改了解决方法以使用https://askubuntu.com/a/989674/340383systemctl中所示的命令

    这仍然是一种解决方法,因为 Ubuntu 应该默认为桌面用户启用此功能。

    我的推理是,不幸的是,我仍然必须使用此解决方法,因为下次我从头开始升级或安装并第一次运行我的新帐户时,如果我的启动脚本中没有上述内容,我将因此对声音停止工作的原因感到困惑。

    一个反驳论点:由于 systemctl 调用将因此更新 ~/.config 文件(这是来自上面的systemctl...命令行):

    Created symlink /home/drunkard/.config/systemd/user/default.target.wants/pulseaudio.service → /usr/lib/systemd/user/pulseaudio.service.
    Created symlink /home/drunkard/.config/systemd/user/sockets.target.wants/pulseaudio.socket → /usr/lib/systemd/user/pulseaudio.socket.
    

    然后在下次重新安装 Ubuntu 时,它应该可以正常工作。但这只是在我保留 ~/.config 文件的情况下,这不是一个好的假设:出于这个原因,我将所有(除了 ~/.config 内部的文件!)我的“用户配置”文件都保留在 Git 存储库下不得不解决最终导致的可用性问题,就像这个一样,浪费了我很多时间来调试它的根本原因,我不想多做一次。

    • 2
  2. Benny Drille
    2020-06-19T03:52:48+08:002020-06-19T03:52:48+08:00

    几天前,pulseaudio 停止加载 18.04 - 以前它工作得很好。在查看了所有没有永久结果的建议后,我只是在文件中添加了以下行.profile:

    pulseaudio --start
    
    • 2

相关问题

  • Flash 在 Firefox 中无法正常工作。不会响应某些点击[关闭]

  • Firefox 鼠标中键滚动

  • 如何解决 Firefox 中的字体问题?

  • 使用突触或通过 Firefox 的插件菜单安装 adblock?

  • Firefox 的 Ubuntu Firefox 修改扩展有什么作用?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve