最近尝试在 Windows 下做一些音视频处理的工作,因为比较熟悉 Linux 的工具链所以尝试在 WSL 中完成(虚拟机性能太感人了),但是发现 WSL 默认是不支持图形化界面和音频的,很难进行可视化的调试,本文就介绍了一种为 WSL 启用图形化及音频支持的方法。
图形化支持
在 WSL 中运行图形化程序,本质上是利用了 Linux 的 X 协议的 C/S 架构,在 Windows 下面安装一个 X Server,接收 WSL 中 Client 的请求进行显示,因此这一部分内容也由 Server 和 Client 两个大步骤组成。
为 Windows 安装 X Server
在 Win 下安装 X Server,一个比较好的选择是 VcXsrv Windows X Server,只需要下载并安装,然后启动即可。
在运行的首屏可以选择启动模式等,如果只是打算用几个 Linux 下的图形化程序,建议选择 Multiple Windows,如果打算用比较完整的 Linux 图形化环境,可以选择其他三个。
在 WSL 中设置 X 转发
这里以 Ubuntu 下的 bash 为例,设置转发也很容易,只需要添加一条 DISPLAY=:0
的环境变量即可:
然后重新打开 WSL 终端应用这条变更,或者 . ~/.profile
这样就完成了转发,可以通过安装 xeyes 进行测试:
如果成功的话应该出现这样的一双大眼睛
音频支持
默认情况下,WSL 内的音频设备也无法正常使用,整体思路和上文类似,也是需要通过两部分转发。
为 Windows 安装 PulseAudio
首先从 PulseAudio on Windows 下载所需的文件,也可以直接使用这个下载链接
然后将 zip 压缩包解压到任意位置,并对配置文件进行一定的修改:
接下来只要运行 bin\pulseaudio.exe
即可,可以通过如下命令测试:
听到 “叮” 的一声就代表成功了。
为 WSL 设置音频转发
首先在 WSL 中安装 pulseaudio
然后添加环境变量
同样重新打开 WSL 终端应用这条变更,或者 . ~/.prifile
这时 WSL 下的程序,音频就会转发到 Windows 中打开的 pulseaudio.exe
中播放,Linux 终端没有比较好的发声测试工具,这里用 ffplay 播放一个网络音频进行测试。
如果听到一段动感的音乐就说明转发成功了。
后记
上文记述的方法并不完美,每次使用时都要手动打开 Windows 下的 VcXsrv 和 PulseAudio,如果嫌麻烦的话可以添加自动启动或者添加到开始菜单,这个本文就不赘述了,可以自行通过搜索引擎解决。
参考文章:
PS:以上内容可能是针对 WSL,从 WSL 2 开始,已经默认提供了对 GUI 窗口程序的支持,不需要再额外使用 X Server 了
wf
感谢博主的文章,解决了我的问题。
> 同样重新打开 WSL 终端应用这条变更,或者 `. ~/.prifile`
这里是博主手误吧,应该是 `. ~/.profile` 吧、
笔误,应该是 profile 文件。