我不知怎么弄坏了我的声音。每当我尝试播放任何声音(例如使用sox
)时,我都会得到:
ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Connection refused
play FAIL sox: Sorry, there is no default audio device configured
我的理解是WSLg 应该支持声音转发使用 pulseaudio。
笔记:
我在 Ubuntu 22.04.1 上
在(Windows)重启之前它可以正常工作,我不知道发生了什么变化
X11 转发工作正常
pulseaudio
返回:W: [pulseaudio] main.c: This program is not intended to be run as root (unless --system is specified). E: [pulseaudio] core-util.c: XDG_RUNTIME_DIR (/mnt/wslg/runtime-dir) is not owned by us (uid 0), but by uid 1000! (This could e.g. happen if you try to connect to a non-root PulseAudio as a root user, over the native protocol. Don't do that.)
由于我始终是 root;由于这是我正在使用的发行版的默认行为,所以我认为这是可以的。
alsa-reload
返回Unloading ALSA sound driver modules: (none loaded). Loading ALSA sound driver modules: (none to reload).
不确定这是否应该发生。
答案1
我不能说我了解发生了什么,但我的印象是,在启动 WSL 后在 Windows 端更改声音设置时会出现此问题。
无论如何,当我从 WSL 注销、关闭它wsl --shutdown
然后重新启动 WSL 时,声音就会恢复。
答案2
以下是解决Connection failure: Connection refused
问题的一种方法:
- 添加以下内容
~/.bashrc
:
export HOST_IP="$(ip route |awk '/^default/{print $3}')"
export PULSE_SERVER="tcp:$HOST_IP"
- 跑步
source ~/.bashrc
。 - 按照说明编辑
etc/pulse/default.pa
和归档etc/pulse/daemon.conf
这里。 - 从命令提示符运行
pulseaudio.exe
。 - 打开
Windows Defender Firewall
控制面板。 - 去
Advanced settings
。 - 选择
Inbound Rules
。 - 双击该
pulseaudio
应用程序。 - 点击
Allow the connection
操作。 - 点击
OK
。