2023 年,正确使用 PS5 原生推流到 B 站
昨晚折腾了一晚上,就为了实现 PS 直接推流到 B 站直播。开始之前以为劫持 Twitch 还是挺简单的,实际操作起来还是遇到了不少的问题。记录一下留给有需要的朋友。
准备工作
如果你没有软路由设备,可选一台设备能提供旁路网关的功能,因为你需要劫持 DNS 解析,并且能操作 iptables 进行流量转发(必须,仅重写 DNS 现已无法实现)。软路由一般都具备这些功能。
如果你没有软路由设备,可以尝试在虚拟机中安装一个 Linux 作为旁路网关。
如果你使用 macOS,可以使用 Surge 等软件实现网关的功能。
以我的设备为例:
- OpenWrt 网关: 10.0.0.2
- Arch IP: 10.0.0.106
- PS5: 10.0.0.102
- macOS: 10.0.0.101
上面的地址需要记住前两个即可。Arch 是我用来挂 Docker,Docker 里跑推流服务的。原理就是劫持 PS5 推流的流量转发到 Arch 中的 Docker。macOS 就可以通过 Arch 来获取流再用 OBS 推到 B 站。
部署 Docker 镜像
在我的 Arch (10.0.0.106) 上部署 Docker 容器。
这边我把 Web 端管理映射到了 8888 端口,在内网可以用 10.0.0.106:8888
进行访问。
DNS 重写和流量转发
在网关(10.0.0.2),修改 hosts 文件。增加一行:
或者。使用 ADGuard Home 的 DNS 重写。
然后需要把 live.twitch.tv
的流量转发到 Arch (10.0.0.106)。使用 iptables,用 hosts 和 DNS 重写无效。
首先查询 live.twitch.tv
的 IP 段。
我们可以看到记录有 3 个 IP,都在 45.113.128.0/24 中,所以我们就 DNAT 这个网段的 1935 端口到 Arch(10.0.0.106)的 1935 端口就行。
在网关(10.0.0.2)上执行:
PS5 开启 Twitch 直播
PS5 的网关指向 10.0.0.2,开启直播。没有意外的话,在 mac 打开 10.0.0.106:8888
这个地址就能显示在 app 下面了。
此时,打开 OBS,添加 媒体源,取消本地文件的复选框,填写 rtmp://10.0.0.106:1935/app/live_884958670_oI4yCxIRHzlBJzmxCQ9hNFgo7iIGji
。就能显示 PS5 的画面了。live_
后面的替换成自己的。