使用Sunshine + Moonlight 来实现毫秒级延迟的远程串流,将你的固定设备在移动设备便携使用,无需公网IPv4!
1. 硬件与软件的选择
首先你得理解我们串流的目的是要将你的高配置台式电脑,在一台轻薄笔记本电脑上,或者在安卓设备如手机、平板甚至智能电视的上面来进行使用,各种性能开销归结于你的服务端即台式电脑,而你的客户端只需要负责数据的接收和视频解码。这种场景类似于“云游戏”,但是免费并与你的主机配置挂钩。
在硬件上的选择,本教程使用的是: 服务端:AMD高性能台式电脑
客户端1:普通办公轻薄笔记本电脑
客户端2:小米手机13
在使用环境上: 服务端:千兆有线网络环境
客户端:wifi环境
串流所需软件: 服务端: Sunshine(发送远程流媒体数据) https://github.com/LizardByte/Sunshine/releases Moonlight Internet Hosting Tool(自动配置网络端口,以允许Moonlight通过互联网进行流媒体传输) https://github.com/moonlight-stream/Internet-Hosting-Tool/releases 皎月连(使用P2P内网穿透,无需公网IP实现外网串流) https://www.natpierce.cn/pc/downloads/index.html 客户端: Moonlight(接收解码流媒体数据) https://github.com/moonlight-stream/moonlight-qt/releases 皎月连(使用P2P内网穿透,无需公网IP实现外网串流) https://www.natpierce.cn/pc/downloads/index.html 2.进行服务端配置 在服务端下载Sunshine,如果安装正常完成,在配置了服务端用户名和密码(要牢记)后,你将会看到这样一个界面:
点击顶部栏的 Configuration,根据下图进行配置
点击Advanced,根据下图进行配置
修改完成后,点击页面左下角的 Save 进行保存,Sunshine会自动进行配置并重启服务 下载 Moonlight Internet Hosting Tool 并运行,正常情况下会将串流所需的端口自动进行配置
可以看到在我的路由器管理页面,这些端口已经自动添加 3.进行客户端的配置 在客户端Moonlight安装完成后,如果此时客户端(手机/笔记本)和服务端(台式机)同属于一个局域网下,打开Moonlight会自动添加该局域网下可串流的服务主机,此时便可以直接点击该主机进行串流使用
点击右上角的齿轮,进入串流设置,最常需要调整的是【基本设置】内容
这里的分辨率和FPS以及下方的视频比特率,决定了你串流的体验 以我的客户端显示机能限制和网络质量比较差的环境,在1440p + 120FPS 配合20Mbps 便可进行清晰流畅的串流体验(非局域网环境) 你可以根据不同的网络环境和硬件设备来进行修改,比如你的客户端最大分辨率就只有1080P,那么就没必要设置1440p,你的客户端屏幕刷新率最高仅支持60Hz,那么就没必要设置120FPS,如果你的网络质量差,那么就调低你的比特率,所以需要根据不同的设备和环境来合理设置以满足舒适的串流体验 舒适 = 尽可能高的分辨率 + 尽可能流畅的显示 + 尽可能稳定的运行 如果你的客户端和服务端同属一个局域网,那么一般情况下可以拥有最佳的体验,我的习惯是开启台式机,然后在用懒人支架配上平板,用手柄蓝牙连接平板,满足“躺着玩台式电脑”的场景 当然,我们不可能随时都与服务端同属一个局域网下,这种使用场景过于狭隘,因此我们得考虑如何进行远程串流,随时随地享受串流体验 4. 远程串流 这里提供两个方案:IPv6公网串流、内网穿透串流 为什么我不提供IPv4公网串流方案?因为你搞不了公网IPv4地址,就算你能搞到,那也是花了钱的,如果你告诉我你能免费搞到,我想你也没必要看这篇教程了 本人为了搞公网IPv4,被骗花了199办了千兆电信宽带,电话沟通说送一个公网ip,结果到头来是运营商公网ip,可那玩意儿不都是公网吗?随后就是对线时宽带师傅无尽装傻时刻 IPv6公网串流: 这个方案需要满足两个条件,一是服务端的网络拥有公网IPv6,并且在路由器中打开了IPv6,二是客户端的网络也拥有公网IPv6,并且在路由器中打开了IPv6 如何查看是否打开了IPv6? 以我的服务端为例,在路由器设置里面打开了IPv6的开关
并在IPv6测试中完成测试 https://test-ipv6.com/
这样就代表现在的服务端网络支持IPv6 一般来说,IPv6可以实现在任何地方进行串流,因为基本上都是公网,并且可以得到相对优秀的体验,可惜的是,并不是所有的网络都有IPv6地址,就算有,在路由器里这个玩意儿是默认关闭的,大部分家庭用户都没有打开,所以这个方案使用环境有限 不过我们知道手机里的流量是有IPv6的,并且实测可以进行串流,这里以我的客户端2使用流量进行IPv6串流
在添加设备这里,输入中括号+刚刚查询的服务端IPv6地址 [240e:332:2d45:92:48f5:5......]
成功搜索到服务端并可以进行串流
这种方案适用于坐车时没有wifi的环境下进行串流,但花费的流量巨大,并且如果没有5G覆盖的话体验极差,所以在此也不推荐使用 所以该串流方案适用于你两边同时满足IPv6连接并且是wifi或有线网络的环境,连接的方式如上 内网穿透串流: 在服务端和客户端都安装好“皎月连”软件后,在服务端进行账户注册,随后可以在后台软件中双击皎月连图标进行服务端端口配置
在【服务端】界面的【端口映射列表】,将下面的所有端口如图里的方式进行映射,然后点击【开启服务】
其中【局域网ip】,指的是你在 cmd 里输入 ipconfig 的IPv4地址
开启服务后,在客户端的【皎月连】登录刚刚在服务端注册的账户,选择主机并连接,可能会连接失败,多尝试几次即可,注意客户端的端口地址确保没有被占用,一般来说不会出现占用的情况,除非你在客户端也安装了Sunshine,此时就要关闭客户端的Sunshine来避免端口占用情况
连接成功后如图
在连接成功后,在Moonlight 添加设备,输入 127.0.0.1 ,此时应该成功添加服务端主机信息,便可进行串流服务
这种方案适用于有稳定网络的环境下进行串流,并且是一次性配置,采用P2P网络进行串流,无中转节点,串流体验取决于你服务端和客户端的网络质量,所以在此推荐使用 5.实际测试效果 在上面的条件下,使用内网穿透串流方案,在2k 120hz以20比特率进行远程串流,在服务端运行高画质游戏,使用客户端进行串流的平均延迟在5毫秒以下,完全满足使用需求
6.附加内容 一些常用的快捷键: Crtl + Shift + Alt + S 展开串流信息数据 Crtl + Shift + Alt + X 窗口化串流 Crtl + Shift + Alt + Q 退出串流 一些待优化点: 1. 可采用一些远程开机的方案来操作服务端的开启和关闭,无需服务端保持开机状态(已解决) 2. 目前采用手柄连接客户端无法享受震动功能,考虑是设置、协议或硬件原因?(已解决) 3. 服务端必须搭配着显示器开启,网上有教程虚拟化显示器,我感觉没必要 4. 16:9的服务端在16:10的客户端以及其他不对应的显示屏显示时,会出现比例异常情况如上面的测试画面,考虑是设置原因,暂不解决 5. (待补充)
【部分问题和优化点已在评论区提及】