大家好,我是何三,独立开发者
不知道你有没有过这种经历——和异地的朋友约好了晚上一起看部电影,结果各自点开播放器,喊"321 开始",然后不到五分钟就开始各看各的了。
有人卡了,有人暂停接了个电话,有人偷偷快进了。
要是能有一个工具,你暂停,他也暂停;你播放,他也播放——而且不是靠自觉,是强制同步。听起来是不是有点意思?
这就是我今天想聊的项目——pion/rtwatch,一个用 Go + WebRTC 实现的实时同步观影工具。GitHub 上 443 个 Star(近 500),但这数字不重要,重要的是它的设计思路。
这个东西,怎么说呢,就是……就是那种"服务端说了算"的玩法。
它的思路跟别人完全不一样
市面上大部分"一起看"的工具,无非是走 WebSocket 或信令服务器做事件同步:A 暂停了,发个消息给 B,B 也暂停。看着没毛病,对吧?但这里面有个问题——统一不了。
有人网络延迟大一点,有人点了暂停又取消,有人直接本地快进。最终结果就是谁也管不了谁。
rtwatch 的思路很简单粗暴:视频在服务端解码,服务端控制一切播放行为,客户端只收当前帧。
说白了,你看到的画面,就是服务端此刻正在播放的那一帧。你根本拿不到完整的视频文件,也快进不了,也倒退不了。你只能看。
这个设计我真的吹爆。因为它在解决"同步"问题的同时,顺带解决了一个很多人没意识到的痛点——视频版权保护。
如果你在做一个付费视频平台,或者只是不想让朋友把整部电影下载走,那这个方案就很妙了。客户端永远是哑终端,只有眼睛,没有手。
没懂这个设计有多硬核?这么说吧,传统"一起看"是"大家约好一起走,谁跑快了喊一声";rtwatch 是"大家坐一辆车,司机踩油门就全走,踩刹车全停"。

上手体验:简单到离谱
部署这玩意儿出乎意料地简单。项目提供了两种方式。
方式一:Docker 一键部署
git clone https://github.com/pion/rtwatch.git
cd rtwatch
docker build . -t rtcwatch
docker run --net=host -it rtcwatch
注意,这里用了 --net=host,在 Linux 上直接就能跑。macOS 默认不支持 host 网络模式,得用 Docker Desktop 端口转发。
方式二:Go 直接编译
先装 GStreamer(Ubuntu 下就一行命令的事):
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly
然后编译运行:
git clone https://github.com/pion/rtwatch.git
cd rtwatch
go build .
./rtwatch -container-path=/home/yourname/video.mp4
打开浏览器访问 http://localhost:8080,点播放,所有标签页同步。
它还支持直接传 URL 播放在线视频:
./rtwatch -container-path='https://example.com/big_buck_bunny.mp4'
说实话,我当时以为要配什么 WebRTC 信令服务器、STUN/TURN 啥的,结果什么都没配,编译完直接跑起来了。
原理大概是这样,细节可能有出入——有懂的大佬欢迎指正。
聊聊这个项目的背景
rtwatch 是基于 Pion 这个项目做的。Pion 是 Go 语言生态里最成熟的 WebRTC 实现,纯 Go 写的,不需要任何 CGO 依赖。
为什么这很重要?因为 WebRTC 这玩意儿,原本是浏览器里的技术。你要在服务端用,以前只能装 Node.js 用 wrapper,或者直接用 C++ 的 libwebrtc。Pion 用纯 Go 实现了一套完整的 WebRTC 协议栈,从 2018 年发展到现在,已经有不少生产环境在用。
让我跑个题——Pion 这个项目本身也很有意思。它的创始人 Sean DuBois 之前是做电信行业的,后来发现 WebRTC 的服务器端实现被大公司垄断(Google、Amazon 都有自己的方案),独立开发者几乎没法用。于是他用 Go 从零写了一套。
我当时翻到这段背景的时候,说实话有点佩服。用 Go 手撕 WebRTC 协议栈,这种工作量……自己意会吧。
回到 rtwatch,它用 Pion 做 WebRTC 传输,用 GStreamer 做视频解码——GStreamer 是 Linux 下最老牌的流媒体处理框架,几乎能解码一切格式。这两个组合在一起,就是一个轻量但完整的流媒体服务器。
适合谁用?
说实话,这个工具不是给所有人准备的。
如果你符合下面任意一条,可以花 5 分钟试试:
- 异地恋 / 异地朋友:每周约好看电影,不用再数 321
- 付费视频平台:想做防盗链、防下载的流媒体服务
- 技术宅:自己想搭一个私有的同步观影服务器
- WebRTC 学习者:这是个很好的实战案例,代码量不大(整个项目才 93 个 commit),结构清晰
如果你对这类工具有兴趣,我此前还整理过《2025 年 Github 高性能神器排行榜》,关注后回复「工具」获取。
最后
rtwatch 不是什么大项目,443 个 Star,93 个 commit,算不上"Docker 镜像下载量千万"那种明星项目。但我觉得有意思的点在于——它用了一个很多人没想到的思路,解决了一个看似已经被解决过的问题。
如果你也需要和朋友异地同步看片,花 5 分钟部署一下,体验一下"服务端说了算"的感觉。
GitHub 地址:https://github.com/pion/rtwatch
本文使用 MGO 编辑并发布
关注"何三笔记",回复"mgo" 免费下载使用