WSL2/WSLg:PulseAudio:无法连接:连接被拒绝

WSL2/WSLg:PulseAudio:无法连接:连接被拒绝

我不知怎么弄坏了我的声音。每当我尝试播放任何声音(例如使用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问题的一种方法:

  1. 添加以下内容~/.bashrc
export HOST_IP="$(ip route |awk '/^default/{print $3}')"
export PULSE_SERVER="tcp:$HOST_IP"
  1. 跑步source ~/.bashrc
  2. 按照说明编辑etc/pulse/default.pa和归档etc/pulse/daemon.conf这里
  3. 从命令提示符运行pulseaudio.exe
  4. 打开Windows Defender Firewall控制面板。
  5. Advanced settings
  6. 选择Inbound Rules
  7. 双击该pulseaudio应用程序。
  8. 点击Allow the connection操作。
  9. 点击OK

相关内容