decimen-optical-transfer

一个离线的”光传文件”工具,发送端把文件切成无数个动态二维码连续播放,接收端用摄像头扫下来自动还原,适合完全隔离网络的场景,两台设备之间不需要联网、不需要配对、不需要账号。

Github地址

https://github.com/bashalarmistalt/decimen-optical-transfer

核心功能

  • 纯浏览器运行,发送端和接收端都是网页,不需要安装任何东西
  • 支持传文件(最大 64MB)和粘贴文字片段两种模式
  • 用喷泉码(Fountain Code)做底层,丢几个帧不影响,不需要重传机制
  • 自动判断 gzip 压缩是否划算,省光学带宽
  • 接收完校验 SHA-256,确保文件没坏
  • 支持 PWA,第一次访问后能离线使用
  • 有演示模式,可以锁死发送内容防止别人乱选文件

怎么用

最省事:直接打开 decimen.app,发送端选文件或贴文字,接收端点”开启摄像头”对准屏幕就行。亮度调高点,手机最好固定住别手抖, autofocus 来回跳是大敌。

自己跑的话:

1
2
3
4
5
6
7
npm install
npm run dev # 开发服务器,带热更新
npm run serve # 编译成生产版本再启动
npm run demo # 演示模式,只能发内置的两个测试图
npm test # 跑测试
npm run build # 输出到 dist/,适合部署
npm run build:standalone # 生成两个单 HTML 文件,完全离线能用

开发服务器强制 https,因为摄像头 API 在 http 下直接被浏览器掐掉。第一次访问会报证书问题,点继续就行。