在Windows11的WSL上,在Docker容器中播放声音



较新版本的Windows(内部版本21364或更高版本(支持WSL2中的GUI,包括完整的音频支持。这真是太神奇了。

既然WSL2现在支持音频,那么我们如何使用Docker的WSL2引擎让音频在Windows上运行的Docker容器中工作呢?

在Linux主机上,您可以简单地使用例如--device /dev/snd调用Docker映像。

从Windows命令行运行启用了声音的Docker映像的等效命令是什么?

WSL中没有/dev/snd或直接音频硬件仿真,即使在新的Windows 11设置中也是如此。相反,最新版本的WSL通过/mnt/wslg/中的套接字将PulseAudio客户端指向外部PulseAudio服务器来实现音频输出。该服务器运行在另一个名为WSLg的Linux发行版上,该发行版在Windows内部运行,唯一目的是在WSL发行版和Windows之间传输音频和图形数据。

它看起来有点像:

Docker container <-> WSL <-> WSLg <-> Windows 11

实际的PulseAudio服务器位于WSLg中。套接字的位置存储在环境变量PULSE_SERVER:中

# On WSL   
echo $PULSE_SERVER
/mnt/wslg/PulseServer

因此,除了确保你的Dockerfile有一个基本的PulseAudio安装(RUN apt-get install -y pulseaudio或同等版本(外,你所需要做的就是调用以下图像:

在WSL:

docker run -t -i -e "PULSE_SERVER=${PULSE_SERVER}" -v /mnt/wslg/:/mnt/wslg/ image_name

或者从Windows命令行,如:

wsl docker run -t -i -e "PULSE_SERVER=/mnt/wslg/PulseServer" -v /mnt/wslg/:/mnt/wslg/ image_name

docker run -t -i -e "PULSE_SERVER=/mnt/wslg/PulseServer" -v \wsl$Ubuntumntwslg:/mnt/wslg/ image_name

相关内容

  • 没有找到相关文章

最新更新