SyncWatch同步观影

把服务器、房间和媒体掌握在自己手里,让 Windows、Android、macOS 与浏览器中的成员同步看到同一刻。

局域网可直接连接,跨网络可按需启用 Cloudflare Tunnel 或自己的 HTTPS 反向代理。

自己部署账号、设置和媒体保存在你的服务器

多端加入桌面、手机和现代浏览器共享房间状态

同步协作播放、进度、聊天、语音和屏幕共享集中完成

局域网 / 公网先在本地使用,需要时再开放安全访问

从启动服务器到一起播放

不需要先理解全部技术名词。房主完成前三步,其他成员只需要一个地址。

  1. 1

    房主启动

    运行服务器 EXE,或在源码目录执行 npm start

  2. 2

    完成安全设置

    登录默认管理员账号后立即改密码,再创建房间和房间密码。

  3. 3

    分享访问地址

    同一网络分享局域网地址;跨网络时启动临时公网访问或配置 HTTPS。

  4. 4

    成员加入

    成员用客户端或浏览器打开地址,进入房间后由房主统一开始播放。

一次操作,怎样变成所有人的同一画面

服务器保存权威房间状态。客户端提交播放意图,服务端完成认证、更新、持久化与广播;成员端再按服务器时间和网络延迟校正播放器。

阅读完整技术架构
调用链运行演示 Node.js · Express · Socket.IO · FFmpeg
  1. 01 启动核心 Electron、独立 Node 或 Android Service 启动 Express 与 Socket.IO server/index.js
  2. 02 客户端连接 浏览器、桌面端和 WebView 加载同源界面并建立实时连接 HTTP + WebSocket
  3. 03 认证与入房 校验密码哈希、会话、设备策略、协议、房间密码和权限 session / room
  4. 04 处理操作 更新播放状态;上传时使用 FFprobe 分析、FFmpeg 转换 state / media
  5. 05 安全写盘 配置原子替换,媒体与 secrets 分目录保存,单实例写入 SyncWatch同步观影-Data
  6. 06 广播结果 向房间发送版本化状态,客户端按时间与延迟修正画面 room-state / playback-sync
结果:所有成员收到同一份房间状态

播放、暂停、进度、倍速、聊天、通知和共享信令保持一致;媒体文件仍由房主自己的服务器提供。

拖动控制台旋转 360°,滚轮调整深度,方向键微调。动画只展示当前调用关系,不影响阅读。

用什么写的

网页使用原生 HTML、CSS、JavaScript;服务端使用 Node.js、Express、Socket.IO;桌面端使用 Electron;Android 使用 Java、C++ JNI、WebView 与 Node.js Mobile。

调用了什么

fetch 访问 REST API,Socket.IO 传递实时事件,WebRTC 协商语音和屏幕共享;FFprobe/FFmpeg 由服务端子进程调用,cloudflared 只在开启公网访问时运行。

数据怎样流动

文件和备份走 HTTP 流式传输,房间状态走 Socket.IO,媒体播放走 HTTP Range。账号、房间、媒体索引、记录和密钥分别写入本机数据目录。

运行在什么环境

源码服务器需要 Node.js 22+;Windows 完整 EXE 自带 Electron/Node/FFmpeg;Android 完整 APK 内置 Node.js Mobile;Docker 使用 Node.js 24 Linux 镜像。

先看真实界面,再决定是否下载

点击任意截图可放大查看。这里展示的是实际软件界面,不是重新绘制的概念图。

一个房间里不只是一块播放器

房主控制共同状态,成员保留自己的设备音量和必要的本地选择。

同步播放
播放、暂停、进度、倍速和可选音量同步,客户端自动校正明显偏差。
媒体与字幕
本地上传、字幕、播放队列、缩略图和浏览器兼容格式转换。
实时沟通
公聊、私聊、弹幕、表情、图片、语音消息、全麦语音和全屏公告。
共享与协作
桌面或手机屏幕共享、网页共享,以及受支持桌面端的电脑音源共享。
账号与权限
好友、在线状态、权限组、注册审批、设备管理、封禁与操作记录。
服务器运维
数据导入导出、备份恢复、邮件验证、日志、网络诊断和可选 AI 中转。

管理中心:每个模块都能找到下一步

下面按真实管理任务拆开说明。先看模块用途,再按“打开入口 → 修改字段 → 保存 → 验证结果”的顺序操作;需要完整按钮清单时打开管理中心详细教程。

房间与上传模块的房间基础设置
房间与上传

房间与上传

新建房间、设置人数和密码,上传影片或字幕,审核文件后加入队列。操作示例:选择影片后点击“加入队列”,再由房主点击“开始播放”。

查看独立教程
全部房间模块的房间总览
全部房间

全部房间

查看正式房和临时房,点击“进入”切换房间,“置顶”方便下次查找;只有房主或管理员能编辑、删除房间。

查看独立教程
成员与权限组模块的成员权限设置
成员与权限组

成员与权限组

按成员查看设备和在线状态,使用“授予控制权”“收回控制权”“踢出”“封禁”管理风险,再保存权限组。

查看独立教程
聊天与记录模块的聊天管理中心
聊天与记录

聊天与记录

切换公聊、私聊、弹幕和语音记录,按时间筛选并删除单条消息;清空前先导出需要保留的记录。

查看独立教程
账户与注册模块的账户管理页面
账户与注册

账户与注册

审批注册、修改显示名、重置密码、撤销登录会话,并设置邮箱验证和注册公告。敏感操作都会写入记录。

查看独立教程
用户申请中心模块的待处理申请
用户申请中心

用户申请中心

集中处理注册、入房、权限和好友申请。打开详情核对目标房间后点击“同意”或“拒绝”,必要时填写处理原因。

查看独立教程
账户权限等级模块的等级列表
账户权限等级

账户权限等级

设置等级名称、经验范围、上传额度、房间额度和功能开关。调整等级后用普通测试账号重新登录验证。

查看独立教程
通知与通告设置模块的通知偏好
通知 / 通告设置

通知 / 通告设置

编辑登录公告、房间公告和全屏通告,设置范围、字号、颜色和停留时间,先预览再发送,必要时撤回。

查看独立教程
邮件设置模块的 SMTP 配置
邮件设置

邮件设置

填写 SMTP 地址、端口、加密方式和应用专用密码,保存后发送测试邮件;授权码不会在页面明文显示。

查看独立教程
日志中心管理模块的服务器日志
日志中心管理

日志中心管理

按时间和类型查看登录、权限、媒体、隧道异常;导出前先删除令牌、IP、邮箱和真实姓名。

查看独立教程
服务器设置模块的公网隧道配置
服务器设置

服务器设置

管理端口、局域网、公网 Tunnel、数据导入导出和网络诊断。公网地址出现后只发送给可信成员。

查看独立教程
完整教程

需要从启动到每个按钮的逐步说明,请阅读 管理中心完整图文教程;需要查看错误处理和使用技巧,请阅读 常见错误技巧与优势

数据目录到底保存什么

SyncWatch同步观影-Data/ 是这台服务器的运行数据,不是源码。迁移时应停止服务器并完整复制。

路径作用备份建议
config.json账号、房间、权限、设置和媒体索引必须备份,不要手工编辑
uploads/上传的影片、音频、字幕、图片和文档必须与索引一起备份
.secrets/secrets/邮件密钥和管理员验证材料绝不能公开,随数据一起备份
compatible-media/自动生成的浏览器兼容媒体可以重建,空间不足时可在停机后清理
logs/crash-dumps/运行和异常诊断信息提交 Issue 前先脱敏

只复制 config.json 会造成记录、文件或密钥不完整。软件内的“全部数据与配置”导出适合日常备份。

从源码启动:先打开终端,再逐条输入

Windows 在开始菜单搜索“PowerShell”或“终端”;macOS 打开“访达 → 应用程序 → 实用工具 → 终端”。普通使用者应优先下载已经构建的文件。

PowerShell / Terminal
cd $HOME\Desktop
git clone https://github.com/xuange6610/SyncWatch.git
cd SyncWatch
npm ci
npm start

下载时先认清文件用途

仓库自动生成的 Source code ZIP 是源码,不等于完整安装包。可直接使用的文件以 Releases 中真实存在的资产为准。

  • Experience 体验版Windows 成员客户端,只连接已有服务器。
  • Standard 标准版Windows 绿色便携服务器,内置运行环境与 cloudflared。
  • Full Installer 完整版Windows 安装向导、快捷方式、卸载入口和完整服务器运行时。
  • 源码与独立服务端需要 Node.js,适合开发、审查或长期部署。
  • macOSIntel 为 x64,Apple Silicon 为 arm64;现代 macOS 不支持 32 位应用。

这里是展示站,不是在线服务器

GitHub Pages 仅提供静态展示、截图、说明和下载入口,不能运行 Node.js、WebSocket、文件上传、AI 中转或临时公网访问。要体验完整功能,请下载服务器版或按部署教程启动自己的实例。

查看服务器部署教程

联系方式

请使用对应应用扫描二维码。