如何调试 Pulse Audio 的问题?

如何调试 Pulse Audio 的问题?

我已经在计算机上安装了 Ubuntu 11.10。我已以 USER_A 身份登录。我的外部音频设备是耳机,我可以正常听到音频。

我需要将我的 Ubuntu 机器加入到 Windows 域(我的办公室服务器)。我按照http://www.ghacks.net/2010/04/21/join-a-ubuntu-machine-to-a-windows-domain/并成功将我的 ubuntu 机器加入到 windows 域。

sudo apt-get install likewise-open5
sudo domainjoin-cli join DOMAIN USER_B

现在,当我以 USER_B 身份登录时,同一台机器上没有该用户的音频。

我检查了我的 User_A 帐户。User_A 的声音没有问题。只有 User_B 没有音频。

当我检查 User_B 的声音设置时,硬件、输入和输出中没有列出任何设备。而对于用户 A,我的耳机列在输入和输出中。

有谁能帮我解决这个问题。为什么 User_B 没有声音?

您能否简要地介绍一下如何“检查音频组中是否添加了用户”?

当我尝试在终端中执行 pulseaudio -k 时(来自 User_B)

E: [pulseaudio] main.c: Failed to kill daemon: No such process

而且我在脉冲音频日志中也发现了这一点。当我运行时:

pulseaudio --log-level=4 --log-target=stderr

我在我的日志中发现以下错误行:

E: [pulseaudio] module-dbus-protocol.c: dbus_server_listen() failed: org.freedesktop.DBus.Error.BadAddress: Abstract socket name too long
E: [pulseaudio] module-dbus-protocol.c: Starting the local D-Bus server failed.
E: [pulseaudio] module.c: Failed to load module "module-dbus-protocol" (argument: ""): initialization failed.
E: [pulseaudio] main.c: Module load failed.
E: [pulseaudio] main.c: Failed to initialize daemon.

答案1

此初步答案总结了在为该用户加入域的环境中调试仅供该用户使用的声音所涉及的步骤。它可能需要稍后扩展。

如果我们只有一个用户有声音,那么这个用户帐户的设置可能存在一些错误配置。我们需要采取以下步骤来自受影响的用户帐户以进一步了解该问题。

  1. pulseaudio 正在运行吗?
    通常,您可以通过访问顶部栏中的声音菜单来查看。或者,我们可以在终端中发出以下命令:

    pulseaudio -k
    

    如果 pulseaudio 不运行,则会出现错误。此外,此命令还负责在 pulseaudio 挂起时停止并重新生成 pulseaudio。

  2. pulseaudio 守护进程的用户设置是否错误?
    为了测试这一点,我们必须重命名受影响用户主目录中的设置目录,然后重新启动 pulseaudio(请参阅1.):

    mv ~/.pulse ~/.pulse.bad
    

    或者

    mv ~/.config/pulse ~/.config/pulse.bad  ## for newer releases
    
  3. ALSA 的频道是否静音?
    我们可以在终端中打开 alsamixer 来调整频道音量,并在频道意外静音的情况下取消静音:

    alsamixer
    
  4. 确保用户不是在“音频”组中
    群组中的用户audio独家的访问 pulseaudio 服务器。当此用户使用时,其他用户无法访问。因此用户不应在该audio组中。

  5. 手动启动 Pulseaudio
    如果 pulseaudio 没有运行,我们也可以从命令行启动守护进程

    pulseaudio -D
    

    然后,Pulseaudio 使用默认设置并启动其守护进程。我们还可以将此命令放入我们的自动启动应用程序中,以解决在桌面加载之前 pulseaudio 无法运行的情况。

  6. 浏览日志文件
    Pulseaudio 将在系统启动和用户登录时加载。因此,只能从启动 pulseaudio 时生成的日志中读取错误。请参阅本指南介绍了如何生成 pulsaudio 日志脚本简而言之,我们必须小心 pulseaudio 不会重生,我们可以在详细模式下运行它:

    pulseaudio -vvvv <options>
    

要完成的


在问题中给出的案例中,我们可以看到 pulseaudio 无法运行,因为它无法启动 D-Bus 服务。这可能是由于到用户 HOME 的路径损坏或过长造成的(参见错误 #872992)。作为一种解决方法,我们可以通过注释掉以下行来发出没有​​ D-Bus 控制的 pulseaudio,如下所示/etc/pulse/default.pa

# load-module module-dbus-protocol

但是我们(和我们的应用程序)将无法使用 D-Bus 控制 pulseaudio。

答案2

在我的 Debian 系统上,根据某个比我更聪明的人的建议,我将 $HOME/.pulse/ 文件夹和 $HOME/.pulse-cookie 文件(以 root 身份)从 $USER_A 复制到 $USER_B,并进行chown适当的设置,之后我便能够使其正常工作。

相关内容