Skip to content
项目

IceNoproblem/PS5LiveBridge has 53 GitHub stars and 2 forks. Star changes are not measured yet. Last checked 2026-11-14 02:08 UTC. Last push 2026-11-13.

这些数字如何统计

实测星标增长

24小时
正在收集历史
7天
正在收集历史
15天
正在收集历史
1个月
正在收集历史

各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。

关于

ps5游戏机直播工具,直接直播到B站,弹幕显示在ps5游戏画面

开发工具

README.md

原文

PS5 直播桥 v5.1.7b

PS5 直播桥界面

Bilibili QQ 群 1092104797

把 PS5 的原生直播画面转到 B 站,B 站弹幕再送回 PS5 画面。 不破解、不装采集卡,全程在网络层解决。

本来原来的也能用,但是很多人弄不明白那个 DNS 劫持,索性用分步引导的方式重做了一个桌面版,Windows 和 Mac 都有。会弄容器的还是少数,所以以桌面版为主,容器版同步升级。

两种跑法,功能一样,选一个:

适合 加速器装在哪
Windows 桌面版 手边有一台常开的 Windows 电脑 路由器上、电脑上,都行
Mac 桌面版 手边是一台 Apple 芯片的 Mac,macOS 13 以上 路由器上、电脑上,都行
容器版 有 NAS / 常年开机的 Linux 机器 必须装在路由器上

桌面版成品在 Releases 下载,解压即用。Windows 是 zip,Mac 是 dmg,拖进「应用程序」就行。 容器版有现成镜像 icenoproblem/ps5livebridge(Docker Hub / GHCR 同步发布),也可以自己构建,见容器版部署。

第 1 步 · 选你的情况 第 2 步 · 检测
扫码登录 开播

截图是 Windows 桌面版实际跑的界面。Mac 版和容器版界面一样,只是某些项不一样:容器版没有三选一那一屏,它只有「改路由器」一条路;Mac 版三种方案都在,收流用 MediaMTX + ffmpeg,方案三第一次点开会弹一次系统密码框。


功能

  • PS5 点「开始直播」后,自动在 B 站开播并转发画面,电脑上不用点任何按钮
  • B 站弹幕实时送回 PS5,走 PS5 自带的 Twitch 弹幕通道
  • PS5 停播后自动让 B 站关播
  • 默认直转不转码,延迟 1~2 秒,CPU 占用很低
  • 可设 B 站分区、标题;标题留空会自动去 Twitch 抓 PS5 上填的那个
  • 右侧常驻运行日志,带毫秒时间戳,能按级别过滤、一键复制
  • 左侧实时状态:阶段、通道、转发、流确认、加速方案、弹幕数、已播时长、画质、房号、标题
  • 诊断面板:本机 / PS5 / B 站三侧状态一览,端口全景能看到谁占了 53 端口,一键导出诊断包
  • 常见问题排查:17 条按「你会看到什么 → 为什么 → 怎么办」写的排查手册,程序内直接可查
  • 支持作者:程序内可直接打赏

三种方案

PS5 开 Twitch 直播必须走加速器。加速器装在哪、路由器让不让你动,决定了用哪种方式。 v5.0 起点就问你这个问题,点一下只展开对应那块。

方案一 · 加速器在路由器上,路由器能改 hosts

最省事的一种。把推流域名指到跑本程序的机器,PS5 什么都不用改,保持自动获取。

界面按路由器型号给了小米、OpenWrt、华硕、爱快等写法,可以直接复制粘贴。

这里有个坑值得单独说:hosts 不支持通配符。 写 live-video.net 只匹配它自己,不会匹配 hkg06.contribute.live-video.net。 而 PS5 连的是具体地区节点,不是主域名。所以生成的 hosts 现在是 20 条具体节点一条条列出来 —— 少列一个,PS5 恰好连到那个节点就会绕过本机直接推公网,表现是「开播了但没画面」。 dnsmasq 那套(OpenWrt / 梅林)支持后缀匹配,所以那种写法保持 address=/live-video.net/... 一行就够。

容器版只能走这一种。

方案二 · 加速器在路由器上,但改不了 hosts

这种情况以前是无解的,v5.0 加了条路:让跑程序的这台机器自己当 DNS。

推流域名和 Twitch 的域名都答成本机地址,然后把 PS5 的 DNS 指过来,其余照旧。

但这条路必须再填一个代理服务器,不是可选项。原因很简单:

这条路上 Twitch 的网页/API(443)也会被引到这台电脑,
国内直连 Twitch 不通,这台电脑必须有一个能出海的通道把它们转出去,
否则 Twitch 应用根本打不开,你也就点不到「开始直播」。

加速器是装在路由器上的,它只加速 PS5 的流量,帮不到这台电脑,所以这里要单独填一个。 填 http://192.168.1.100:7890 这种形式就行,局域网里另一台跑 Clash/mihomo 的机器也可以。

这个输入框和第 4 步的「Twitch 代理」是同一个变量,填一处两边同步。

方案三 · 路由器和 hosts 都动不了

那就把加速器装到电脑上,走端口级接管。在本机直接拦 PS5 的推流连接,不碰路由器,也不改 DNS。

要管理员权限。Windows 上第一次启动就要,Mac 上是点到方案三的时候弹一次系统密码框。

v5.1.7b 改了什么

退出的时候会把 WinDivert 驱动一起停掉。以前退出之后驱动还挂在内核里,虽然不再拦包,但一直在那儿。现在退完就停,下次开程序会自己装回来。

v5.1.7a 改了什么

Windows 版加了系统托盘。以前双击之后只有浏览器里一个标签页,关掉标签程序还在后台跑,只能去任务管理器里找。现在右下角一直有个图标,鼠标放上去能看状态,右击可以打开界面、开关机自启、退出。

版本号改成带字母的时候,更新判断会把字母丢掉,装了 5.1.7 的人收不到这一版的提示。这个也一起修了。

v5.1.7 改了什么

第 4 步的分区选择换掉了。B 站一共 456 个二级分区,塞在一个原生下拉里翻不到头,现在改成能搜的:直接打字,中文和拼音都认,敲「只狼」「zhilang」「单机」都能出来。方向键选、回车确认、点外面收起。

顺手修了另外几个下拉的配色。之前展开是白底浅字,Windows 上看不清,因为那个列表是系统原生画的,不跟我们的深色主题走。

v5.1.6 改了什么

有人开播时 PS5 报「有其他设备正在向这个频道播放」,重启电脑能好,过一阵又出来。查下去是收流端没退干净:上一次的收流进程还占着 1935,抱着 PS5 的推流会话不放,PS5 再来就被它拒了。

现在起收流之前会先看一眼端口上是不是自己人,是自己人就清掉重开,是别人的就不碰。收流端停的时候也改成确认真死了才算停,以前 Windows 上点了停止进程可能还在。

第 5 步加了个「修复收流」按钮,遇到这个报错点一下就行,不用再重启电脑。

另外修了两处:主程序崩了以后子进程可能收不干净,现在会把这件事写进日志;小屏幕上界面窗口不再顶出屏幕底部。

v5.1.5 改了什么

以前第一步选方案只是改了界面,后台该跑啥还跑啥。选了方案一,端口接管其实还开着,重启之后还会自己开回来,界面写的和实际跑的对不上。现在点哪个就是哪个,选方案一会把接管和内置 DNS 一起关掉。

收流实现那一栏,以前改完得退出再双击才生效。现在换完直接用新的,不用重启。右上角还加了个「重启」,真要重开点一下就行,3 秒自己回来。

那段「开播前先关掉加速器」也改了。之前三个方案都显示,其实只有方案二需要,有用户照着关掉之后反而开不了播。现在只在方案二出现。

Mac 那边把方案三的规则理了一遍,去掉一条会把自己连自己掐断的,没别的改动。

v5.1.4a 改了什么

加了 Mac 版,Apple 芯片的机器能直接跑了,dmg 拖进「应用程序」就行。界面跟 Windows 一样,三种方案都能用。

Mac 上收流没法用 rtmf,也没法塞 nginx,换成 MediaMTX,一个单文件的小服务,转给 ffmpeg 再接 B 站。

顺手把几处文案捋了一遍。有些话说得含糊,改成了人话。

v5.1.4 改了什么

自动更新以前其实一直没跑通过。检查更新那步报了个不起眼的错,被静默跳过了,所以界面右侧永远看不到「可更新」。下载那里是同一个毛病,就算检查出来了也下不动。这两处一起修了。

顺带修了代理。界面里填的 Twitch 代理,以前只写进配置文件,实际请求时根本没读,填了等于白填。现在真用上了。

容器镜像这次加了 arm64,树莓派和 ARM 的 NAS 也能跑。

v5.1.3 改了什么

修个小毛病。日志里老蹦「接口异常:404 Not Found」,其实不是出错——浏览器请求了个不存在的路径 (旧缓存里的页面资源之类),本该回个 404 就算了,结果被当成程序异常记下来,状态码也变成 500。

现在 404 就老老实实是 404,不往错误日志里写了。想看是哪个地址,开调试日志能看到。

v5.1.2 改了什么

两个真实用户的故障排查,重点在让问题能被看见。

这一版去掉了画面叠加(以及配套的本地画面预览)。原因见下面的「已知限制」, 需要在画面上打字的用户请在上游完成 —— OBS「文本(GDI+)」源,或者 B 站直播姬的文本挂件。

修掉的

  • 拉流地址给错了:本地取流给的是 rtmp://…,但 rtmf 只收不播,OBS 拉过去报 Already publishing。现在给 HTTP-FLV(http://127.0.0.1:8098/live/stream.flv),实测能拉。
  • 推流途中点「推 B 站」没反应:只写了配置,没有重新接管正在进行的推流,状态一直停在 本地取流。现在点开 3 秒内开播。
  • 8098 只绑 127.0.0.1:另一台机器上的 OBS 拉不到。改成 0.0.0.0。
  • 容器版开叠加必失败:ffmpeg 的输入地址拿 nginx 的 stat 端口拼 /live/stream.flv, 那个地址不存在。现在按收流实现分别处理。

其余

  • 端口检测改用 IP Helper API。以前解析 netstat 输出,装在机器上的安全软件会把 LISTENING 整行过滤掉,于是 5000/1935/6667 全报「没监听」,把排查带偏两轮。
  • 启动默认落在「系统自检」页:网络环境是不是家用路由器、PS5 和这台机器在不在一个网段、 管理员权限够不够、收流和编码进程在不在、防火墙放没放行、装没装安全软件,一屏看完。
  • 自检结论跟着你选的方案走。选方案一说方案一的话,不再一句「看起来正常」包打天下。
  • 顺手认一下路由器型号:后台能打开就取标题,告诉你它支不支持自定义 hosts。
  • 修了方案三下「PS5 流量」恒为「还没收到」(加速器会改写源地址)、推流时长显示成 58888、 以及「转发在跑」误判成「推流正常」。
  • 启动只开默认浏览器,不再另开 Edge 独立窗口(那个窗口在管理员 + 杀软环境下会秒退,拖垮整个程序)。
  • 界面去掉影响性能的毛玻璃和光效。
  • 容器版补齐差异:端口占用者改读 /proc(精简镜像没有 lsof)、自检页按平台分组、 不再提示「换一种收流实现」(容器只有 nginx)。

v5.1.0 新增了什么

这一版主要是把稳定性问题挖到底,顺带补了几个页面。

修掉的崩溃

  • 画面断断续续、ffmpeg 反复退出(0xC0000005 / 0xC0000374)——根因是同时开两路硬件编码, 核显扛不住。现在推 B 站强制单路。
  • 电脑忙的时候整个程序卡住 —— 弹幕历史每条都往磁盘同步,把事件循环堵死了。
  • 日志写入同样会卡 —— 现在日志走后台线程批量落盘。

功能

  • 诊断面板:本机 / PS5 / B 站三侧状态 + 端口全景 + 一键导出诊断包
  • 常见问题排查:12 条排查手册,程序内直接看
  • 支持作者页
  • 顶栏精简、第 1~5 步文案全面校对

已知限制

  • 画面叠加已移除。因为性能问题去掉了画面叠加部分。如需这部分功能,请在 OBS 或直播姬内完成。
  • 弹幕不烧进画面(这一版之前就不烧了,观众在 B 站播放器里照常能看)。

v5.0.1 新增了什么

这一版加的都是「出问题能看见现场」的东西,不再靠猜。

诊断面板。 第 2 步下面多一块,本机和 Twitch 两栏并排:收流端口、弹幕端口、内置 DNS、443 中继、防火墙规则数、当前推流会话、直播阶段,对面是频道是否在播、上次直播时间、有没有历史录像、查询走的哪个代理。哪一环断了直接看出来。

PS5 连接嗅探。 抓 30 秒,看 PS5 到底往哪些端口发连接。Twitch 推流除了 1935,还有 2805-2899 一段备用端口;它要是连了备用端口又没连本机,推流就进不来,而界面上完全看不出来。抓包是只读的,包原样放回去,不拦不改。

诊断包。 一键打成 zip:脱敏后的配置(代理只留网段、凭据打码)、最近日志、nginx 的 error.log、全端口快照、Twitch 状态。用户出问题直接发这个包,不用再让他复述现象。

代理栏可以留空。 留空不等于没有代理 —— 程序会自己扫本机有没有 Clash / mihomo(7890、7897、7891、7892、10809、10808、2080、8080),探到就用,探不到才报错。两个代理输入框旁边都加了「检测」按钮:留空时测直连并扫本机,填了只测填的那一条,结果直接说人话(「直连到不了,但本机有现成的代理能用,留空会自动走它」)。

增量更新。 以前每次都得下 52MB,国内还经常下不动 —— 实测直连 release 的下载域名,20 秒拿不到响应头。现在发布侧多传两个东西:一个 manifest(每个文件的 sha256)和一个 300KB 的界面包。只有界面文件变了就下 300KB,动了 exe 才下全量。下载本身也改了:直连优先,失败依次换配置里的代理、本机代理、系统代理;支持断点续传;下完校验 sha256(以前只比大小,半截包也能过)。

更新失败能回滚。 老脚本是「先删旧文件、再拷新的」,拷到一半失败程序就废了。现在每一步都 catch,失败从备份整体还原,并在桌面留一份「更新失败.txt」说明发生了什么。

调试日志开关。 日志面板多了个「调试」按钮。打开后中继每次建连、嗅探抓到的每个包、每次 Twitch 查询都记下来;关着的时候一行都不写 —— 这些东西一直在记的话一天能写几十兆。诊断包里也标了这份日志是不是在调试模式下采的。

容器版同步。 上面除了端口嗅探(容器里没有 WinDivert,界面自动隐藏),其余容器版全有。

v5.0 都改了什么

这一版改动比版本号看起来大,直接说了。

收流端换回 nginx-rtmp。 中间试过用 ffmpeg -listen 1 自己收流,行不通:它只接受一个连接,PS5 占住 1935 之后转发端拉不到流。想在同一个进程上再加转发目标,PS5 会被踢掉,而且不会自动重连。所以老老实实回到 nginx + 二次拉流,relay 仍然是 -c copy,字节级透传,画质跟源码流一模一样。

修掉几个躺了很久的 bug。 都是真机才会炸、代码看着没问题的:

  • 转发线程里调了 Thread.cancel() —— threading.Thread 没这个方法。第一次开播正常,停播后再开播必炸。
  • 清理顺序写反了:先清空 live["bili"] 再去取里面的 channel,关播永远用错通道。
  • 判断「PS5 在推流」用的是 frame > 0,而 -c copy 不解码,frame 恒为 0 —— 永远认为没推流,不自动开播。改成看 out_time_ms 有没有增长。
  • 开播、人脸验证那几个循环没有异常保护,网络一抖线程就静默死掉,状态永远卡在「正在开播」。

中继(443)踩了两个坑。 内置 DNS 这条路要把 HTTPS 也接住,所以写了个 TCP 中继。第一版 join(timeout=30),Twitch 的状态同步连接一到 30 秒就被掐断,应用报「无法直播」;第二版读 ClientHello 只 recv(4096) 一次,碰上分段发送就解析不出 SNI,然后默认猜成 api.twitch.tv —— 猜错就把 ingest 的流量送到 api 的服务器上,PS5 那边报 SSL_ERROR_SYSCALL。现在按 TLS 记录头长度读完整条,SNI 读不出就明确报错,不猜。

api.twitch.tv 必须一起劫持。 之前只劫推流域名,PS5 拿公网 IP 去连,被墙,Twitch 打不开。加上 twitch.tv 后缀之后才通。

B 站域名绝对不能进 hosts。 这套劫持是给 PS5 找推流地址用的,PS5 只推 Twitch;往 B 站推的是本机 ffmpeg,走系统 DNS。把 bilivideo.com 写进路由器 hosts,本机 ffmpeg 解析它就会得到自己,于是「推流给自己」,报 I/O error,直播永远起不来。这一版在生成 hosts 时直接过滤掉,代码里也不留。

界面重做成三选一。 老版本把「改路由器」「开接管」一股脑摊在一页,字多到劝退。现在第一步就问你在哪种情况,点哪个只展开哪块,第 2 步、第 3 步的检测标准和填法也跟着分支走 —— 走 hosts 的人不该被要求填那四个数,走接管的也不该被问 DNS。

顺手加了些实用的东西。 日志带毫秒(开播链路几秒内十几条,只到秒分不清先后)、左栏能看画质(分辨率/帧率/码率)、DNS 查询全量落盘(内存里那几条环形缓冲一冲就没了,排查“某个域名到底有没有来查”根本不够用)。

还留着的坑:

  • PS5 重启后 DNS 设置会丢。走内置 DNS 的用户每次都要去 PS5 重设一遍,这件事没解 —— 要做就得让程序自动发现 PS5 并指导它,那是另一摊。
  • 中继是 Python 每连接两个线程,Twitch 应用连接一多就有压力。目前够用,没到要改的时候。
  • 地区节点列表是硬编码的 20 个。Twitch 哪天加了新节点,得手动补。

桌面版

Windows

下载 zip,解压,双击 PS5LiveBridge.exe。

第一次启动会要管理员权限(要绑 53、1935、6667,还要动防火墙),点「是」。

启动后右下角会出现一个图标,程序在那儿待着。关掉网页不会退出,要退出或者设开机自启,右键那个图标。

数据都在程序同目录(config.json、logs/、data/),整个文件夹拷走就能换机器,删掉就是卸载。

Mac

下载 dmg,双击,把 PS5LiveBridge 拖进「应用程序」。

按芯片选对包,两个版本不通用:

机器 下哪个
Apple 芯片(M1 / M2 / M3 / M4) PS5LiveBridge-x.y.z-macOS-arm64.dmg
Intel 芯片 PS5LiveBridge-x.y.z-macOS-x86_64.dmg

选错了打不开或者开了就闪退。不确定的话点左上角苹果图标 →「关于本机」,看「芯片」那一行写的是 Apple 还是 Intel。

没做公证签名,第一次打开会被系统拦。去「系统设置 → 隐私与安全性」,页面往下拉,点「仍要打开」,之后就不再问了。命令行的一步到位办法:

xattr -dr com.apple.quarantine /Applications/PS5LiveBridge.app

配置不在程序包里,在 ~/Library/Application Support/PS5LiveBridge。重装程序不会丢配置,想彻底清干净就删这个目录。

界面默认开在 http://127.0.0.1:5000。要是 5000 被别的程序占了(macOS 的隔空播放接收器常年霸着它),程序会自动往后找第一个能用的端口,启动日志里能看到实际地址。

容器版

现成镜像在两个地方都有,内容一样,挑一个拉得动的:

来源 地址
Docker Hub icenoproblem/ps5livebridge
GHCR ghcr.io/icenoproblem/ps5livebridge
docker pull icenoproblem/ps5livebridge:latest

docker run -d --name ps5-live-bridge \
  --network host \
  -v /your/data:/data \
  -e PS5LB_DATA_DIR=/data \
  --restart unless-stopped \
  icenoproblem/ps5livebridge:latest

latest 跟着主分支走,5.1.2 这种固定版本号不会变。镜像约 300MB(压缩后)。

想自己构建(改代码调试时):

git clone https://github.com/IceNoproblem/PS5LiveBridge.git
cd PS5LiveBridge
docker build -t ps5livebridge .

--network host 是必须的:它要直接占 1935 / 6667 / 53,走 bridge 网络这些端口出不去。

容器版只有「加速器在路由器上 + 改路由器 hosts」这一条路,因为它动不了宿主机的网络栈。

一些数字

实测 1080p60 / 6.1 Mbps:

组件 CPU
ffmpeg(copy + FLV 封装 + 推 B 站) 2.3%
nginx-rtmp(收流) ~1.5%
Python(Flask + 监控 + 弹幕) ~1.7%
合计 5.5%,内存 67 MB

常见问题

开播了,B 站显示直播中,但没画面。 先看左侧「画质」有没有值。没有就是推流没进来 —— 大概率是 PS5 连的地区节点没在 hosts 里。用 nslookup 查一下它连的哪个,补进去。

Twitch 打不开。 内置 DNS 那条路上,检查第 4 步或第 1 步的代理填了没、通不通。443 转发不出去,Twitch 就是打不开。

提示「其他设备正在播放」。 上一次的收流进程没退干净,还占着推流位置。去第 5 步点一下「修复收流」,它会清掉残留再重开收流端,一般点一次就好。还不行点右上角「重启」。

PS5 和电脑连的是手机热点,开播就报「其他设备正在播放」,程序里也一直看不到 PS5。 手机热点的客户端之间是隔离的,PS5 连不到这台电脑。用网线把 PS5 和电脑直连,或者两个都接到同一个路由器上。

PS5 上的 Twitch 字幕、聊天室不显示。 正常。弹幕是走 Twitch 的 IRC 通道送回去的,PS5 那边看到的是它自己的聊天室,不是 B 站的。

许可

MIT。


鸣谢 PSLinkB dns相关灵感

鸣谢 rtmp-forwarder 收流服务

探索相关项目