脉冲音频问题 - pavucontrol 和 pacmd 未连接到脉冲音频

脉冲音频问题 - pavucontrol 和 pacmd 未连接到脉冲音频

我正在运行带有以下pulseaudio软件包的 Debian Jessie (8.3)。据我所知,所有与声音相关的东西(包括pulseaudio)都对应于默认的 Jessie 包。我没有定制任何东西。我也没有做过任何事systemd,对此我一无所知。

dpkg -l | grep pulseaudio
ii  gstreamer1.0-pulseaudio:amd64    1.4.4-2               amd64                 GStreamer plugin for PulseAudio
ii  pulseaudio                       5.0-13                amd64                 PulseAudio sound server
ii  pulseaudio-esound-compat         5.0-13                amd64                 PulseAudio ESD compatibility layer
ii  pulseaudio-module-gconf          5.0-13                amd64                 GConf module for PulseAudio sound server
ii  pulseaudio-module-x11            5.0-13                amd64                 X11 module for PulseAudio sound server
ii  pulseaudio-utils                 5.0-13                amd64                 Command line tools for the PulseAudio sound server

我刚刚更换了旧的 Sound Blaster Live!卡与较新的华硕 Xonar DX 卡。声音有效,但麦克风不起作用。此外,我在使用pulsaudio时遇到问题。脉冲音频问题(至少部分)先于更换卡,但我认为我需要先解决它们,然后再解决麦克风问题。所以,这个问题只是关于 Pulseaudio 的问题。

直到我今天重新安装新声卡后重新启动,pavucontrol至少可以工作,尽管pacmd已经出错了一段时间。

这似乎部分是某种权限问题,但我不知道是什么。pulseaudio除了将我的用户添加到pulse和组之外,我没有进行任何手动更改或任何其他听起来相关的内容pulse-connect。我认为这不会有任何区别,而且我也没有注意到任何区别。

我以 root 和用户身份添加了下面各种命令的输出来说明问题。根据标准约定,前面的命令表示$由用户运行的命令,前面的命令表示由 root 运行的命令。#

$ pulseaudio -vv
I: [pulseaudio] main.c: setrlimit(RLIMIT_NICE, (31, 31)) failed: Operation not permitted
I: [pulseaudio] main.c: setrlimit(RLIMIT_RTPRIO, (9, 9)) failed: Operation not permitted
D: [pulseaudio] core-rtclock.c: Timer slack is set to 50 us.
D: [pulseaudio] core-util.c: RealtimeKit worked.
I: [pulseaudio] core-util.c: Successfully gained nice level -11.
I: [pulseaudio] main.c: This is PulseAudio 5.0
D: [pulseaudio] main.c: Compilation host: x86_64-pc-linux-gnu
D: [pulseaudio] main.c: Compilation CFLAGS: -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wall -W -Wextra -pipe -Wno-long-long -Wno-overlength-strings -Wunsafe-loop-optimizations -Wundef -Wformat=2 -Wlogical-op -Wsign-compare -Wformat-security -Wmissing-include-dirs -Wformat-nonliteral -Wpointer-arith -Winit-self -Wdeclaration-after-statement -Wfloat-equal -Wmissing-prototypes -Wredundant-decls -Wmissing-declarations -Wmissing-noreturn -Wshadow -Wendif-labels -Wcast-align -Wstrict-aliasing -Wwrite-strings -Wno-unused-parameter -ffast-math -fno-common -fdiagnostics-show-option
D: [pulseaudio] main.c: Running on host: Linux x86_64 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17)
D: [pulseaudio] main.c: Found 6 CPUs.
I: [pulseaudio] main.c: Page size is 4096 bytes
D: [pulseaudio] main.c: Compiled with Valgrind support: no
D: [pulseaudio] main.c: Running in valgrind mode: no
D: [pulseaudio] main.c: Running in VM: no
D: [pulseaudio] main.c: Optimized build: yes
D: [pulseaudio] main.c: FASTPATH defined, only fast path asserts disabled.
I: [pulseaudio] main.c: Machine ID is 501a8b6f724c87677a6f6bb351f93f66.
I: [pulseaudio] main.c: Session ID is 55.
E: [pulseaudio] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied

作为 root 用户执行此命令的输出是相同的。

$ pacmd
Failed to create secure directory (/run/user/1000/pulse): Permission denied
No PulseAudio daemon running, or not running as session daemon

# pacmd
Daemon not responding.

Pavucontrol 给出(首先,在终端上)

$ pavucontrol 
Failed to create secure directory (/run/user/1000/pulse): Permission denied
Failed to create secure directory (/run/user/1000/pulse): Permission denied

并弹出以下框。 (这张图是从 terdon 的Pulseaudio 在 Arch 上损坏:pa_stream_writable_size() 失败:连接终止,因为它与我所看到的完全一样。) Pavucontrol弹出框显示

在根上

# pavucontrol 

[A popup box appears with]
Establishing connection to PulseAudio. Please wait.

find在目录中找不到“ulse”的任何匹配项~/.config

~/.config$ find . -name '*ulse*'

什么也不返回。

Pulseaudio似乎正在运行

# ps aux | grep pulse
faheem    5057  0.1  0.0 376208 10432 ?        S<l  13:54   0:35 /usr/bin/pulseaudio --start --log-target=syslog
faheem    5065  0.0  0.0 122904  5164 ?        S    13:54   0:00 /usr/lib/pulseaudio/pulse/gconf-helper

一样systemd

# ps aux | grep systemd
root       273  0.0  0.0  33092  6864 ?        Ss   13:50   0:00 /lib/systemd/systemd-journald
root       290  0.0  0.0  41644  3864 ?        Ss   13:50   0:00 /lib/systemd/systemd-udevd
root      1067  0.0  0.0  28268  2968 ?        Ss   13:50   0:00 /lib/systemd/systemd-logind
message+  1100  0.0  0.0  43160  4432 ?        Ss   13:50   0:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
faheem    4435  0.0  0.0  36432  4544 ?        Ss   13:51   0:00 /lib/systemd/systemd --user

中文件的权限/run/user/1000/pulse为:

/run/user/1000/pulse# ls -laR
.:
total 4
drwx------ 2 root   root    80 Feb 22 13:54 .
drwx------ 6 faheem faheem 120 Feb 22 13:54 ..
srwxrwxrwx 1 faheem faheem   0 Feb 22 13:54 native
-rw------- 1 faheem faheem   5 Feb 22 13:54 pid

答案1

此问题似乎是由Pulseaudio以 root 身份运行某些命令引起的。这显然改变了/run/user/1000/pulse.重新启动解决了该问题。

这些是现在

$ ls  -lah /run/user/1000/pulse/
total 4.0K
drwx------ 2 faheem faheem 100 Feb 22 21:50 .
drwx------ 6 faheem faheem 120 Feb 22 21:41 ..
srwxrwxrwx 1 faheem faheem   0 Feb 22 21:50 cli
srwxrwxrwx 1 faheem faheem   0 Feb 22 21:41 native
-rw------- 1 faheem faheem   5 Feb 22 21:41 pid

请注意与我的问题中出现的结果的差异:

/run/user/1000/pulse# ls -laR
.:
total 4
drwx------ 2 root   root    80 Feb 22 13:54 .
drwx------ 6 faheem faheem 120 Feb 22 13:54 ..
srwxrwxrwx 1 faheem faheem   0 Feb 22 13:54 native
-rw------- 1 faheem faheem   5 Feb 22 13:54 pid

/run/user/1000/pulse由 root 拥有。

但如果这么容易就被打破,它就显得过于脆弱了。

相关内容