开始游戏:远程串流一文通关


3楼猫 发布时间:2023-02-28 07:31:19 作者:Gun7 Language

大家好,欢迎点进这篇文章。
2022年初工作调换,新公司距离自己家的房子有近80km距离,为了工作日通勤方便只能在公司附近租房,但是受限于空间和个人想法(原本是想好好工作的),PC仍就放在家中。
俗话说得好,一日不见如隔三秋;我这一礼拜不见,那每次回家真就只能对着书房的电脑激动的来上一句:我可想死你们了,然后报复性的玩耍到后半夜。
我可想死你们了

我可想死你们了

长此以往,这也不是个办法,这身体还得要。伟大的大禹告诉我们一个深刻的道理:堵不如疏,得想想怎么让自己工作日也能玩上好游戏。
届时,Steamdeck初现峥嵘,我也曾口水流淌,艳羡不已,奈何没货。
机子可以等,游戏可不能等。
正当焦头烂额之际,一点灵光闪过——远程串流,就成了照亮冬天里的那把火。简单研究后发现,远程串流有着相当符合我现有需求的点:
  • 充分利用家中闲置PC,不用单独购买额外设备
  • 对客户端没有硬件要求,再老的电脑都可以顺畅运行
  • 延迟与帧率优秀,满足FPS、ACT格斗等类型游戏的需求
  • 支持PC、手机等多平台,做到在哪都能玩
本文也会从原理、常见产品组合、实现方式、常见问题排查四个部分跟大家介绍现有市面上主要的远程串流方案,希望每位机友在地铁、大巴、机场等舒适或不舒适的环境里充分享受游戏的快乐。
成年人嘛,打机环境不理想,我们自己来创造!

1. 原理:简单搞懂远程串流是什么?(可跳过)

若您对原理性内容没有兴趣,可以仅关注特别提示内容,方便进行问题排查和定位。因为非专业从事,提前叠甲,如有错漏,欢迎抓虫。
在本章节中,我将会介绍市面上常见的两种串流方式:经过服务端的中转、P2P直连,并针对常见家庭的网络布局进行说明。
实际上主流的远程控制或串流主要区分为两种类型:经过服务端的中转模式和P2P直连模式。

1.1 经过服务端的中转模式

中转模式在我们日常生活中其实接触的最多,从最早的QQ桌面共享控制、Windows桌面控制,到工作生活中如今越来越多的腾讯会议、飞书会议的共享操控,再到更专业一些的向日葵、Todesk等工具,本质上都是这一类型的远程串流方式。
简单来讲,就是宿主(Host)和用户(Server)之间要进行消息传输时,需要通过中转服务器(Server)来进行解析和转发。
在整个过程中,宿主的桌面显示会被捕获到中转服务器然后展示给用户,用户在本机上直接的操作,比如鼠标的拖拽点击、键盘的按键、快捷键等,又会被用户端的程序
捕获、解析、转发给中转服务器,然后将对应的操作在宿主端复现出现,实现一个完整的交互闭环。
这种形式自然有其优劣势,从优点角度来看主要突出一点——便捷:
  • 通常中转服务端有独立完整的客户端可以下载,安装和使用比较便捷,上手成本低。
  • 中转服务由专业服务器提供,只要双端能够正常访问网络,就可以使用,并不受特定端口、IP类型等限制。
但是,你肯定也发现了其中的局限性:
  • 中转服务器会捕获、解析、转发相应数据,本身可能存在一定安全风险(不要对企业的职业素养有任何奢求)
  • 为了控制成本,这类免费的服务会有带宽限制,满足日常PPT演示等场景足够,但是对于复杂的游戏画面并且要满足帧数流畅的要求,远远不够;而专门针对游戏场景的模式,通常需要额外付费,且费用不低。
  • 由于多数不是针对游戏场景,也自然缺少手柄映射等支持能力。
这298买啥游戏不好

这298买啥游戏不好

于是,我们将目光转向P2P类型的服务,看如何来满足我们的游戏需求。

1.2 P2P(peer-to-peer)直连模式

对等式网络(英语:peer-to-peer, 简称P2P),又称点对点技术,是去中心化、依靠用户群(peers)交换信息的互联网体系,它的作用在于,减低以往网路传输中的节点,以降低资料遗失的风险。与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能,任何一个节点无法直接找到其他节点,必须依靠其户群进行信息交流*。——维基百科Wiki
通过术语理解P2P可能较为生硬,我们换个角度思考:既然在第一种方法里,我们要追求更直接、更快速的链接方式,并且尽可能让远程串流的带宽不成为画面传输的限制因素,我们有一个很简单的方式:抛弃中转服务器,直接让宿主和用户端链接。
这种没有中转服务器的方式,就可以理解为P2P式直连
那么,是不是有两台开着的电脑,利用Windows自带的远程桌面链接功能,我们就可以实现这种链接呢?
远程桌面实际是许许多多串流软件的鼻祖和前身,即便在十分“现代”的Moonlight的使用中,也会使用到该能力。

远程桌面实际是许许多多串流软件的鼻祖和前身,即便在十分“现代”的Moonlight的使用中,也会使用到该能力。

是,也不是。
这个就需要我们对宽带网络环境有一个基础的认知。
以下1.3-1.6内容均为知识普及,可直接跳转至 1.7光猫桥接与路由器设置 查看。

1.3 内网、公网有何分别?

毕竟我们不是专业的网络工程师,不需要对这些有非常准确的定义,只要能帮助我们建立起一些基础概念并运用在可能出现的问题排查中即可。
简单来讲,内网,就是俗称的局域网,以前黑网吧的《CS》、《War3》就是用的局域网技术。你能在这个网吧内找到同样上机的玩家,但是没法和别的网吧的同学一起联机;
公网,即因特网、互联网,就像后来出现的浩方、11、VS,即便你和同学各自在家上网,也能开个房间一起玩。
在我们上述介绍的场景里,内网其实就对应“家里面的设备”,在光猫和路由器下接入的PC、智能电视、NAS等等都是我们家庭内网中的设备;而在地铁、大巴、机场上,用手机、热点、或者其他商家提供的WiFi时,我们实际上加入的就是不同的“局域网”(移动、联通、电信在没有公网IP的时候也可以理解为一个大内网)。

1.4 IPV4和IPV6

在公网的地址中,我们要提及ipv4和ipv6两种概念。
IPv4
IPv4是一种Internet协议,它是用来标识和定位计算机或其他设备在互联网上的位置。IPv4的地址长度为32位,可提供约42亿个独特的IP地址,但是由于互联网用户的增加,这个地址空间已经不足以满足需求。IPv4地址通常用点分十进制表示法表示,如192.168.1.1。
具体参考维基百科

具体参考维基百科

IPv6
为解决数量稀少的问题,科学家在IPV4协议的基础上推出了IPV6,也就是网络协议的第六版本。为什么没有ipv5?就像你问G胖为什么游戏没有3一样。
IPv6的地址长度为128位,可以提供更多的IP地址,其新增的地址空间支持2^128(约3.4×1038)个地址(具体数量为340,282,366,920,938,463,463,374,607,431,768,211,456 个),相当于每个人在地球上都可以拥有多个IP地址。IPv6的地址格式较为复杂,通常用冒号分隔符分成8组16进制数表示,如 2001:0db8:85a3:0000:0000:8a2e:0370:7334
我们已知P2P是一种设备的直连方式,那么我们就需要在茫茫互联网中通过一串字符地址找到一台固定的设备来进行连接。如果你有固定的IPV4的地址,那你在网络上已经是让人艳羡的富豪啦,互联网的世界向你打开!
当然,我们更多普通玩家拥有一个属于自己的IPV6地址也是非常简单的,如今三大运营商在光猫拨号时通常会默认下发一个ipv6的公网地址,你可以通过拨号上网的设备后台确认到这一点。
我家使用红米AX6S进行拨号可以看到对应的IPV6地址已经下发

我家使用红米AX6S进行拨号可以看到对应的IPV6地址已经下发

1.5 NAT和网络穿透

NAT是网络地址转换(Network Address Translation)的缩写,是一种将私有IP地址转换成公共IP地址的技术,它主要用于局域网与公网之间的通信。NAT的作用是在一个私有网络中,通过转发指定端口的方式将多个内部设备共享一个公共IP地址,从而减少公共IP地址的使用量,同时外部用户访问该地址时无法判断有多少内部设备,也增强了网络的安全性。
网络穿透,俗称“打洞”,也就是在NAT环境下用于建立设备之间直接通信连接的技术。
在NAT环境下,一个具体的私有IP地址无法直接被公共网络访问,因此需要通过一些技术手段,如端口映射、DMZ、虚拟服务器、UPnP、NAT-PMP等,来建立公共网络与私有网络、私有网络与私有网络之间的通信连接。
通过将宿主机PC的部分端口转发到路由器上,我们就可以实现在公网连接路由的IPv6地址,直接连接到宿主机上,实现远程串流控制。

1.6 常见家庭网络拓扑

家庭中最常接触的网络设备其实主要分为两种:
  • 光猫:通常由运营商提供,负责将入户的光纤-光信号,转化为可以被多数设备解码的电信号,通常承担家庭网络拨号的功用;
  • 路由器:通常由家庭购买,将光猫的网络信号转换为WiFi信号使用,也支持上网设备直接通过连接网线的方式进行上网; 对外,光猫负责使用我们的帐号密码进行拨号上网(PPPOE),将我们的网络注册到运营商内,再通过运营商访问公网;对内,路由器将光猫的宽带信号进行桥接转发,并在自己的网关下连接各式各样的设备,实现各类设备的上网访问。
因此,我们就可以得到一个简单的网络拓扑图:
也许你还会有一些其他设备,比如UU盒子、软路由、交换机等等,这样网络拓扑就会更为复杂,本文不做展开。提供一个判断依据:只要你的PC不是通过这些设备再连接的路由器,就可以按照下文的方法进行远程串流的设置。
如果你的网络拓扑无法简化成以上图片样式,建议尽可能做物理调整。

1.7 光猫桥接与路由器设置(可选)

请注意,以下这些操作为非必要操作!
在上述基础网络拓扑图的基础上,我们可以通过设置光猫桥接与路由器拨号,对网络质量进行提高。
如果面对以下的问题:
  • Parsec可直接连接,但 Network 延迟较高需要优化;
  • Parsec无法直连,报错误代码为6023的问题;
我建议在做好充足备份的前提下,进行相关操作:在宿主机上登录光猫网关,网关地址可以在光猫背后查看,同时记录下对应光猫的设备型号,方便后续搜索超管密码,建议拍照省事。
1. 获取光猫超级管理员帐号密码,并确认自己宽带账号密码。
2. 登录光猫后台,寻找宽带设置部分,将原有拨号方式改为桥接。
  • 找到网络-宽带设置,不同型号光猫配置位置不同,但是界面相似;
  • 找到写有“INTERNET”的链接,进行勾选,此时下方表单会刷新会对应的配置内容,截图保存备份;
  • 将IP协议版本改为“IPV4/IPV6”,这样后续拨号时可以获取到IPV6的公网地址;将连接模式改为桥接;
  • 保存配置,退出光猫后台。
3. 登录光猫后台,寻找宽带设置部分,将原有拨号方式改为桥接。
  • 找到网络-宽带设置,不同型号光猫配置位置不同,但是界面相似;
  • 找到写有“INTERNET”的链接,进行勾选,此时下方表单会刷新会对应的配置内容,截图保存备份;
  • 将IP协议版本改为“IPV4/IPV6”,这样后续拨号时可以获取到IPV6的公网地址;将连接模式改为桥接;
  • 保存配置,退出光猫后台。
移动光猫设置的位置如上图

移动光猫设置的位置如上图

4. 登录路由器后台,进行相关设置。
  • 找到上网设置,将网络连接方式改为“PPPOE”,填入宽带账号和密码;
宽带的帐号密码可以打电话给运营商获取

宽带的帐号密码可以打电话给运营商获取

  • (可选)找到防火墙设置,将IPV6部分的防火墙进行关闭;

  • IPV6防火墙可能会对后续串流转发存在一定影响,初始步骤中可以不进行设置,如果出现6101或6023问题后再来进行设置,具体可参考常见问题排查 。
  • 点击保存,完成路由器宽带设置。
  • 选择高级设置-其他设置,开启UPNP功能,开启后路由器自动将软件用得到端口进行转发。
开启Upnp可以解决90%问题,部分不支持upnp的工具需要手动转发端口

开启Upnp可以解决90%问题,部分不支持upnp的工具需要手动转发端口

5. 完成以上操作,在PC上能够正常联网访问内容就代表配置生效啦!
了解清楚以上这些后,我们要通过软件和公网的能力,在宿主和用户之间建立起联系。
来,让我们开始操作!

2. 选择方案,开始操作!

本章节中,我将会根据自己之前使用的经验来介绍以下几种主流远程串流的方案和相关配置操作:
  • Parsec
  • Parsec+Zerotier
  • Moonlight+Zerotier

2.1 物料准备

  • 宿主机(家中闲置的PC)
  • 用户端(商务本、手机、平板等任何你想用来远程串流玩游戏的设备)
  • HDMI显卡欺骗器
  • 价格:10~30
  • 用来在关闭外接显示器时让显卡能正常运转,若不使用显卡器欺骗器则只有核显运转
  • 智能插线板
  • 价格:< 100
  • 支持直接连接公网,推荐向日葵C1Pro或向日葵智能插线板;
  • 如果购买小米智能插线板,需要确认家中是否有蓝牙网关(小米音响等),如果仅购买一个智能插线板是无法使用的!(小米你罪大恶极!)

2.2 下载软件

在软件工具的选择上,我主要选择了Parsec、Moonlight两款串流软件,并选择通过Zerotier来进行虚拟组网(网络穿透,俗称打洞),绕过一些可能无法解决的客观网络问题。Stream Link 在局域网内串流表现尚可,但在公网远程串流中延迟等表现不佳,故不做考虑。

2.2.1 Parsec

官网:Connect to Work or Games from Anywhere | Parsec
适用平台:Windows、Web、MacOS、Android、Linux
优点:
  • 对显卡驱动没有要求
  • 可直接展示桌面,并进行远程操作
  • 支持手动设置分辨率与串流带宽
  • 串流延迟低,对Switch Pro、Xbox手柄识别和支持良好(没有PS手柄,因而并未测试)
  • 宿主机上也可直接操作,不会与远程串流产生冲突
缺点:
  • 登录时需要解决网络连接问题
  • 建议直接外接手柄或键鼠操作,触屏操作兼容差

2.2.2 Moonlight

官网:Moonlight Game Streaming: Play Your PC Games Remotely
适用平台:Windows、MacOS、Android、LInux
优点:
  • 对N卡游戏等识别应该有独立优化,个人体感上比Parsec更顺畅
  • 支持手动设置分辨率与串流带宽
  • 支持虚拟手柄映射,勉强能玩玩文字类的简单游戏;
缺点:
  • 仅支持N卡,A卡用户无法使用
  • 未尝试宿主机上直接操作,不确定是否会与串流操作冲突
  • 需要手动设置才可展示桌面,若不设置仅能选择GeForce Experience识别出的游戏进行游玩;
  • Moonlight在宿主端识别上问题较多(我经常出现识别不到的情况,需要删除后重新添加),每次删除主机重连需要手动在宿主端输入验证码;

2.2.3 Zerotier

官网:ZeroTier – Global Area Networking
适用平台:Windows、MacOS、Android、IOS、Linux、FreeBSD、NAS
优点:
  • 通过Web端可以直接管理虚拟网下设备情况
  • 免费版对网速和带宽没有限制,支持添加30个设备;
缺点:
  • 设备入网之后一定要记得在Web端确认并允许访问网络!!!
在实际使用过程中,我仍建议配合向日葵进行一些辅助操作。从实践经验来看,以上两款串流软件虽然在游戏表现极佳,但是如果要做相关的界面操作仍需要依赖键盘鼠标,在平板、手机上的交互并不理想,而向日葵在移动设备上对手势操作有比较好的支持。

2.3 方案一:Parsec

此方法要求宿主端与用户端均拥有公网IPv6网段,才可直接连接。
Parsec注册与登录使用
1. 在官网根据机器类型,在宿主机和用户端完成软件的下载与安装
2. 注册账号,推荐使用163、Gmail等邮箱,QQ邮箱可能会出现问题
3. 客户端登录:设备首次登录时会提示有一份邮件发送到注册邮箱需要你手动确认,记得去垃圾邮件里翻一翻;点击按键确认后关闭页面,重新在帐号密码处选择Login即可登录成功
4. 在宿主端与用户端都完成登录后,你可以在用户端的Parsec中看到你的PC(记得不要挂载在同一个WiFi下,用手机热点之类的去进行尝试),点击“Connector”,即可开始游戏!
此处需要科学上网,否则会出现 800 报错,导致登录后无法显示你的宿主PC

此处需要科学上网,否则会出现 800 报错,导致登录后无法显示你的宿主PC

完成以上操作后,就可以串流你的宿主电脑了。
这里可以看到我顺利连接后的网络延迟状态,基本在一个游戏可用的状态。整体延迟会分为编码、解码、传输三个部分,通常网络部分对画面流畅度影响最大。对于多数游戏来说 Parsec的延迟是可忽略不计的,如果非常关注延迟,我们还可以通过设置不同分辨率、串流带宽等方式进行优化。

2.4 方法二:Parsec+Zerotier

如果出现了各类复杂的网络问题(譬如6101、6023等问题),其实可以通过使用“Zerotier”软件来组建虚拟网来进行解决。
Zerotier注册与使用
  1. Zerotier官网完成注册和登录后,进入到个人页面。
  2. 点击“Create A Network”,创建一个虚拟网,系统会默认创建你的网络ID和名称。
  3. 取消选中“IPv6 自动分配”部分中的所有复选框(如果选中),到这一步虚拟网已经可以使用了。
  4. 在宿主端和用户端下载Zerotier应用,打开后选择 “Join New NetWork”,复制刚才创建的网络ID粘贴,即可完成虚拟网的加入申请。
5. 重新回到Zerotier的网络详情页面,滚动找到“Members”这一栏。你会看到设备已经被添加到对应网络中,并分配了一个虚拟网的IP地址,此时需要勾选最前端的方框进行授权。
6. 勾选宿主、用户端的地址进行授权,此时机器已顺利加入虚拟网。
7. 重新尝试连接Parsec,若连接成功即可直接使用。如果没有,还需要在宿主端上将Zerotier设置为最高优先级,此处以Windows为例。
8. 按 Windows 键 + R,键入 control netconnections 单击确定。
9. 右键单击 ZeroTier One,单击 属性 ,然后单击 Internet Protocol Version 4 ,然后单击 属性
10. 禁用自动跃点,并手动设置跃点为1。
11. 在每一层窗口上点击 确定 以应用设定!每一层!
图片来源:Zerotier官网

图片来源:Zerotier官网

12. 完成后,对列表中可用的非 ZeroTier 网络重复这些步骤,将自动越点设置为大于 1 的数字。主要是要将以太网或者WiFi设置为跃点2以上,看你具体PC联网的方式。
这一步是为了调整默认接入网络方式,调整跃点后PC将会默认先通过Zerotier去链接Parsec,由于虚拟网内机器可以相互访问,就绕过了ipv6的限制问题。
14. 此时,Parsec应该在Zerotier虚拟网中进行正常访问。

2.5 方法三:Moonlight+Zerotier

Moonlight 作为N卡驱动的一个局域网串流工具,虽然不具备直接p2p连接的能力,但是通过和Zerotier的组合能够实现流畅的公网串流。作为Moonlight串流的前提,我们的PC上需要安装GeForce Experience并开启串流功能。
GeForce Experience设置
Zerotier的配置请参考 2.4中 Zerotier注册与使用。
  1. 宿主端下载GeForce Experience并完成安装。
  2. 登录GeForce Experience,选择 设置-常规 取消实验性功能的勾选。
3. 选择 SHIELD 选项卡,开启Game Stream功能;此时所有N卡可识别的游戏即可通过Moonlight进行连线使用。
4. 手动点击 添加 按键,在 C:\Windows\System32 目录下找到 mstsc.exe 进行添加;这是Windows默认远程桌面控制的功能,Moonlight可通过此功能实现远程桌面控制。
5. 根据自己所玩游戏类型,在SHIELD中添加对应游戏的.exe执行方式,即可快捷打开。
Moonlight串流
如果首次进行Moonlight串流配置,建议在同一个物理WiFi下添加宿主机会更方便一些;
官方文档:Setup Guide · moonlight-stream/moonlight-docs Wiki · GitHub
  1. 开启Zerotier,将用户设备加入到虚拟网;
  2. *如果你的PC是Win11系统,为避免可能存在的GPU问题,需要在主机 PC 上禁用硬件加速 GPU 调度。使用“开始”菜单打开“图形设置”,然后单击“更改默认图形设置”,并将“硬件加速 GPU 调度”选项设置为关闭。
3. 开启Moonlight,此时将会自动搜索局域网内开启了相应功能的PC,若连接正常,将自动识别出PC设备,并在屏幕上以加密形式展示;若无法连接,同一局域网下请输入PC的路由IP,若通过Zerotier组网,请输入Zerotier中的Manged IPs。
4. 单击弹出窗口,将对应PIN码在宿主端输入,即可完成串流匹配。
5. 在正式开始串流游戏前,推荐进入设置手动修改码流带宽。以手机作为游玩端为例,通常建议将分辨率设置在720p,码流设置在5-8Mbps即可,默认20Mbps的码流实际有些过高。若对帧数有要求,记得勾选高级设置中解锁全部可用帧率

3. 如何构建一个完整的远程控制流?

完成以上网络配置和操作之后,我们仅需要将电脑与只能插座连接,就可以实现随时随地远程开机串流玩游戏的目的了。此处以我自己日常玩游戏的流程举例说明(我使用了向日葵C1PRO):
  1. 打开向日葵远程控制 App,直接远程命令宿主机开机;
  2. 开机后直接通过向日葵登录PC,完成Steam开启游戏等需要鼠标操作的动作(我会开个模拟器挂机用);
  3. 切换Parsec,直接用蓝牙连接手柄进行游戏。
  4. 游戏完毕后,直接向日葵控制远程关机即可。

4. 常见问题排查

如何让Parsec、Zerotier等软件开启启动?

  1. 按 Windows 徽标键  + R,键入“shell:startup”,然后选择“确定”。这将打开“启动”文件夹。
  2. 将想要开启启动软件的 快捷方式 拖入到 启动文件夹即可。

Error Codes -800:无法查看到登录的宿主机

需要通过一些手段解决网络连接后进行登录,登录后实际传输并不依赖相关设置。

Error Codes - 6101 :网络连接被拒绝

通常由于网络波动造成,重试几次即可恢复。如果持续出现6101问题,建议重新连接Zerotier等进行重试。

Error Codes -6023:网络协商失败无法建立连接

官网链接:Error Codes - 6023 and 6024 (Unable To Negotiate A Successful Connection) – Parsec
就个人经验来看,6023是最常见且最为棘手的问题,处理方式如下:
  • 如果出现6023问题,请先根据 1.7 光猫桥接与路由器设置 减少一层路由缓冲,重新进行尝试;
  • 修改路由器,配置端口转发规则或开启DMZ功能将宿主端设置为DMZ机器;
  • 若仍出现该问题,建议配合Zerotier设置,基本能解决99%的问题。

MacOS运行Zerotier后提示:Waiting For Service

  1. 搜索打开 “终端”或“Terminal”,在其中输入以下语句:
cd /Library/Application\ Support/ZeroTier/One sudo ./zerotier-one -d
2. 提示Password,此时输入解锁密码并回车确认。由于输入内容不会以 * 号方式展示,所以大家输错的话重新试几次就可以。
3. 输入成功后,应该不显示任何内容,如下图所示:
4. 此时在右上角选择 Zerotier 服务,即可正常加入网络并进行使用。

5. 结语

原本只是想跟大家分享一下远程串流的设置方式,没想到又解释了一堆基础的网络概念和设置方式,可能观感上有些冗长,实在不好意思。希望大家都能够顺畅的解决各种各样奇奇怪怪的问题,有什么特殊问题也可留言私信我,我尽己所能帮大家解决。
在变动颇多的2022年,远程串流陪我在高铁、机场度过了许多忙碌工作中偷闲得来的快乐日子。
即便是在酒店写方案到凌晨2点困得睁不开眼,但当我想到我可以随手打开手机,连上家中的电脑,享受到不带丝毫折扣的3A游戏的快乐,也会觉得有一些小小慰藉,从而有了继续努力下去的勇气。
游戏对我而言是一丝慰藉,一条道路,一种我可以逃避工作烦恼,享受生活的可能性。
只要它在那,我就会对明天充满信心。

© 2022 3楼猫 下载APP 站点地图 广告合作:asmrly666@gmail.com