Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SiuTogether

SiuTogether

和朋友异地同步看球,不怕剧透

你看 A 平台、TA 看 B 平台,延迟差几秒到几十秒? SiuTogether 识别画面里的比赛大钟,让领先的一方自动降速——欢呼永远同一刻响起。

下载 官网 License: MIT

SiuTogether 截图:内置浏览器 + 新手引导 + 房间侧栏

它解决什么问题

和朋友线上一起看同一场比赛,但各自用不同的直播源(不同平台、不同主播):各家延迟不一样,进球了,领先的人先喊出来——剧透了。

现有 watch-party 工具(Teleparty、Metastream、SyncWatch 等)都基于同一个前提:所有人看同一个视频流,靠广播 currentTime 同步。它们解决不了"两个独立直播流"的场景,因为不同流的播放时间戳互不相通。

SiuTogether 同步的不是"播放进度",而是"比赛进度"。

现有 watch-party 工具 SiuTogether
同步对象 播放进度(同一流的 currentTime) 比赛进度(跨流的比赛大钟)
适用场景 大家看同一个视频/流 各看各的平台,同一场比赛
对齐信号 共享的 currentTime OCR 识别的比赛计时器
体育直播 多数明确不支持严格延迟直播 正是核心场景

工作原理

不同平台播同一场比赛,唯一可靠的公共锚点是画面里的比赛计时器(足球角落的 67:23、篮球的节倒计时)。

  1. 每人打开自己的直播源,框选画面里的比赛大钟
  2. OCR 锁定读数后转为本地走表(亚秒级相位,之后不依赖持续识别)
  3. 各自把"我的比赛时间"上报到房间,算出谁领先、领先多少
  4. 只对领先者下手:连续控制律 rate = 1 − lead/T 平滑降速,直到追平;领先太多则冻屏 + 静音防剧透

关键约束:直播流看不到未来,永远只能让领先者变慢,不能让落后者快进

降速在任意站点生效的三件套:跨域 iframe 逐帧注入 + 速率复读(对抗播放器复位)+ currentTime 原型锁(吞掉直播追帧,攒出的落后不会被吃回去)。

手动放慢(不开 OCR 也能用)

知道自己大概快了几秒?侧栏「🐢 手动放慢」输入秒数、点一下:半速播放攒出指定延迟后自动恢复 1×,进行中可随时点击提前恢复。与房间、校准完全独立——朋友在微信里喊一句"你快了 10 秒",输 10 点一下就对齐了。攒出的延迟同样由进度锁守住,不会被直播追帧吃回去。

快速开始

  1. 下载安装包(Windows;SmartScreen 提示时点「更多信息 → 仍要运行」)
  2. 打开一场比赛直播 → 框选比赛计时器 → 开始 OCR 并确认时间
  3. 和朋友约一个 6 位房间码,各自加入
  4. 领先的一方点「校准」,几秒后同步

软件内置同样的五步新手引导,跟着走即可。

English

SiuTogether lets friends watch the same live sports match from different streaming sources, perfectly in sync — no more spoilers from whoever's stream runs ahead.

Unlike watch-party tools that broadcast a shared currentTime (and therefore require everyone to watch the same stream), SiuTogether syncs on the only anchor that exists across independent streams: the game clock on screen. Each client OCRs its own match timer, reports game time to a room, and the leading side smoothly slows its player (rate = 1 − lead/T) until everyone is aligned. It never seeks forward — live streams have no future to seek to. Excessive leads trigger a spoiler-proof freeze + mute.

There's also a standalone one-click manual slowdown: type how many seconds you want to fall behind and the player runs at half speed until exactly that delay is banked (seek-locked so live-edge chasing can't eat it back) — no OCR, no room required.

Under the hood: Electron + Tesseract.js OCR with a lock-confirm-deadreckon state machine, a dumb WebSocket relay, and a three-part slowdown kit (per-frame injection across cross-origin iframes, rate re-assertion against player resets, and a currentTime prototype lock that defeats live-edge chasing).

Download for Windows · MIT licensed

开发

cd app
npm install
npm start        # 开发模式
npm test         # 单元测试(走表/控制律)
npm run dist:win # 打 Windows 安装包到 app/dist/
  • app/ — Electron 桌面应用(主进程逐帧注入、OCR、走表、房间客户端)
  • server/ — WebSocket 信令服务器(哑中继,按房间广播成员状态)
  • slowdown-lab/ — 独立降速实验台(逐站验证三件套用)
  • docs/ — 官网(GitHub Pages)

License

MIT

About

和朋友异地同步看球,不怕剧透:OCR 识别比赛大钟,领先方自动降速对齐。Watch sports together in sync, spoiler-free.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages