手機對住高速閃動 QR code 就傳到檔:186 KB/s 光學傳輸有幾實際?
3C 產品

手機對住高速閃動 QR code 就傳到檔:186 KB/s 光學傳輸有幾實際?

圖片:via Tom's Hardware — https://www.tomshardware.com/networking/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
TechLab 編輯部(譯)·

免裝 app 跨平台幾吸引,不過高速數字要睇清楚測試條件

QR code 閃幾下,點解真係可以傳到成個檔?

Decimen Optical Transfer 係一個幾有趣嘅開源概念驗證:傳送端將檔案拆成細塊,逐格畫成高速轉換嘅 QR code;接收端開住網頁,用鏡頭掃住另一部機個畫面,再喺本機砌返原檔。檔案資料本身行嘅係「畫面去鏡頭」呢條光學通道,唔使兩部機用藍牙配對,亦唔使經 Wi-Fi 或流動網絡互傳。跨平台同免裝 app 確實方便,舊機、展場或者公司網絡限制較多嘅環境都有機會用得着。

手機鏡頭對住另一個螢幕上高速轉換嘅 QR code,接收介面顯示傳輸速度同進度

圖片: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、測速未有第三方覆核、載入流程亦未處理成真正開箱即用,距離可靠傳檔工具仲有一段路。現階段最啱開發者研究同自己玩;之後要睇有冇持續維護、獨立測速同安全設計補上。


參考來源

本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。

分享:WhatsAppThreadsTelegramFacebook