当我在 Debian 上使用我自己的帐户“播放”(使用 SoX).wav 文件时,它播放得很好:
jcomeau@aspire:~$ play ~petalumarentals/7077809525.1396808357.711.wav
/home/petalumarentals/7077809525.1396808357.711.wav:
File Size: 120k Bit Rate: 128k
Encoding: Signed PCM
Channels: 1 @ 16-bit
Samplerate: 8000Hz
Replaygain: off
Duration: 00:00:07.52
In:100% 00:00:07.52 [00:00:00.00] Out:361k [ | ] Clip:0
Done.
但是,当我尝试在登录到另一个帐户后在同一台计算机上播放它时sudo
,它不会发出声音,并且完成后显示“Out:”的数字要小得多:
petalumarentals@aspire:~$ 播放 7077809525.1396808357.711.wav
7077809525.1396808357.711.wav:
File Size: 120k Bit Rate: 128k
Encoding: Signed PCM
Channels: 1 @ 16-bit
Samplerate: 8000Hz
Replaygain: off
Duration: 00:00:07.52
In:100% 00:00:07.52 [00:00:00.00] Out:60.2k [ -|- ] Clip:0
Done.
查看两者的 strace 结果时得到了提示:
petalumarentals@aspire:~$ strace -eopen play 7077809525.1396808357.711.wav 2>&1 | grep /dev/
open("/dev/shm/pulse-shm-757337927", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 7
open("/dev/urandom", O_RDONLY|O_NOCTTY|O_LARGEFILE|O_CLOEXEC) = 6
open("/dev/shm/pulse-shm-3973466970", O_RDWR|O_CREAT|O_EXCL|O_NOFOLLOW|O_CLOEXEC, 0700) = 6
open("/dev/shm/pulse-shm-757337927", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 9
open("/dev/urandom", O_RDONLY|O_NOCTTY|O_LARGEFILE|O_CLOEXEC) = 8
open("/dev/shm/pulse-shm-3705645700", O_RDWR|O_CREAT|O_EXCL|O_NOFOLLOW|O_CLOEXEC, 0700) = 8
和
jcomeau@aspire:~$ strace -eopen play ~petalumarentals/7077809525.1396808357.711.wav 2>&1 | grep /dev/
[snipped]
open("/dev/snd/controlC0", O_RDONLY|O_CLOEXEC) = 4
open("/dev/snd/controlC0", O_RDWR|O_CLOEXEC) = 4
open("/dev/snd/pcmC0D0p", O_RDWR|O_APPEND|O_NONBLOCK|O_CLOEXEC) = 5
open("/dev/snd/controlC0", O_RDONLY|O_CLOEXEC) = 4
open("/dev/snd/timer", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = 4
open("/dev/snd/controlC0", O_RDONLY|O_CLOEXEC) = 6
open("/dev/snd/controlC0", O_RDONLY|O_CLOEXEC) = 6
open("/dev/snd/controlC0", O_RDWR|O_CLOEXEC) = 6
另外,当我alsamixer
作为新用户在没有参数的情况下运行时,PulseAudio
会显示为“卡”,而当我从我的帐户运行它时,HDA Intel
默认情况下会显示。
谷歌搜索各种相关关键字会带来很多关于卸载或重新安装 PulseAudio 或将其配置为 root 的建议,但大约一个小时后仍然没有找到一些简单的解决方案来为 Debian 中的每个用户设置默认声卡。我一定忽略了一些愚蠢的事情,但到目前为止,除了将audio
组添加到新用户之外,我什么也没想到,这是我早期所做的。
答案1
根据我兄弟的建议,我将 $HOME/.pulse/ 和 $HOME/.pulse-cookie 从jcomeau
复制到petalumarentals
,chown
并将它们复制到petalumarentals
,现在 SoXplay
和alsamixer
现在在两个帐户下都可以正常工作。一定有更好的方法来设置它,但它按原样工作。