{"id":24803887,"url":"https://github.com/kev1nweng/reel-sync","last_synced_at":"2025-10-13T05:31:03.058Z","repository":{"id":273641742,"uuid":"915178542","full_name":"kev1nweng/reel-sync","owner":"kev1nweng","description":"ReelSync - 随时随地和另一个人同时观看一个视频 | Watch videos with someone in sync, anytime, anywhere. ","archived":false,"fork":false,"pushed_at":"2025-01-29T11:31:47.000Z","size":95,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-29T12:29:30.206Z","etag":null,"topics":["javascript","peerjs","vite","vue","vuejs","webrtc"],"latest_commit_sha":null,"homepage":"https://reel-sync.kev1nweng.space","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kev1nweng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-11T06:59:31.000Z","updated_at":"2025-01-29T11:31:50.000Z","dependencies_parsed_at":"2025-01-22T05:35:36.553Z","dependency_job_id":null,"html_url":"https://github.com/kev1nweng/reel-sync","commit_stats":null,"previous_names":["kev1nweng/reel-sync"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kev1nweng%2Freel-sync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kev1nweng%2Freel-sync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kev1nweng%2Freel-sync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kev1nweng%2Freel-sync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kev1nweng","download_url":"https://codeload.github.com/kev1nweng/reel-sync/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":236304098,"owners_count":19127438,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javascript","peerjs","vite","vue","vuejs","webrtc"],"created_at":"2025-01-30T06:13:45.481Z","updated_at":"2025-10-13T05:31:03.053Z","avatar_url":"https://github.com/kev1nweng.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ReelSync\n\n**简体中文 / [English](README.en.md)**\n\n![HTML5](https://img.shields.io/badge/html5-%23E34F26.svg?style=for-the-badge\u0026logo=html5\u0026logoColor=white)\n![Vue.js](https://img.shields.io/badge/vuejs-%2335495e.svg?style=for-the-badge\u0026logo=vuedotjs\u0026logoColor=%234FC08D)\n![Vite](https://img.shields.io/badge/vite-%23646CFF.svg?style=for-the-badge\u0026logo=vite\u0026logoColor=white)\n![JavaScript](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge\u0026logo=javascript\u0026logoColor=%23F7DF1E)\n![Vercel](https://img.shields.io/badge/vercel-%23000000.svg?style=for-the-badge\u0026logo=vercel\u0026logoColor=white)\n\n随时随地与他人同步观看视频或共享屏幕 | Watch videos in sync or share your screen with others anytime, anywhere.\n\n![ReelSync 截图](docs/screenshot.png)\n\n如简介所言，这是一个 **基于现代 Web 技术（如 WebRTC）的** 实时视频流共享工具。\n\n- 在配置了 TURN / STUN 服务器的条件下，她允许用户 **向互联网上任意其他用户分享本地的视频（或在线视频流）**，而无需担心跨平台、跨设备、跨网络的问题。\n- 出于她 **端到端** 的工作原理，用户不需要有任何形式的注册登录行为，视频流数据也不会被存储在服务器上。\n- 在未来，更多特性将会被加入，如 **屏幕共享、实时聊天** 等。\n\n## 部署\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/kev1nweng/reel-sync\u0026env=VITE_NODE_SERVER_URL\u0026env=VITE_MAX_ACCEPTABLE_DELAY_SECONDS\u0026project-name=reel-sync\u0026repository-name=reel-sync)⠀←⠀点击这个按钮部署到 Vercel（推荐），**或者：**\n\n```bash\ngit clone https://github.com/kev1nweng/reel-sync \u0026\u0026 cd reel-sync \u0026\u0026 npm run build \u0026\u0026 npm run preview\n```\n\n## 环境变量\n\n\u003e [!Warning]\n\u003e 同源模式下，视频播放进度同步对网络的要求较高；较高的网络延迟可能导致频繁的强制同步。\n\u003e 若无法保证良好的网络环境，请将最大可接受延迟时间调高一些（至少 1 秒钟）。\n\n- `VITE_NODE_SERVER_URL` - 你的 `iceServer` 服务器列表地址（API 格式参考 Cloudflare Call）\n- `VITE_MAX_ACCEPTABLE_DELAY_SECONDS` - 最大可接受延迟时间（秒）\n- `VITE_LATENCY_MEASUREMENT_INTERVAL_SECONDS` - RTT 延迟测量间隔时间（秒）\n- `VITE_SAME_ORIGIN_SYNC_INTERVAL_SECONDS` - 同源模式下视频进度同步间隔时间（秒）\n\n## 路线图\n\n- [x] 浏览器适配\n  - [x] Mozilla Firefox\n    - [x] 因不支持 `captureStream()` 可接收不可发送的问题\n    - [x] 主页样式错误问题（`padding` 未被正确显示）\n  - [ ] ~~Safari (以及所有利用 Apple Webkit 的浏览器)~~\n    - [ ] ~~因不支持 `captureStream()` 可接收不可发送的问题~~\n\n- [x] 点对点模式\n  - [x] WebRTC 实时视频流传输\n  - [x] 屏幕共享（桌面视频流传输）\n  - [ ] 用户摄像头视频流传输\n\n- [x] 同源模式\n  - [x] WebRTC 播放进度和行为通讯\n  - [x] 端到端播放进度同步\n  - [x] 延迟测量\n  - [x] 考虑网络延迟的播放进度同步\n  - [ ] ~~从节点视频操作请求~~\n\n- [ ] 实时聊天\n  - [ ] WebRTC 文字消息传输\n  - [ ] WebRTC 语音消息传输\n\n- [ ] 用户设置\n  - [ ] 自定义设置 UI\n  - [x] `localStorage API` 配置存储\n\n- [ ] 跨平台应用\n  - [ ] 原生 WebView 安卓应用\n  - [ ] ~~Capacitor iOS 应用~~\n\n- [x] i18n 多语言支持\n  - [x] StartView UI (CN/EN)\n  - [x] StreamView UI (CN/EN)\n  - [x] ~~msg (CN/EN)~~\n  - [x] 手动切换\n\n- [ ] 其他功能\n  - [x] 分享直链\n  - [ ] 自定义背景图\n  - [x] 基于 RTT（往返延迟）的增强同步\n\n## 许可证\n\n该项目在 **GPL-3.0 许可证** 下发布。\n\n\u003e GNU 通用公共许可证第三版（GPL-3.0）是由自由软件基金会（FSF）于2007年发布的自由软件许可证，旨在保障用户运行、研究、共享及修改软件的自由。\n\u003e 其核心条款基于 Copyleft 机制，要求任何使用或分发 GPL-3.0 授权代码的衍生作品必须采用相同许可证公开源码，以防止专有软件对自由软件的限制。\n\u003e 该协议还强化了对数字版权管理（DRM）的技术中立性约束，并提升了与其他开源许可证的兼容性。\n\n有关更多信息，请参阅 [LICENSE](LICENSE) 文件。\n\n## 一行命令开始开发\n\n推荐使用 [VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (禁用 Vetur).\n\n```bash\ngit clone https://github.com/kev1nweng/reel-sync \u0026\u0026 cd reel-sync \u0026\u0026 npm i\n```\n\n## 星标历史记录\n\n[![Star History Chart](https://api.star-history.com/svg?repos=kev1nweng/reel-sync\u0026type=Date)](https://www.star-history.com/#kev1nweng/reel-sync\u0026Date)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkev1nweng%2Freel-sync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkev1nweng%2Freel-sync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkev1nweng%2Freel-sync/lists"}