超低成本PS5远程串流!

思路:网络部分使用zerotier创建虚拟局域网,让PS5在虚拟局域网内,从而被其它设备访问;控制部分使用开源的软件chiaki(pxplay也行,但它收费)注意,chiaki有多版本,目前使用chiaki-ng

开源项目:chiaki-ng

特性:

  • 支持Windows/MacOS/Android/Linux…
  • 可以调整码率,支持远程唤醒、Xbox手柄!
  • 支持DS原生震动和线性板机!

chiaki虽好,但需要设备处于同一局域网内

如果只在局域网内使用,请分别下载对应客户端食用即可;后续教程可以跳过~


但,如果想在不同的网连接,要么需要公网,要么可以创建“虚拟局域网”(VLAN),需要软件(zerotier)让设备都处在同一个虚拟局域网内,这样就能使用chiaki啦~

下面的教程分为四大部分:

  1. 注册zerotier与创建虚拟局域网
  2. 路由器安装zerotier与配置虚拟局域网
  3. 客户端加入虚拟局域网
  4. 开玩!

1.注册zerotier与创建VLAN

在zerotier官网 https://zerotier.com/ 上注册账号

随后,点击"create a network"

创建网络

然后点击创建出来的网络,Name可以随便起,AccessControl最好使用’Private’

即:所有要加入这个虚拟局域网的设备需要你手动认证审核;

记下这里的Network ID,它就是你的虚拟局域网ID啦,后面需要用上

选择Private

接下来,可以更换虚拟局域网的ip段,当然,使用系统分配的也可以啦

可以更换虚拟局域网的ip段

zerotier官网的所有操作会自动更新,所以不用手动保存

2.路由器安装zerotier与配置VLAN

这一步是比较劝退的,由于ps5无法安装zerotier,所以我们只能曲线救国;

在路由器(刷了openwrt系统或其它系统)上安装zerotier

  • 自动:一般在openwrt系统的应用商店可以搜索并下载到(甚至默认安装)
  • 半自动:zerotier官方提供了比较方便的安装方式,一条命令即可完成(这里默认您已经会使用ssh工具并连入路由器)

curl -s https://install.zerotier.com/ | sudo bash

加入虚拟局域网

在路由器上加入到创建的虚拟局域网

zerotier-cli join fadxxxxx5eb45a9

随后,在zerotier官网上授权这个设备的接入,将设备前面的Auth同意,此设备就加入虚拟局域网成功了,右侧可以看到这个设备的虚拟ip

同意设备接入

配置虚拟局域网

但目前只让路由器加入了这个虚拟局域网,为了让ps也能入网,我们需要先设置NAT

  • 在zerotier网页,找到**“Manage Routes”**模块,将ps所在的真实局域网段(如我这里写的是192.168.8.0/24)填写在Destination,将路由器的虚拟ip填写在Via

从而让你真实局域网内的所有设备,都能被虚拟局域网访问,而路由器就充当了”中间人“

设置NAT

点击Submit提交。

最后一步,需要在路由器的zerotier管理页面,自动允许客户端NAT

自动允许客户端NAT

即完成虚拟局域网的配置;


3.客户端加入虚拟局域网

还是在zerotier官网,下载pc对应的客户端,如果是安卓,建议用安卓zerotier好用版

在pc下载zerotier后,需要加入虚拟局域网,还是使用上面的NetworkID,并且仍然需要手动确认加入。

pc加入网络

电脑上会安装一个虚拟网卡,如果弹出来选项框都点是。

其它平台也是类似操作,安装好对应的客户端后加入网络即可。


4.开玩!

为了体现出虚拟局域网的用处,最好让电脑与ps处于不同的真实局域网中,比如让电脑连接手机热点;

电脑端串流

电脑上下载chiaki-ng,链接->chiaki-ng https://github.com/streetpea/chiaki-ng ,找到chiaki-ng-windows-installer.exe(免费)

打开chiaki-ng后,点击右上角”+“号,输入ps5的真实局域网ip(比如192.168.8.5)

记得吗,前面把整个192.168.8.0/24网段都加入到虚拟局域网了

img

然后需要添加注册用户(其实就是需要登录ps账号),但不要直接填写你PSN的ID,它需要填写base64格式

填写转码后的ID和远程PIN

使用ID转换工具 https://psn.flipscreen.games 得到转码后的ID,记得要复制chiaki这一个,psplay是另一个软件的(psplay收费)

复制chiaki的那一串码子

另外,需要在ps的“设置”->“系统”->“远程游玩“开启远程游玩,并且找到PIN码(有时效),将PIN填写在软件上。

随后即添加大成功!!!

ps设备添加成功

  • 如果主机处于开机状态(白色),直接双击就能开始远程串流了
  • 如果主机处于待机状态(黄色),需要选择”Wakeup“发送唤醒操作,然后再进行远程串流
  • 主机完全关机的状态下无法被唤醒,更无法串流;(可以试试手指机器人?)

电脑端演示效果

电脑端演示效果

按ctrl+o可以选择出来串流,其它的设置(包含分辨率、码率请自行调整)

---------------------------------------------

安卓

如果是安卓,可以在google商店下载到chiaki-up(免费)

安卓需要先打开zerotier并加入虚拟网络,并且保持加入网络的状态(会创建一个虚拟网卡)

zerotier连接到虚拟局域网

再打开chiaki-up,点击右下角添加ps5,方法与电脑端相似;

chiaki-up添加主机

手机端演示效果

可以用蓝牙连接ds,再将屏幕上的虚拟控制关闭

手机演示效果


至此,教程应该就结束了;

延迟问题

我与朋友测试过,相隔150公里左右,延迟稳定10ms~15ms;并且串流时可以正常使用线性板机、震动等功能;体验还是不错的。

另外,zerotier默认使用p2p打洞,如果打洞成功,延迟会很低而且稳定;

但如果一直无法的洞成功,其实还可以尝试走中转服务器!

但如何搭建moon中转服务器,可惜这里的空白处太小,写不下~

最后,提前祝大家新年快乐!

原文

这里是最初写的

网络部分

zerotier的安装与使用具体可以查看另一篇文章

  1. 在zerotier创建一个虚拟局域网fx2811dwx(随便写的)
  2. 在n1盒子上(刷了openwrt系统,并安装了zerotier插件)启动zerotier,并加入到虚拟局域网fx2811dwx,需要在zerotier控制台同意设备加入
  3. 为了让PS5也加入到这个网络,需要在n1盒子上,允许 Zerotier 的拨入客户端访问路由器 LAN 资源
    1. 需要在 Zerotier 管理页面设定到 LAN 网段的路由表
    2. 比如n1盒子的虚拟ip是10.22.22.15,n1盒子的真实局域网ip是192.168.6.15。需要在zerotier管理页面,将LAN网段192.168.6.0/24 交给10.22.22.15进行转发
    3. 在PS5上,将网络设置的网关(以及主DNS)设置为n1盒子的真实局域网ip

如果没问题,此时同一个虚拟局域网下的设备,可以ping通PS5(假设它的真实局域网ip是192.168.6.5),也就是说,PS5是不需要安装zerotier或设置虚拟ip的,转发的操作已经交给了n1盒子

如果网络不稳定,zerotier无法创建直连p2p,此时需要中转服务器(也叫moon服务器),具体操作在另一篇zerotier文章有写

注意

除了使用zerotier,也可以使用相似的tailscale皎月连等虚拟局域网创建工具;

网上也有使用dmz转发的方法(需要有公网),但此方法会暴露端口,不太推荐

操控部分

PC/安卓/苹果 需要安装软件chiaki

项目:https://github.com/streetpea/chiaki-ng

假如在PC上下载好chiaki软件,此时假设PC也在n1盒子相同的“真实局域网下”(即PC可以ping通PS5),如果chiaki未发现PS5,可以自选添加

其中选项如下

  1. ip要设置为PS5的真实局域网ip(192.168.6.5)
  2. 写真实的PSN的ID,然后点击public lookup,可以自动填写ID对应的base64格式。或者用这个网站可以将PSN的ID转码https://psn.flipscreen.games/
  3. 以及pair对应的码子,在“系统”->“远程游玩”->"配对"里找,码子有效5分钟

如果没问题,即可添加成功,随后即可开始串流

注意

chiaki是支持ds手柄原生震动的,但需要有线连接到电脑,如果发现有线连接后还没震动,可以下载Playstation accessories(官方软件)并将手柄驱动更新,理论上不需要一直后台打开accessories就可以用原生震动(如果软件关闭原生震动就不能用,就一直打开accessories好了)