不用 WiFi、蓝牙、USB!屏幕对摄像头就能传文件开源方案
你有没有遇到过这种” 绝境”——
飞机上想把电脑里的文件传到手机,没有网;涉密机房里服务器完全物理隔离,USB 口被封、WiFi 被禁;两台不同系统的设备摆在面前,蓝牙配对失败、局域网也没有……
常规传输手段全部失效的时候,怎么办?
答案可能比你想象的更简单:一块屏幕 + 一个摄像头。
一、什么是” 光学传输”?
所谓光学空气隔离数据传输(Optical Air-Gapped Data Transfer),核心逻辑一句话就能说清:
把文件编码成一连串快速闪烁的动态二维码,发送端用屏幕高速播放,接收端用摄像头持续拍摄识别,最后在本地重新组装还原成原始文件。
整个过程不需要任何网络、不需要蓝牙、不需要 USB 线,纯靠” 光” 来传递信息。
听起来是不是有点像早期的” 用摩尔斯电码闪灯传消息”?原理确实相通,但现代方案用的是二维码 + 摄像头,效率和可靠性高了不止一个量级。
二、传统二维码传输的” 致命伤”
用二维码传数据并不是什么新鲜事,但早期方案有一个绕不开的大坑:
单向传输,没有反馈机制。
发送端自顾自地循环播放二维码,它根本不知道接收端有没有漏掉某一帧。如果镜头抖了一下、屏幕反光了一瞬,刚好漏掉第 42 帧 —— 那接收端只能干等着发送端把整个序列重新播放一遍,才有机会补到这一帧。
“掉一帧,等一轮”,体验极其糟糕。
后来一些项目(AirScan-QR、QRBridge、QRSync 等)引入了顺序分片、CRC32 校验、断点续传等机制,可用性有所提升,但底层问题依然存在:只要丢帧,就可能卡住。
三、破局关键:喷泉码(Fountain Code)
真正解决这个问题的,是一种叫做” 喷泉码” 的编码技术。区块链冷钱包行业用的 BC - UR 标准,就是基于这套方案。
用一个通俗的比方来解释:
- 传统分片传输:把一桶水分装进 N 个编号杯子,必须按顺序一个个递过去,少任意一杯都没法复原。
- 喷泉码传输:像喷泉一样不断喷洒水滴,每一滴都是原始数据经过随机数学组合编码而来。接收端不用管接到哪一滴,只要收集到大约原始体积 105% 的水滴,就能通过数学运算还原出完整文件!
这意味着:
- ✅ 接收端可以中途加入扫描,不用从第一帧开始
- ✅ 帧的顺序无关紧要,乱序接收也能解码
- ✅ 少量丢帧完全无感,不需要请求重传
目前主流的喷泉码实现有两大体系:LT 码(Luby Transform) 和 RaptorQ(RFC 6330)。
最早将喷泉码落地到二维码传输的开源项目是 TXQR。
四、3 款主流开源工具实测对比
下面这三款是目前最值得关注的光学传输开源项目,各有侧重:
| 对比维度 | Decimen Optical Transfer | QRFerry | libcimbar |
|---|---|---|---|
| 编码体系 | LT 喷泉码 | RaptorQ 喷泉码 | 自研 Cimbar 彩色编码 |
| 技术栈 | TypeScript + zxing-wasm | TypeScript + WebAssembly | C++ / 原生 |
| 运行方式 | PWA 网页,开箱即用 | 网页端 | Android / 原生为主 |
| 压缩方式 | gzip 自适应 | Brotli + gzip 择优 | 内置压缩 |
| 实测速率 | 100~180 KB/s | 实验室接近 1 Mbps | 较高(自研编码) |
| 使用门槛 | 极低 | 低 | 较高 |
| 跨平台 | 浏览器通吃 | 浏览器通吃 | 偏 Android |
🔹 1. Decimen Optical Transfer —— 极简派代表
编码:LT(Luby Transform)喷泉码
这是一款把” 极简” 做到极致的 PWA 网页应用。打开浏览器就能用,不需要安装任何客户端。
核心亮点:
- 📱 PWA 网页应用,任何设备打开浏览器即用
- ⏱️ 支持接收端中途加入,不必从第一帧开始扫
- 🗜️ gzip 自适应压缩,SHA-256 完整性校验
- 🏷️ session ID + 自描述帧头设计,使用门槛极低
实测吞吐大约在 100~180 KB/s,传一个几 MB 的小文件几十秒就能搞定。它的设计哲学非常干净:把喷泉码的容错优势发挥到最大,同时尽量降低工程复杂度。
项目地址:https://github.com/bashalarmistalt/decimen-optical-transfer
🔹 2. QRFerry —— 工程优化派
编码:RaptorQ(RFC 6330)标准
如果说 Decimen 走的是极简路线,QRFerry 就是在工程层面” 卷” 到极致的代表。
核心亮点:
- 🔄 Brotli + gzip 双重压缩,自动选择最优方案
- 🎯 双通道(Dual-lane)设计:高帧率下两个二维码交替刷新,解决单通道快速刷新时相机难以锁定的痛点
- ⚡ 多档速率可调,实验室模式光学载荷接近 1 Mbps
- 🧩 基于 WebAssembly,RaptorQ + fast_qr + ZXing-C++ 全链路优化
双通道设计是 QRFerry 最有特色的创新。简单说就是屏幕上同时显示两个二维码,交替更新内容,摄像头分别识别,相当于把传输带宽翻了一倍,同时避免了单二维码刷新过快导致相机” 跟不上” 的问题。
🔹 3. libcimbar —— 跳出二维码框架的革新者
前面两款都还是基于标准黑白 QR 二维码,而 libcimbar 直接跳出了这个框架,自研了一套叫做 Cimbar(Color Icon Matrix Barcode)的高密度视觉编码格式。
它同时利用” 颜色” 和” 图标形状” 两个维度来承载数据,同等屏幕面积下能塞入比普通黑白二维码多得多的信息,更适合连续高速传输。
可以把它理解为一个真正的” 视觉通信协议”—— 不再受 QR 标准的格式约束,而是直接为” 屏幕→摄像头” 这个特定信道量身设计编码方式。
⚠️ 缺点也很明显:使用门槛偏高,接收端目前更多面向 Android 原生实现,不像前两款那样打开浏览器就能用。
五、这项技术到底适合谁用?
光学传输的带宽确实没法和 WiFi、USB 相提并论,速度通常只有几十到上百 KB / s。但在以下场景,它几乎是唯一可行的方案:
🏦 场景 1:区块链硬件冷钱包
像 Keystone、Passport 这类硬件冷钱包,通过动态二维码向联网设备广播已签名的离线交易。钱包设备全程物理隔离,从根本上杜绝网络攻击风险。这也是光学传输目前最成熟的商业应用。
🔐 场景 2:高安全环境密钥分发
军工、金融、核心机房的服务器初始化时,需要向物理隔离设备投递密钥、证书等敏感信息。屏幕输出编码、摄像头接收,全程不留任何网络痕迹,实现” 无痕投递”。
📱 场景 3:跨平台应急小文件传输
两台设备操作系统不同,没有局域网、蓝牙配对失败,只要都能打开浏览器,就能完成文本、小文件的应急传输。出门在外遇到设备间传文件的窘境,这是一个非常实用的兜底方案。
💡 实用提示:光学传输更适合密钥、配置文件、短文本、小体积文件(几 MB 以内),不适合传输大体积视频或大型压缩包。
六、写在最后
屏幕 + 摄像头的光学传输,本质上是用” 视觉信号” 替代了无线电和有线信号,专门解决物理隔离环境下的数据进出难题。
喷泉码技术的成熟,解决了传统动态二维码” 一丢帧就崩盘” 的痛点,让这项原本停留在实验室的技术,逐渐变成了普通人也能上手的实用工具。
Decimen 的极简、QRFerry 的工程优化、libcimbar 的大胆革新,三条路线各有千秋。对于技术爱好者、运维人员、安全从业者来说,这些开源项目值得了解和收藏 —— 说不定哪天,你就会在某个” 绝境” 场景下用到它们。
🔗 相关项目地址汇总:
- Decimen:https://github.com/bashalarmistalt/decimen-optical-transfer
- QRFerry:https://github.com/deedy/qr-data-transfer
- libcimbar:https://github.com/sz3/libcimbar
- TXQR(先驱项目):https://github.com/divan/txqr



