화면과 카메라만으로 파일 전송하는 웹 QR 코드 기술
네트워크 연결이나 앱 설치 없이 화면에 연속으로 재생되는 QR 코드를 카메라로 인식해 파일을 전송하는 기술입니다. 송신 측의 화면을 수신 측의 카메라로 촬영해 빛으로 데이터를 전달하므로, 폐쇄망이나 네트워크 권한 없이 최대 64MB의 파일을 안전하게 전송할 수 있다는 것이 핵심입니다. 오류 복원 기술인 파운테인 코드(Fountain code)를 적용해 중간에 프레임이 누락되더라도 파일을 온전히 복원할 수 있는 것이 주요 특징입니다.
Decimen Optical Transfer: 파운테인 코드가 적용된 QR 파일 전송
오직 화면과 카메라만을 이용해 두 기기 간에 파일을 전송하세요. 한 기기의 화면에 파일을 끊임없이 흐르는 애니메이션 QR 코드로 표시하면, 다른 기기에서 카메라를 이를 향해 켜고 파일을 재구성합니다. 기기 간의 네트워크 연결이 필요 없고, 앱 설치도, 페어링도, 카메라 권한 외의 다른 권한도 필요하지 않습니다. 페이로드(데이터)는 빛으로 전송됩니다.
지금 바로 사용해보기 → decimen.app 설치할 것 없이 양쪽 기기에서 웹사이트를 열고 바로 시작하면 됩니다. 최초 1회 접속 이후에는 오프라인으로도 작동하며, 홈 화면에 추가하면 iOS 및 Android에서 앱처럼 설치할 수 있습니다. 최대 64MB(또는 복사한 텍스트 조각)까지 지원되며, 파일 이름과 미디어 유형이 보존되고, 효율적인 경우에만 gzip 압축을 사용합니다. 모든 데이터는 제공되기 전에 SHA-256으로 무결성이 검증되며, 수신된 동영상은 페이지 내에서 바로 재생됩니다.
이 프로젝트는 휴대폰 간 128 KB/s 속도를 달성했던 더 큰 규모의 실험에서 파생되었습니다. 전송 중인 상태에서: 휴대폰이 공기 중에서 파일을 130 KB/s 속도로 가져오는 중입니다. 두 모드 모두 암호화되지 않으므로, 송신 화면에 있는 모든 것은 그 화면을 향하는 어떤 카메라로든 읽을 수 있습니다. 이 기능이 제공하는 것은 '네트워크 없음'이지 '기밀성'이 아닙니다 — 개인정보 보호(privacy)를 참조하세요.
문서 사용법 - 빠른 시작 · 보내기 · 받기 · 문제 해결 · 설치 및 오프라인 · 개인정보 보호 구축 방식 - 아키텍처 · 프로토콜 · 플랫폼 특징 · 빌드 및 릴리스
프로토콜의 요약: 화면 대 카메라 링크에는 역방향 채널(back-channel)이 없으므로, 송신자는 파운테인 코드( Luby transform )가 적용된 프레임을 스트리밍합니다. 수신자는 순서에 상관없이 약 K·1.15개의 고유한 프레임을 수집하기만 하면 파일을 깎아내어 복원할 수 있습니다. 프레임 누락은 시간 지연을 유발할 뿐, 데이터의 정확성을 훼손하지는 않습니다.
직접 실행해 보기 npm install npm run dev # HMR을 지원하는 https 개발 서버 npm run serve # 빌드 후 프로덕션 번들 제공 npm run demo # 데모 모드: 번들된 페이로드만 전송 가능 npm test # 골든 와이어포맷 벡터 및 단위 테스트 npm run build # 호스팅되는 사이트 빌드 → dist/ npm run build:standalone # 두 개의 독립적인 페이지 → dist-standalone/ npm run build:all # 전체 빌드 송신 기기에서는 https://localhost:5173/send/ 를 열고, 수신 휴대폰에서는 출력된 네트워크 URL을 엽니다 (자체 서명된 인증서를 한 번 수락해야 합니다). 자세한 안내: 빠른 시작.
유사한 프로젝트 이 개념은 독립적으로 도달한 것입니다. 알고 보니 여러 사람들이 비슷한 아이디어를 가지고 있었으며, 그들의 접근 방식도 모두 살펴볼 만합니다: mohankumarelec/airgapped-qr-code-transfer: 압축 및 순차적 청킹을 사용하는 브라우저 기반 QR 파일 전송. 이 프로젝트를 공개적으로 데모한 후에 발견했으며, 수렴 진화의 좋은 예시입니다. divan/txqr (2018): Go로 작성된 애니메이션 QR과 파운테인 코드. 파운테인 코딩이 순차적 루핑보다 왜 더 나은지에 대한 훌륭한 설명 두 편이 있습니다. sz3/libcimbar: 이 채널에 맞게 특별히 제작된 고밀도 컬러 코드를 사용하여 QR 코드를 완전히 대체합니다.
node-qrcode 및 zxing-wasm을 사용하여 Evan Crawley (Bash Alarmist)가 제작했습니다. 라이선스 MIT.