开放协议 · 无需网络 · 网页、iPhone、Android、桌面

把文件变成
流动的光

发送端把文件播放成彩色动态码,接收端用相机拍下来还原文件。不需要网络、蓝牙、配对或账号。

网页版免费。iPhone 与 Android 应用 US$2.99,即将上架。

光敏提示:发送时码会以每秒最多 60 次闪烁变色,对闪光敏感(如光敏性癫痫)的人请勿注视。

一帧真实的 Lumen 码(静止画面)。发送时,这样的帧每秒变化 12–60 次。
手机正在接收文件
  • 无需网络
  • 无需配对和账号
  • 文件不经过服务器
  • 协议 1.0 已冻结
  • MIT 许可证

原理

数据只从屏幕单向传到相机,所以接收端随时可以开始,漏掉一些帧也没关系。

  1. holiday-photos.zip你的文件
  2. 喷泉码不断生成新数据包
  3. 彩色帧每秒 12–60 帧
  4. 相机顺序随意,丢帧无妨
  5. holiday-photos.zip逐字节校验
  1. 1

    打开发送

    在有文件的设备上选择文件或输入文字,屏幕开始播放码,大小按屏幕自动调整。

  2. 2

    对准相机

    在另一台设备上打开接收,用相机对准屏幕。四个角看到三个就够了。

  3. 3

    保持稳定

    每一帧都是新数据,漏掉或拍糊一帧只会让传输稍慢一点。

  4. 4

    保存

    接收端校验整个文件后打开:文字和图片直接阅读,其他文件可以保存或打开。

每一帧装更多数据

用法和动态二维码一样,但每帧装的数据更多:

动态二维码(v25)Lumen Code 1.0
每格比特数12(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。实际速度取决于接收端相机,接收页面会实时显示各项数据。

96 KB/s实测最高速度(手机 App 之间)
3 / 4只需看到三个角:一角被反光遮住也能读
0不需要网络、配对或账号
1.0开放协议,已冻结;MIT 许可

为实际拍摄条件设计

手持拍摄、反光、普通镜头、小屏幕都能用。

  • 自适应密度

    格子大小按屏幕的物理尺寸选择:小屏手机也能稳定识别,笔记本屏幕能多装好几倍。

  • 喷泉码

    每一帧都是新数据。丢帧、拍糊、乱序都不要紧,收够了文件就完整了。

  • 三个角就够

    四角各有定位标记,再加一套对齐点阵,一个角被反光或手指挡住时整帧照样能解码。

  • 多色编码与纠错

    每格 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

网页版和商店版应用收发的是同样的文件,应用通常更快。

网页版

免费 永久

  • 任何带相机的现代浏览器
  • 无需安装,无需账号
  • 文件和文字都能收发
打开网页版

自己编译

免费 永久

  • 完整源码,MIT 许可证
  • iPhone、Android 和桌面:与商店版相同的应用
  • 桌面版可直接从 GitHub Releases 下载
怎样编译

全球统一定价,商店会按你所在地区的货币显示。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 适合用不了的场合:不同品牌的设备、没有共同的网络、受管控或物理隔离的电脑,或者一块只能看的屏幕。

用手边的两台设备试试。

一台打开发送,一台打开接收。无需安装。