十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

3分钟上手libcimbar:断网环境下,用屏幕和摄像头把文件“传过去“

3分钟上手libcimbar:断网环境下,用屏幕和摄像头把文件“传过去“ 3分钟上手libcimbar断网环境下用屏幕和摄像头把文件传过去【免费下载链接】libcimbarOptimized implementation for color-icon-matrix barcodes项目地址: https://gitcode.com/GitHub_Trending/li/libcimbar深夜十一点某保密机房的工程师老周盯着两台物理隔离的电脑发愁U盘被封禁、网络被拔线一份 8MB 的配置文件却必须在两套系统间流转。打印成二维码一张最多几 KB得打几百页纸。就在他准备用最原始的办法——对着屏幕一个字一个字抄——时同事发来一个项目libcimbar。这是一个基于彩色图标矩阵条形码Color Icon Matrix Barcodes的视觉传输库。它把文件编码成一组不断跳动的彩色方格动画发送端放动画接收端拿手机摄像头一扫最高能以106KB/s的速度把数据隔空传过去。全程不碰网络、蓝牙、NFC数据只走镜头这一条路。这不是科幻是已经跑起来的开源项目。它到底在屏幕上画了什么打个比方就懂了先忘掉那些专业术语。把 libcimbar 想象成一本会翻页的彩色密码书每一帧画面就是一页页面上是密密麻麻的彩色小方格官方叫 tile瓦片。每个格子选什么图案、涂什么颜色组合起来就代表 6 个比特4 位图案 2 位颜色。一整页塞下约 7500 字节的有效数据——相当于一页纸装下两页半《新华字典》的压缩包。解码端则是翻书人。它靠画面三个角上的锚点图案定位就是下图这种回字形方块类似二维码的回字定位符再做透视校正然后逐格识别图案和颜色把二进制流还原出来。这里有个反直觉的巧思cimbar 判断某个格子是什么图案靠的不是像素级比对而是图像哈希——把 8x8 的格子压成一个 64 位数字再与 16 个标准图案的哈希做距离比对取最接近的那个。即使画面模糊、轻微形变哈希距离依然稳定这就是它在手机镜头下依然能读准的底气。看就是这些标准图案在来回切换不过单页再能装也装不下整份 8MB 文件而且镜头难免漏拍几帧。于是 libcimbar 又叠了两层保险Reed-Solomon 纠错处理单帧内的坏格子喷泉码wirehair 实现处理帧与帧之间的关系——只要收到足够多的水滴帧哪怕顺序打乱、丢了几帧整条河文件都能完整复原。文件最多支持到压缩后 33MB先 zstd 压缩再编码文本类文件能再省一大截传输量。一台电脑 一部手机把第一条光缆架起来上手路径有两条我推荐先走命令行因为它把整个链路摊开给你看。源码在src/exe/下发送端cimbar_send、接收端cimbar_recv一眼就能找到。第一步把库编出来。依赖就三个系统包其余第三方库zstd、wirehair、libcorrect 等全部内嵌在src/third_party_lib/里clone 下来直接编git clone https://gitcode.com/GitHub_Trending/li/libcimbar cd libcimbar # Ubuntu/Debian 需先装三个依赖OpenCV、GLFW、OpenGL ES 头文件 sudo apt install libopencv-dev libglfw3-dev libgles2-mesa-dev cmake . make -j$(nproc) make install产物默认落在./dist/bin/cimbar_send和cimbar_recv都在这里。第二步发送端开播。把文件丢给它屏幕上会弹出一个满屏彩色格子的窗口像一堆有节奏跳动的雪花——那就是你的数据正在一帧帧地广播./cimbar_send -i report.pdf第三步接收端对准屏幕。手机或另一台电脑插上摄像头运行解码器把镜头对准那片跳动的格子保持 30–50cm 距离、正对不要斜./cimbar_recv -i 0 -o ./received_files看到终端里不断刷新的[23%, 57%, 100%]进度列表了吗那是每个文件的喷泉码接收进度。等它全部到 100%received_files目录里就是完好无损的原始文件。是不是比你想象的简单三个别人不知道的进阶玩法玩法一参数黄金组合肉眼可见地提速。默认 15fps 偏保守如果你的屏幕和摄像头都够劲试试这套组合——把-f提到 30、-e降到 16更少纠错字节意味着更多数据位-z 0关掉对已压缩媒体的二次压缩./cimbar_send -i photo.jpg -m B -f 30 -e 16 -z 0前提是发送端和接收端的-m模式必须一致默认 B 模式否则谁也认不出谁。玩法二零安装的 Web 发送端。不想编译项目把编码器编译成了 wasmweb/目录下就是完整的浏览器实现。用python3 package-cimbar-html.py -i your_file.txt -o send_page.html生成一个单文件 HTML任何现代浏览器打开即用连应用都不用装。接收端同样有纯浏览器的recv.html——两台没装任何软件的电脑也能互传这在机房应急时是救命招。玩法三打破 33MB 上限。官方喷泉码把单流文件封顶在 33MB但社区工具 cimbar-bigfile 通过把大文件切成多个 10–15MB 的并行encode_id流再配一份 SHA256 校验的manifest.json轻松支持 100MB 文件。大文件传输不再是禁区。我踩过的坑你绕着走屏幕亮度调满但环境光才是主角。官方性能文档里原话是screen brightness on the sender is good, but ambient light is better——只靠屏幕发光容易过曝开盏台灯、用白色背景帧捕获质量立竿见影。别贪 8 色模式。8 色8C 模式理论速度更快但官方自己都标注实验性、一直不稳定0.6.0 起已移除。老老实实用 B 模式8x8、4 色它是可靠性与速度的最佳平衡点。镜头歪一点ECC 就救不回来。斜着拍会导致画面一部分格子密集变形错误聚集在局部30/155 的纠错等级扛不住。宁可把手机放低一点正对屏幕也别图省事斜着架。提防反光和手抖。灯管反射会让整片格子失明手抖则让锚点定位飘移。支架一夹问题少一半。一张表看懂各模式真实速度模式格子规格颜色数实测速率状态B推荐8x84色~852 Kb/s106KB/s0.6.0 起默认4C旧版8x84色~838 Kb/s104KB/s兼容保留8C8色8x88色~943 Kb/s118KB/s已移除不稳定S试验5x54色稳定超 1 Mb/sWIP需特殊编译换算成体感1MB 文件约 10–15 秒10MB 约 1.5–2.5 分钟。作为参考单帧 barcode 是 1024x1024 像素每帧在纠错后还能扛住 7500 字节净数据这个密度在视觉传输里相当能打。参数速查对照表参数含义常见取值适用场景-m编码模式B / Bm / Bu / 4C默认 B求稳用 4C-f帧率15–30硬件好就 30-e每块纠错字节16–64光照差加大反之减小-zzstd 压缩级别0–15文本开高媒体开 0想看更深的实现细节编码器的喷泉码逻辑在src/lib/fountain/Reed-Solomon 纠错在src/lib/encoder/摄像头提取链路在src/lib/extractor/官方文档DETAILS.md和PERFORMANCE.md把每一条性能数据都交代得清清楚楚。这项目最迷人的地方在于它把传输这件事从网络协议里剥离出来退回到一束光、一个镜头这样最原始的物理介质。数据可以被隔离但从未停止流动——这就是 libcimbar 给出的答案。现在去把你的第一份文件发到屏幕对面吧整个过程不会超过 10 分钟。【免费下载链接】libcimbarOptimized implementation for color-icon-matrix barcodes项目地址: https://gitcode.com/GitHub_Trending/li/libcimbar创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表