在蓝牙配对繁琐、AirDrop 跨生态受限、微信传图压缩画质的今天,QRFerry 提供了一种极客且通用的解决方案:通过实时动画 QR 码流,利用屏幕和摄像头在两台设备间传输文件。
整个过程完全在浏览器中运行,无需安装 App,无需网络连接,文件数据以“光”的形式在空气中传播,且永远不会上传到任何服务器。

核心原理:喷泉编码与双通道优化
QRFerry 并非简单地将文件切分成静态二维码,而是采用了一套高度优化的传输协议:
- RaptorQ 喷泉编码:
- 文件被编码为无数个符号(Symbols),源符号和修复符号交错排列。
- 容错性极强:接收端可以在中途加入扫描,丢弃模糊或无效的帧,甚至无序接收。只要收集到足够多的唯一符号,即可完整重建文件。
- Turbo 模式提升速率:
- Turbo 30:在 60Hz 屏幕上,将一个 V30-L 码保持两次刷新,实现稳定的 30 fps 传输。
- Turbo 60:使用两个 V30-L 通道交替更新,每个通道在每次显示切换期间保持稳定,组合流每秒承载 60 个符号,显著提升吞吐量。
- 1 Mbps 实验室配置:采用更密集的 V40-L 双通道设计,名义光学有效载荷可达 1.40 Mbps。
- 高效压缩与编码:
- 同时尝试 Brotli (质量 11) 和 gzip (级别 9),仅保留最小的表示形式。
- QR 帧使用原始字节模式,避免了 Base45 等扩展带来的开销。
- 每帧携带紧凑的二进制标头、RaptorQ 符号和 CRC-32 校验。
关键特性
- 纯本地运行:发送端和接收端均在浏览器中执行,依赖 WebAssembly 编译的
fast_qr(渲染)、ZXing-C++(扫描)和 RaptorQ(编解码)。 - 零隐私泄露:文件数据不经过任何应用服务器,全程点对点光传输。
- 多重校验:接收端在保存前会验证每帧 CRC、完整 RaptorQ 对象 CRC、压缩有效载荷 CRC 以及原始文件 CRC,确保数据绝对完整。
- 跨平台兼容:只要设备有屏幕和摄像头,并能运行现代浏览器,即可实现 Android、iOS、Windows、macOS 之间的无缝互传。
- 智能元数据处理:文件名、媒体类型等元数据位于受保护的 RaptorQ 对象内部,传输完成后自动恢复。
使用指南
- 发送端:在电脑或手机浏览器打开根页面,选择要传输的文件(最大支持 64 MB)。
- 接收端:在另一台设备上打开
/scan 页面,允许后置摄像头访问。 - 开始传输:启动 QR 流,将接收端手机的引导框对准发送端屏幕。
- 完成保存:当 RaptorQ 恢复进度和文件校验和达到 100% 时,文件即自动保存至本地。
提示:为了获得最佳性能,建议开启 Dual lane 选项,并将手机横向握持稳定且靠近发送端屏幕。