我正在运行带有以下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
[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 拥有。
但如果这么容易就被打破,它就显得过于脆弱了。