为了在巩固下这学期浅学的《计算机网络》,加上我家宽带有公网IP,所以就试一下公网Moonlight在广域网串流PC打游戏的体验啦。
大家可以先看一年前局域网,无公网IP虚拟局域网串流1.0的教程文章,再来看这篇文章效果更佳哦!
Moonlight官网:
Moonlight Game Streaming: Play Your PC Games Remotely (moonlight-stream.org)
前提条件
1.准备具有公网IPV4 IP,IPV6比较复杂暂时还没有尝试。
2.安装客户端软件:Moonlight
3.宽带上行带宽最低5M起步,换算成大家熟悉的MB/S的话就是:0.625MB/s或者是640KB/s。(此条件为满足moonlight串流720p,30fps画面推荐的最低码率带宽要求)
注意:大写的B为byte 字节,小写的b为bit 比特,1byte字节=8bit比特。
4.N卡用户
5.由路由器桥接进行拨号,而非光纤盒子,如果你是直接使用光纤盒子的WIFI,建议还是先用路由器桥接再操作。
路由器桥接拨号可以在b站搜索教程,或者嫌麻烦,一个电话打给运营商叫他们上门帮你搞就可以啦。
环境搭建
1.PC端(提供游戏支持的设备)
这里先推荐使用moonlight官方推荐的自动配置方法,亲测十分好用!
官方设置指南:设置指南 ·月光流/月光文档维基 ·GitHub
网址:Setup Guide · moonlight-stream/moonlight-docs Wiki · GitHub
官方设置指南机器中翻
点击官方中的超链接:
月光互联网托管工具
Moonlight Internet Hosting Tool下载运行,当出现此弹窗时,说明PC配置完毕。
我们可以发现,在windows的防火墙入站规则里面已经自动添加了对应服务的端口号。
!!!如果自动配置失败,可采用手动配置的方法:
官方设置指南机器中翻
首先固定IP地址,打开路由器后台配置静态DHCP:
查看PC的局域网IP地址,可以通过路由器的终端设置页面查看,或者在桌面右键个性化,找到网络和internet查看目前链接属性即可。
或者使用快捷键Windows+R,输入CMD回车,之后输入ipconfig即可查看:
IPv4地址,一般为192开头
最后只需在路由器中将该IP地址设为静态DHCP分配即可。
之后在路由器中高级设置找到:端口转发/端口映射/NAT等等之类的称呼,之后添加全部相应的TCP/UDP端口规则:
同时在防火墙windows defender中添加对应的入站规则即可,此时同样建议第一次先在局域网中和PC建立连接以后,再在广域网环境下打开Moonlight软件进行连接串流。
由于我自动配置已经成功啦,所以这个就不好测试了,最开始我在第一次配置的时候就采用的手动配置,然后在Moonlight中添加电脑用(公网IP地址:端口号)去连接也不行,不知为何,用自动配置之后就可以使用啦,手动配置还需大家去尝试一下哟。
2.移动端(串流设备)
下载安装Moonlight软件即可。
IOS平台:直接国区apple store搜索下载即可,无需切换区域账号。
安卓平台:首先看看自己的应用商店有没有,有的话可以直接下载,没有的话,进入moonlight官网,找到如下图箭头所示,点击进入网页下拉找到下载APK的选项即可直接下载APK安卓,就不用麻烦的去google play下载了。
网址:Moonlight Game Streaming | F-Droid - Free and Open Source Android App Repository
设备调试
相信大家串流,主要就是方便随时随地想玩就玩,所以我们实际串流设备就以手机加手柄这一场景为代表展示了:
为了操作方便,建议使用XBOX手柄,或者和XBOX相同键位逻辑映射布局的手柄。我拥有的设备就是Xbox 手柄和雷蛇的一个便携手柄。
像不像Steam Deck Lite版
首先在环境搭建那一步就自动配置成功的小伙伴,我们首先先将手机和PC置于同一局域网内,首次使用Moonlight先将手机与电脑输入PIN码配对。
此处操作在文章开头的串流1.0中有具体介绍,此处就省略啦
以上操作完成后,我们之后出门直接使用外网就可以直接都点开moonlight等待它加载一下们就可以继续链接我们之前配对过的电脑,开启游戏之旅了。
实际体验
为了尽量让大家能看出不同码率(带宽上行限制)的实际体验,我将按照Moonlight推荐的几档设置进行画面测试:
1.设备:2k(2000x1200)屏幕分辨率的联想小新pad plus。
我手机是IphoneXR,720P屏幕分辨率就别难为它了,ipad的话主要是iOS平台moonlight没有串流性能检测显示,所以就用安卓端来测试吧。
2.测试串流画面设置
分辨率、帧数、码率
720P 30FPS 5Mbps
720P 60FPS 10Mbps
1080P 30FPS 10Mbps
追加:
1080P 60FPS 15Mbps(推荐20Mbps,我家的带宽上行目前最多稳定15Mbps)
刚刚写文章的功夫,之前预约的电信维护工程师来我家检查了一下,现在已经上行30Mbps左右了。
对照组
分辨率、帧数、码率
2K 30FPS 20 Mbps
1080P 电脑截图
此处我就是用局域网进行串流测试,主要是和上面的广域网串流做对比,不过我觉得上面的广域网串流在15M上行带宽下前三组的串流设置在手机上面倒是足以,毕竟steam deck,能稳定720p,60fps的3A游戏也不多鸭。
效果如下:
720P 30FPS 5Mbps
720P 60FPS 10Mbps
1080P 30FPS 10Mbps
1080P 60FPS 15Mbps
2K 30FPS 20 Mbps
1080P 电脑截图
可能大家还是无法很明显的看出区别,我大致描述一下,或者大家可以在局域网设置对应参数感受一下也是一样的,这里用广域网测试主要是看延迟和丢包。
根据我在电脑上面把截图放大仔细观察,画质从低到高,720P到1080P在人物细节,纹理清晰的等等有比较明显的画质低到高的提升。
1080P和2K感观差不太大,但是肯定是至少1080P以上画质才不错,并且要保证码率在推荐值之上。
至于720P的画质,我觉得在手机上面玩的话,如果你的带宽上行不高,那做做任务不追求画质还能接受啦,但是像光纤入户200M以上的宽带,上行30M以上的话,1080P60FPS或者追求画质2K30FPS,2K60FPS稍微降低一丢丢码率也足够啦!
以上的测试截图由于要做对比,所以截图的为画面静止时的效果,实际串流体验由于画面在动所以实际需要的数据量对于静态显示一个画面来说数据量会变多,所以不同分辨率之间的效果差距会更明显一些。
补充:
1.安卓上的Moonlight相较于IOS有更多的设置,大家可以自己根据需求进行设置。
2.其实如果是在外面用免费WIFI串流倒是很香,如果是用流量就算你有100GB甚至更多估计也承受不,因为太费流量了。
这是我写的一个简单code,用来计算不同码率串流一小时需要消耗的数据量,在网上随便找的一个Python在线编程网页,把code复制到里面运行,根据提示输入码率的大小来查看,或者你用公式自己计算也可以!
公式:
码率Mbps/8*3600=( )MB或者再除以1024就是( )GB了。
Code:
x=input("请输入串流视频的码率,单位为Mbps:")
z=int(x)
y=(z/8*3600)
y1=round((z/8*3600)/1024,3)
print("该码率串流一小时需要消耗",y,"MB或者是",y1,"GB")
3.推荐手机串流画质:1080p,60fps(当然越高越好)
4.关于没有公网的实现方法暂且采用串流1.0中的方法,或者使用Parsec进行串流,至于zerotier串流有时候很慢,可能是服务器在国外,并且多层NAT没有打通采用的转发流量,后续有时间我用云服务器自建Moon试试看看能不能解决啦。
parsec不支持IOS系统
5.待补充
OK,以上就是今天折腾了一下午的全部内容啦,目前我也是再初步尝试,如果内容有误的地方,欢迎大家在评论区指正,如果大家有更好的方案或者尝试了手动配置端口的方法,也可以把经验分享到评论区哦!
别忘了一键三连,电池拉满鸭!
#moonlight串流#