IceNoproblem/PS5LiveBridge
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 的原生直播画面转到 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 收流服务



