
手機對住高速閃動 QR code 就傳到檔:186 KB/s 光學傳輸有幾實際?
免裝 app 跨平台幾吸引,不過高速數字要睇清楚測試條件
QR code 閃幾下,點解真係可以傳到成個檔?
Decimen Optical Transfer 係一個幾有趣嘅開源概念驗證:傳送端將檔案拆成細塊,逐格畫成高速轉換嘅 QR code;接收端開住網頁,用鏡頭掃住另一部機個畫面,再喺本機砌返原檔。檔案資料本身行嘅係「畫面去鏡頭」呢條光學通道,唔使兩部機用藍牙配對,亦唔使經 Wi-Fi 或流動網絡互傳。跨平台同免裝 app 確實方便,舊機、展場或者公司網絡限制較多嘅環境都有機會用得着。

圖片:Decimen Optical Transfer/GitHub
漏咗一格都唔使由頭等過
普通做法係將檔案順序切開:第一格、第二格一路播落去。問題係鏡頭失焦、手震、畫面刷新撞正曝光時間,都可能令其中一格掃唔到;接收端冇回傳通道要求補發,就要等成段動畫循環一次。Decimen 改用 fountain code(噴泉碼),每格放入由多個原始資料塊 XOR 混合出嚟嘅內容。接收端只要儲夠約原始塊數 1.15 倍嘅不同 frame,就有機會解返全份檔案,先後次序同漏咗邊格都唔太重要。
每個 frame 仲帶住一個 20-byte header,入面有 session ID、序號、資料塊數量同大小、檔案長度及 hash。接收端中途先開始掃都認得同一輪傳輸,傳送端重新開始時亦識得切去新 session。呢種設計早喺 2018 年 TXQR 等項目出現過;今次值得睇嘅位,係開發者將 QR 產生、WASM 解碼同瀏覽器鏡頭 API 執埋一套,推到手機網頁都跑得郁。
iPhone Safari 點解要搬 WASM 出嚟
Chrome 系瀏覽器可以用 BarcodeDetector 叫系統幫手認 QR code,但 iPhone Safari 呢條路一路唔可靠。WebKit 嘅 281848 bug 到 2026 年 7 月仍標示為未解決,iOS 上嘅 Shape Detection API 掃唔到 QR code。Decimen 索性用 編譯成 WebAssembly 嘅 zxing-cpp,放入多個 Web Worker 解碼鏡頭 frame。Worker 忙唔切就直接漏 frame,fountain code 再負責頂住,兩層設計啱啱好互相補位。
186 KB/s 唔係開網頁就自然有
最搶眼嘅約 186 KB/s,由項目開發者自行量度,暫時未見獨立 benchmark。README 講明呢個成績用咗較密嘅 QR frame、120Hz ProMotion 傳送畫面、疊放多個 code,仲要兩部裝置固定擺好;手持同類設定約為 128 KB/s。公開 PoC 預設其實係 24 FPS、每格 1,465 bytes,未扣 header、fountain code 額外資料同漏 frame之前,原始上限只係約 35 KB/s。換句話講,186 KB/s 係架構嘅測試上限,唔代表下載公開程式後嘅日常速度。
畫面光度、QR code 大小、距離、鏡頭快門、自動對焦同螢幕更新率都會拉低表現。README 亦話每格最好至少霸住兩次螢幕刷新,幀率推得太盡,鏡頭反而可能跨住兩幅 QR 曝光,結果兩幅都讀唔到。傳細相、文件或者幾 MB 音樂檔仲算合理;幾十 GB 影片就冇必要同 USB、AirDrop 或 Quick Share鬥。
公開 PoC 點樣試,幾個伏要先知
跟 README 示範,要先安裝依賴同開本機開發 server;傳送裝置開 /send/,接收手機則經同一個 LAN 開 /receive/,接受自簽 HTTPS certificate 警告,再授權鏡頭。之後檔案內容先由閃動 QR code 傳過去。所以「傳輸唔經網絡」只係形容 payload 通道,公開示範仍靠本機網絡載入兩個頁面,未係拎兩部完全隔離、從未預載程式嘅手機即開即用。
實際擺位方面,接收手機最好用支架固定,先由預設 24 FPS 同 1,465 bytes 起步;畫面較大、亮度較高、鏡頭對焦穩定後,先逐級加 frame 大小或速度。高速黑白 QR code 會不停閃,唔好長時間近距離望住,容易受閃動畫面影響、偏頭痛或者有光敏感情況嘅人仲唔建議試。
有 hash 唔等於有加密
原始碼用 FNV-1a 檢查重組後嘅資料啱唔啱,但呢個係非密碼學 hash,程式亦未見檔案加密或接收端認證。附近任何對正畫面、識得同一格式嘅鏡頭,理論上都可以收走資料。再加上公開 repository 暫時只有一個 commit,未見正式安全審計,唔好用佢傳密碼、身份文件、公司機密或者其他敏感資料。自簽 certificate 警告亦只適合自己控制嘅測試環境,唔應養成見到警告就照撳入去嘅習慣。
開發者話呢個 PoC 用 Claude Code 協助一晚砌成,呢點反映 AI coding 工具幾適合快速試驗演算法同瀏覽器 API。不過程式得一個 commit、測速未有第三方覆核、載入流程亦未處理成真正開箱即用,距離可靠傳檔工具仲有一段路。現階段最啱開發者研究同自己玩;之後要睇有冇持續維護、獨立測速同安全設計補上。
參考來源
- Tom's Hardware — Streaming QR codes at 60 FPS achieves nearly 190 KB/s data rate in phone-to-phone tests — browser-based method requires no app, no networking, no pairing, and no permissions beyond camera access — original report
- Decimen Optical Transfer GitHub repository — 項目 primary source,列出操作方法、fountain code 設計、預設參數、測速條件同原始碼。
- WebKit Bug 281848 — 確認 iOS Shape Detection API/BarcodeDetector 問題同最新狀態。
- Fountain codes and animated QR — TXQR 開發者講解 fountain code 點樣處理漏 frame及亂序資料。
- libcimbar GitHub repository — 另一個用高密度彩色條碼同 fountain code 做光學傳檔嘅開源項目,提供技術背景比較。
本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。







