使用VNC控制树莓派时,总是感觉不太完美,因为VNC不支持传输音频。得被迫体验没有声音的世界,我作为精神洁癖和完美主义者,肯定是不能接受没有声音的世界的。
使用第三方维护的服务端(推荐)
由于PulseAudio官方服务端不维护了,有一个版本更新的第三方维护的,版本比较新的客户端:PulseAudio-win32可以使用。
PulseAudio Builds for Windows (pgaskin.net)
运行pasetup.exe文件,依次勾选下图所示的安装选项,
打开windows设置,网络和Internet,以太网,选择和你Linux机器在的同一个网络,将网络配置设置成专用。
使用官方服务端(不推荐)
在windows上其实是有官方的服务端的,但是自2012起已经不再更新,可能会有很多bug,已不推荐使用官方服务端。
从freedesktop.org下载Preview版本的服务端。
PulseAudio on Windows – PulseAudio (www.freedesktop.org)
解压缩压缩包到一个文件夹,编辑etc/pulse/daemon.conf文件,编辑第39行为如下内容,防止在无客户端连接时pulseaudio服务器自动退出:
; exit-idle-time = -1
其次编辑etc/pulse/default.pa文件,在末尾添加如下内容:
### 开启网络传输,默认端口为4713端口,请勿占用
load-module module-native-protocol-tcp listen=0.0.0.0 auth-cookie-enabled=false auth-ip-acl=127.0.0.0/8;192.168.31.0/24
注:远程传输时,添加对应ip或对应ip段到auth-ip-acl=后来允许连接,使用分号分隔多个ip。
接下来直接运行bin/pulseaudio.exe,此时服务启动,关闭控制台窗口则退出服务。
可以进入bin文件夹,在空白处按住shift+右键,点击“在此处打开PowerShell窗口”,输入如下命令验证pulseaudio服务器是否正常工作,如果正常会输出服务器版本信息。
./pactl.exe --server=127.0.0.1:4713 info
在Linux上远程连接到Windows上的PulseAudio实例
方案1:
打开终端,输入如下命令建立远程音频连接:
pactl load-module module-tunnel-sink-new server=你的windows电脑的ip:4713 channels=2 sink_name=windows32
pactl set-default-sink windows32
此时系统默认音频将直接从windows电脑上播放,无需重启应用,系统的声音设置里会多出一个音频设备。
方案2(不推荐):
使用PULSE_SERVER=ip:port环境变量启动程序,程序将试图连接服务器作为音频输出。
故障排除
连接失败,音频设置里没有多出音频设备
在linux上使用终端运行命令:pactl --server=你windows电脑的ip:4713 info
,应该会提示PulseAudio服务器的版本信息。如果连接失败不显示,请检查windows上的控制面板,windows defender防火墙 ,允许pulseaudio.exe通过防火墙。
在linux使用pactl load-module module-tunnel-sink-new命令时,提示Failure: no such entity
解决办法:
截至编写这篇文章时,这是pipewire-pulse独有的bug,无法正常加载module-tunnel-sink-new模块。请把你的音频服务器从pipewire-pulse切换成pulseaudio。
Comments NOTHING