我知道这个问题之前已经被问过多次,但我还没有找到适合我的解决方案。
我在通过 SSH 会话播放音频时遇到问题。有问题的设备是运行 Arch Linux ARM 并插入 USB 扬声器的 Raspberry Pi 3B+。我现在连接了一条 HDMI 电缆和一个键盘,以便更轻松地设置过程,但当我“时,它将无头使用”我完成了。
当我登录本地终端时,播放声音和录制麦克风都没有问题。pactl list short sinks
列出了 HDMI 输出、3.5 毫米插孔和我的 USB 扬声器,并将后者设置为默认接收器,使用类似命令播放音频paplay
完全没有问题。
但是,当我通过 SSH 访问 pi 时,pactl list short sinks
仅显示一个虚拟音频接收器,它会悄悄丢弃我尝试播放的所有音频。如果我碰巧同时在本地登录,我会看到所有接收器,甚至可以播放音频!但是,一旦我在本地注销,来自 SSH 会话的音频就会再次停止工作。这是非常不方便的,因为前面提到过,稍后将使用无头的 pi。
互联网上的一些人表示,这是pulseaudio 强烈反对的系统模式有意义的少数情况之一。根据网上的建议,我执行了以下步骤:
sudo systemctl --global mask pulseaudio.socket
阻止用户空间服务器在登录时启动。- 创建
pulse
没有主目录的用户。 - 将我自己添加到
pulse-access
群组中。 - 重启。
- 本地登录后,
pactl list short sinks
报告Connection failure: Connection refused
,验证用户空间服务器确实尚未生成。 - 使用 启动pulseaudio 在系统模式下
sudo pulseaudio --system -D
。
但这实际上让事情变得更糟。现在,pactl list short sinks
仅列出 SSH 和本地会话中的虚拟接收器,使我无法从本地终端(即使是 root)播放音频。
我能做些什么?是否有可能包含有用信息的日志文件?谢谢!
答案1
脉冲用户需要位于音频(和蓝牙)组中才能使用 ALSA 和蓝牙设备。
usermod -aG audio pulse