开放协议 · 无需网络 · 网页、iPhone、Android、桌面
把文件变成
流动的光
发送端把文件播放成彩色动态码,接收端用相机拍下来还原文件。不需要网络、蓝牙、配对或账号。
网页版免费。iPhone 与 Android 应用 US$2.99,即将上架。
光敏提示:发送时码会以每秒最多 60 次闪烁变色,对闪光敏感(如光敏性癫痫)的人请勿注视。

- 无需网络
- 无需配对和账号
- 文件不经过服务器
- 协议 1.0 已冻结
- MIT 许可证
原理
数据只从屏幕单向传到相机,所以接收端随时可以开始,漏掉一些帧也没关系。
- holiday-photos.zip你的文件
- 喷泉码不断生成新数据包
- 彩色帧每秒 12–60 帧
- 相机顺序随意,丢帧无妨
- holiday-photos.zip逐字节校验
- 1
打开发送
在有文件的设备上选择文件或输入文字,屏幕开始播放码,大小按屏幕自动调整。
- 2
对准相机
在另一台设备上打开接收,用相机对准屏幕。四个角看到三个就够了。
- 3
保持稳定
每一帧都是新数据,漏掉或拍糊一帧只会让传输稍慢一点。
- 4
保存
接收端校验整个文件后打开:文字和图片直接阅读,其他文件可以保存或打开。
每一帧装更多数据
用法和动态二维码一样,但每帧装的数据更多:
| 动态二维码(v25) | Lumen Code 1.0 | |
|---|---|---|
| 每格比特数 | 1 | 2(4 色)或 3(8 色) |
| 形状 | 正方形 | 铺满屏幕,横竖皆可 |
| 每帧数据,手机屏幕 | 约 1.2 KB | 约 2.2 KB / 约 3.4 KB |
| 每帧数据,13 英寸笔记本 | 约 1.2 KB | 约 6.9 KB / 约 10.3 KB |
| 漏掉一帧 | 等它循环回来 | 不用等:每帧都是新数据 |
| 一个角反光 | 整帧作废 | 靠另外三个角照样读出 |
每秒 12 帧时,笔记本屏幕的原始容量约 80–125 KB/s。实测最快的一次是两台手机之间用应用传输,达到 96 KB/s。实际速度取决于接收端相机,接收页面会实时显示各项数据。
为实际拍摄条件设计
手持拍摄、反光、普通镜头、小屏幕都能用。
-
自适应密度
格子大小按屏幕的物理尺寸选择:小屏手机也能稳定识别,笔记本屏幕能多装好几倍。
-
喷泉码
每一帧都是新数据。丢帧、拍糊、乱序都不要紧,收够了文件就完整了。
-
三个角就够
四角各有定位标记,再加一套对齐点阵,一个角被反光或手指挡住时整帧照样能解码。
-
多色编码与纠错
每格 2 或 3 bit,每个码字 Reed–Solomon 纠错,每个数据包和整个文件都有校验。
-
双引擎,帧逐位一致
JavaScript 与 Rust/WebAssembly 两套实现生成逐位相同的帧,接收途中切换引擎也不丢进度。
-
实时仪表盘
扫描时显示速度、格子大小、成功率和捕获率,哪里限制了速度就给出提示。
浏览器里用,或者装个应用
各版本用同一套协议,浏览器可以发给手机应用,反过来也行。
-
网页
任何带相机的现代浏览器
无需安装。手机和电脑都能收发文件和文字。
-
iPhone
iOS 17 及以上
直接读取相机画面,发送端够快时把相机切到每秒 60–240 帧;120 Hz 播放,带触感反馈。
-
Android
Android 10 及以上
最高每秒 60 帧采集,由应用自己控制曝光;手机发热时自动少扫一些。
-
桌面
macOS、Windows、Linux
用大屏幕发送,或用摄像头接收。macOS 版经过签名和苹果公证。
应用通常比浏览器快:它们直接读取相机画面,能用更高的帧率。
开放协议,1.0 已冻结
规范公开,任何人都可以实现。
已冻结
1.0 是最终版本,线格式不会再变,所以任何 1.0 接收端都能读任何 1.0 发送端。
两个参考实现
JavaScript 与 Rust 通过同一套一致性测试向量,在数万个随机和损坏的输入上做出完全相同的判断。
集成进你的应用
不需要安装任何包:让你的编程 agent 读这个仓库即可。指南覆盖网页、Rust,以及通过 C ABI 接入的其他语言。
开源
协议、两个实现和所有应用,都以 MIT 许可证发布。
网页免费,应用 US$2.99
网页版和商店版应用收发的是同样的文件,应用通常更快。
App Store 与 Google Play
US$2.99 一次性
- iPhone 与 Android 官方签名应用
- 通过商店更新
- 不订阅、不内购、无广告、无需账号
- 用于后续开发
全球统一定价,商店会按你所在地区的货币显示。iPhone 和 Android 需分别购买,这是两家商店的规定。
常见问题
网页版免费,为什么还要买应用?
不买也可以:网页版能收发同样的文件,应用也可以自己免费编译。商店版应用直接读取相机画面、帧率更高、能控制曝光,通常更快、发热更少。购买的钱用于后续开发。
我的文件会经过服务器吗?
不会。网页只从网站加载一次,文件只从发送端屏幕传到接收端相机,不上传任何东西。
文件最大能多大?
每次传输最大 256 MiB。实际限制来自速度:按 50 KB/s 计算,1 MB 约 20 秒,20 MB 约 7 分钟。
需要什么设备?
两台设备:一台有屏幕,一台有相机。手机、平板、电脑都可以,发送和接收都行。在浏览器里,相机需要 HTTPS 网站(或 localhost)。
没有网能用吗?
应用完全不需要网络。网页版需要联网加载页面;传输本身从不使用网络。
闪烁的画面安全吗?
发送时,码会以每秒最多 60 次的频率变色。对闪光敏感的人(例如光敏性癫痫患者)请不要注视。
能用到我自己的应用里吗?
可以。协议开放且已冻结,代码采用 MIT 许可证。网页用 src/core,原生代码用 Rust crate,其他语言用 C ABI;开发者指南和一致性测试向量会告诉你怎么做。
为什么不用隔空投送或数据线?
能用就用它们。Lumen Code 适合用不了的场合:不同品牌的设备、没有共同的网络、受管控或物理隔离的电脑,或者一块只能看的屏幕。
用手边的两台设备试试。
一台打开发送,一台打开接收。无需安装。