Moonlight——远程同屏/串流桌面、游戏推荐方案

Moonlight——远程同屏/串流桌面、游戏推荐方案

内容纲要

虽然网上已经有很多相关介绍,但随着版本更替,很多教程已经过时,例如手柄驱动、音频驱动,都是不需要单独安装的,它们会随Sunshine捆绑安装,因此不要随意修改安装选项。
Moonlight是NVIDIA的GameStream协议的开源实现,可以方便的将Windows电脑画面传输到各主流操作系统的客户端软件上,甚至可以直接传输至谷歌浏览器。画面方面,移动端最高支持4K120帧,且支持HDR(需要显卡支持),而桌面端甚至可以直接自定义分辨率和帧数;交互方面支持键鼠/手柄/触摸屏/触控板/触控笔,就像用自己的电脑一样使用远程电脑。该方案无广告,完全免费,这也是相对商业软件Parsec的最大优势。
通过Moonlight,你可以实现很多功能,例如:

  • 在宿舍运行主机,在教室用平板串流,搭配键鼠即可获得完整电脑体验;
  • 远程同屏追剧、看电影;
  • 通过串流游玩单机双人游戏,也可以避免部分游戏自带联机功能网络不佳的情况;
  • 当作自己的云主机,随时随地用轻小设备访问。

Moonlight官网地址:https://moonlight-stream.org 。在网页顶部的CLIENT DOWNLOADS中可以选择各平台的客户端进行下载,而HOST DOWLOADS中可以下载SUNSHINE。客户端指的是观看画面的设备,主机则指运行SUNSHINE的Windows电脑,主机的显示器画面通过网络传输到客户端,这就是串流的过程了。
由于Sunhine和moonlight下载链接来自Github,可能无法访问,因此这里也给出百度网盘下载链接:
https://pan.baidu.com/s/1XSZysDzyYRKa3z4BZFNQEQ?pwd=1234
提取码:1234
下面先介绍主机配置。

图片
主机配置
如果使用英伟达的非老旧显卡,则可以直接在Geforce Experience软件中开启GameStream功能。但现在已经不建议使用这种方式,直接采用Sunshine开源方案是更好的选择。GameStream传输普通桌面应用时鼠标帧数只能达到60帧,而Sunshine则无此问题。从Sunshine 0.21版本开始添加了原生的笔和触控支持(需配合新版Moonlight客户端),这意味着可以直接在串流客户端使用压感功能。
Moonlight官网提供了Sunshine主机端以代替Geforce Experience的GameStream功能,这使得任意显卡均能使用串流功能。根据开发者描述,从 Sunshine v0.18 开始,它在许多配置中的串流性能已经达到或超过 GeForce Experience。Sunshine的发布地址为https://github.com/LizardByte/Sunshine/releases ,在最新版本下方的Assets中找到sunshine-windows-installer.exe并下载安装,如果找不到就先点开Show all。

图片
Sunshine发布页面按照默认设置安装完成之后(如果修改安装目录,注意不能包含中文路径),开始菜单会多出Sunshine图标,打开会转到https://localhost:47990 (也可以直接浏览器访问该地址),该网页即Sunshine配置页面,由于服务器使用https但无证书,因此浏览器会提示隐私错误,继续访问即可。

图片
Sunshine配置页面进入Sunshine页面之后需要注册,然后使用账号密码登录该网页。在配置页面顶部选择PIN,就来到了配对页面。当有新的客户端需要进行串流时,就需要将客户端上的验证码输入在这里并点击Send,即可配对成功。

图片
Sunshine配对页面主机需要连接显示器才能正常串流,如果是笔记本则不能合盖。要在无显示器状态下串流,可以买一个显卡欺骗器接在电脑上,效果相当于外接一台显示器。另一种办法是虚拟显示器,可以直接搜索相关教程。
当主机连接了多个显示器时,Moonlight客户端默认连接主显示器。你可以在Sunshine配置网页中找到Configuration-Audio/Video-Output Name设置以指定显示器。
如果想要串流到多个客户端,需要修改Sunshine配置网页https://localhost:47990/config 中Advanced-Channels的值,它代表允许同时串流的最大客户端数量。(新版0.23.0位置有变化,修改General-Maximum Connected Clients的值,作用相同)

图片
客户端配置
如果使用电脑作为客户端,在https://github.com/moonlight-stream/moonlight-qt/releases 根据自己的系统选择对应的版本即可。

如果使用iphone作为客户端,直接在App store下载Moonlight即可,不过只有英文,暂时不能调整语言。
如果使用安卓手机作为客户端,如果无法使用Play商店,可以在https://github.com/moonlight-stream/moonlight-android/releases 下载apk安装包,选择app-nonRoot-release.apk即可
保持主机和客户端在同一局域网内,打开客户端软件,应该能够看到主机的计算机名。点击会弹出4位PIN码,需要在Sunshine配置网页https://localhost:47990/pin 中输入PIN码。建立连接后,点击桌面(DESKTOP)将启动桌面串流。
默认情况下,触摸屏的输入方式为触控板,要想直接触摸控制,需要在设置-输入设置中去掉勾选“将触控屏作为触控板使用”。
在客户端设置中,可以调整分辨率、帧数、码率等设置,但要注意分辨率越高,延迟也会增加(主要因为编解码时间增加),而帧数增加可以减小一点显示延迟(不超过主机和客户端刷新率的情况下)。
默认情况下,串流开始后,只在客户端播放声音。如果想要在客户端和主机同时播放声音,在客户端设置中开启“在电脑上播放声音”即可。
如果想要在串流时调用原生系统触控键盘,可以三指点击屏幕,就能弹出屏幕键盘(对于Android和IOS系统)。
如果使用鼠标发现速度过快,可以在设置-输入设置中勾选“适合远程桌面的鼠标模式”,这会让鼠标移动更加自然。
注意,如果在安卓设备上进行串流,Windows快捷键将和安卓系统快捷键冲突,许多快捷键无法使用。要解决此问题,可以参考https://www.bilibili.com/video/BV1S64y1K7Z7 ,该作者的修改版本通过无障碍模式解决了快捷键冲突问题,同时开启了多指触控功能,可以方便的进行双指缩放等操作,真正实现了原生触控体验。

图片
远程串流
由于Geforce Experience和Sunshine默认只在本地网络监听端口,
独一无二的IP地址使得主机能够在互联网中被识别,但是由于IPv4地址匮乏,大多数家庭网络并不具备公网IPv4地址,而新一代的IPv6地址事实上已经十分普及。

如果主机拥有公网IPv4地址或主机和客户端都有公网IPv6地址,则可以进行远程串流。

如果不知道是否拥有公网IPv4地址,则基本不可能有公网IPv4地址。
如果不知道是否拥有公网IPv6地址,可以访问https://ip.sb ,如果在IPv6栏显示Supported则代表拥有公网IPv6地址。
要通过公网IPv4地址串流,只需在配置网页https://localhost:47990/config 中把Network-UpnP从“Disabled”改为“Enabled”。
要通过公网IPv6地址串流,只https://localhost:47990/config 中把Network-Address Family从“IPv4 only”改为“IPv4 + IPv6”。注意如果没有配对过,但又不方便局域网配对,则只能手动输入IP地址来添加主机(IPv6地址可能需要加中括号),在网络设置或者cmd(命令提示符)中输入ipconfig即可查看IP地址。
这里会出现“IPv6 地址”,“临时 IPv6 地址”和“本地链接 IPv6 地址”,其中只有“IPv6 地址”和“临时 IPv6 地址”是公网地址,但临时地址在每次重连后均会变化,所以使用“IPv6 地址”更加稳定。但是,该地址在一段时间后也会变化(由于前缀变化),要想永久稳定连接,可以购买一个域名,并在主机端运行一个服务,使域名解析地址保持为主机当前的IPv6地址,具体可以参考https://zhuanlan.zhihu.com/p/136711266
如果客户端依然显示主机离线,往往是因为光猫或路由器打开了IPv6防火墙,需要手动关闭。例如我的光猫型号为HS8145X6,默认情况下是打开IPv6防火墙的。

图片
关闭IPv6防火墙值得说明的是,目前各大运营商已经全面支持IPv6,家庭宽带和移动数据基本全面支持IPv6。家庭宽带如果无法获得IPv6地址,一般是由于光猫或路由器型号太旧,不支持IPv6。
如果实在没有公网IP地址,可以使用ZeroTier实现异地组网,但是延迟会更高,使用方式可以参见网上教程,下载地址为https://www.zerotier.com/download 。组网后无需额外设置,可以直接像局域网一样串流。

图片
局域网延迟测试
主机:LCD 25601440@240Hz笔记本,i9-13900HX + 4060,千兆网口直连路由器
客户端:OLED 2560
1600@120Hz平板,Kirin 9000E,WiFi6连接路由器
串流设置:2560*1440@120Hz,62Mbps,优先最低延迟
测量方式:在电脑上显示秒表,将电脑和平板都设置为120Hz,同时拍摄电脑和平板屏幕,比较两者时间差(模糊则取更大的延迟,如下图所示)。由于Windows自带秒表帧数较低(事实上安卓和IOS也是),因此借助浏览器引擎,通过在网页播放css动画来实现高刷秒表。

图片
延迟为357-336=21ms在串流过程中,Moonlight可以显示一些相关的性能信息:平均网络延迟约4ms,平均主机处理延迟约4ms,平均解码时间约8ms。
测量结果:连续十次拍摄延迟结果为:17ms,23ms,17ms,24ms,16ms,17ms,26ms,26ms,24ms,26ms,平均21.6ms。

图片
补充
根据Sunshine官方文档的说法(见下图),在AMD中启用“Enhanced Sync”(增强同步)或在Nvidia中启用“Fast Sync”(快速同步)可能减少延迟。

图片
Sunshine文档-高级用法因此,如果使用英伟达显卡,可以在Nvidia控制面板-管理3D设置中将“垂直同步”设置为“快”,但实测中该设置可能会导致游戏串流画面出现闪烁。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容