Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
222 changes: 222 additions & 0 deletions CIMBAR-TRANSFER-README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,222 @@
# Cimbar 传输助手使用说明

## 📖 简介

Cimbar 传输助手是一个基于视觉二维码的文件传输工具,通过摄像头扫描屏幕上的动态二维码实现文件传输。无需网络连接,完全离线可用。

## ⚡ 传输速度

- **典型速度**:1MB 文件约需 **40 秒** 传输完成
- **影响因素**:
- 摄像头质量和对焦速度
- 光线条件
- 屏幕刷新率
- 编码模式选择

## 🌐 浏览器兼容性

### ✅ 推荐浏览器

#### macOS / Windows / Linux
- **Chrome**(推荐)
- **Firefox**
- **Edge**
- Safari(macOS)

#### iOS / iPadOS
- **Chrome for iOS**(强烈推荐)
- **Firefox for iOS**
- **Edge for iOS**

> ⚠️ **重要提示**:iOS Safari 浏览器存在兼容性问题,**不建议使用**。请使用 Chrome、Firefox 或 Edge 的 iOS 版本。

#### Android
- **Chrome for Android**(推荐)
- **Firefox for Android**
- **[CFC Android App](https://github.com/sz3/cfc)**(官方客户端,性能最佳)

## 📱 移动端优化建议

### iOS 用户
1. **必须使用 Chrome/Firefox/Edge**,不要使用 Safari
2. 确保授予摄像头权限
3. 保持设备稳定,避免抖动
4. 在光线充足的环境下使用

### Android 用户
1. 推荐使用 [CFC Android App](https://github.com/sz3/cfc)
- 专为 Cimbar 优化
- 更好的解码性能
- 更低的功耗
2. 如果使用浏览器,Chrome 是最佳选择

## 🚀 使用步骤

### 发送文件

1. 点击"发送"标签
2. 拖拽文件或点击选择文件
3. 选择编码模式:
- **B**:稳定模式(默认推荐)
- **Bm**:改进模式
- **Bu**:高对比度模式
- **4C**:高密度模式(速度快但要求高)
4. 调整帧率(5-20 FPS,默认 15)
5. 点击"开始编码传输"
6. 将屏幕朝向接收端摄像头

### 接收文件

1. 点击"接收"标签
2. 点击"启动摄像头"
3. 授予摄像头权限
4. 将摄像头对准发送端屏幕
5. 等待自动解码和下载
6. 文件会自动保存到下载文件夹

## 💡 优化建议

### 提高传输速度

1. **选择合适的编码模式**
- 小文件(< 1MB):使用 B 或 Bm 模式
- 大文件:尝试 4C 模式(如果摄像头质量好)

2. **调整帧率**
- 高性能设备:15-20 FPS
- 普通设备:10-15 FPS
- 低性能设备:5-10 FPS

3. **优化环境**
- 确保充足的光线
- 避免屏幕反光
- 保持摄像头稳定
- 清洁摄像头镜头

### 提高成功率

1. **对准技巧**
- 保持适当距离(20-50cm)
- 确保二维码完整出现在画面中
- 避免过度倾斜角度

2. **设备设置**
- 关闭自动亮度调节
- 提高屏幕亮度
- 启用摄像头自动对焦

## 🔧 技术细节

### 工作原理

1. 发送端将文件编码为动态二维码序列
2. 每个二维码包含一部分数据(使用喷泉码技术)
3. 接收端通过摄像头扫描二维码
4. 自动重组和解压缩文件

### 编码模式对比

| 模式 | 稳定性 | 速度 | 适用场景 |
|------|--------|------|----------|
| B | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 通用场景,最稳定 |
| Bm | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 平衡性能和稳定性 |
| Bu | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 低对比度环境 |
| 4C | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 高质量摄像头,追求速度 |

## ❓ 常见问题

### Q: 为什么传输速度慢?
A: 可能原因:
- 摄像头质量差或对焦慢
- 光线不足
- 选择了过于密集的编码模式
- 设备性能较低

### Q: 为什么解码失败?
A: 可能原因:
- 摄像头未对准
- 距离太远或太近
- 屏幕反光或眩光
- 使用了不兼容的浏览器(如 iOS Safari)

### Q: 文件传输中断怎么办?
A:
- 点击"重置"按钮重新开始
- 检查摄像头是否被遮挡
- 确保发送端持续显示二维码

### Q: 支持多大的文件?
A: 理论上无限制,但建议:
- 小文件(< 10MB):体验最佳
- 中等文件(10-50MB):可以接受
- 大文件(> 50MB):需要较长时间

## 📞 支持与反馈

- **GitHub**: [sz3/libcimbar](https://github.com/sz3/libcimbar)
- **Android App**: [sz3/cfc](https://github.com/sz3/cfc)
- **问题反馈**: 请提供浏览器版本、设备型号和具体问题描述

## 📁 项目文件说明

### cimbar-deps/
**Cimbar 核心依赖库目录**

包含 Cimbar 编解码所需的所有核心文件:
- `cimbar_js.2026-01-20T0312.js` - WebAssembly 模块(编码+解码)
- `cimbar_js.2026-01-20T0312.wasm` - WASM 二进制文件
- `main.2026-01-20T0312.js` - 发送端编码逻辑
- `recv.2026-01-20T0312.js` - 接收端解码逻辑
- `recv-worker.2026-01-20T0312.js` - Worker 解码进程
- `zstd.2026-01-20T0312.js` - Zstandard 压缩算法
- `tailwind.min.js` - Tailwind CSS 框架(本地化)
- `vconsole.min.js` - vConsole 调试工具(本地化)

> 💡 这些文件从原始 Cimbar 项目复制而来,进行了路径适配以支持本地部署。

### cimbar-deps-start/
**HTTPS 服务器证书目录**

包含 HTTPS 服务所需的 SSL 证书:
- `cert.pem` - SSL 证书文件
- `key.pem` - SSL 私钥文件

> ⚠️ **重要**:现代浏览器要求摄像头访问必须使用 HTTPS 协议。此目录中的自签名证书用于本地开发测试。

### https_server.py
**Python HTTPS 服务器脚本**

一个简单的 Python HTTP 服务器,提供以下功能:

#### 主要特性
1. **HTTPS 支持** - 使用 SSL 证书加密通信
2. **静态文件服务** - 托管 cimbar-transfer.html 及相关资源
3. **状态管理 API** - 提供文件传输进度跟踪接口

#### API 端点
- `GET /get_status` - 获取当前传输状态
- `POST /update_progress` - 更新接收进度
- `POST /request_frame` - 请求特定帧
- `POST /reset` - 重置传输状态

#### 启动方式
```bash
python3 https_server.py
```

服务器将在 `https://0.0.0.0:4443` 启动,可通过以下地址访问:
- `https://localhost:4443/cimbar-transfer.html`
- `https://<你的IP>:4443/cimbar-transfer.html`

> 🔒 **为什么需要 HTTPS?**
> - 浏览器安全策略要求摄像头访问必须使用 HTTPS
> - 自签名证书会在首次访问时显示安全警告,点击"高级"→"继续访问"即可
> - 生产环境应使用正式的 SSL 证书

## 📄 许可证

本项目基于 libcimbar 开发,遵循相应的开源许可证。

---

**提示**:为了获得最佳体验,请确保使用推荐的浏览器和设备配置。
20 changes: 20 additions & 0 deletions cimbar-deps-start/cert.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
-----BEGIN CERTIFICATE-----
MIIDMDCCAhgCCQC+8vuVlPKd2zANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJD
TjEQMA4GA1UECAwHQmVpamluZzEQMA4GA1UEBwwHQmVpamluZzETMBEGA1UECgwK
QWlyU2Nhbi1RUjESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI2MDQwNDE3NDcxNFoX
DTI3MDQwNDE3NDcxNFowWjELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaWppbmcx
EDAOBgNVBAcMB0JlaWppbmcxEzARBgNVBAoMCkFpclNjYW4tUVIxEjAQBgNVBAMM
CWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPgiwZfj
2Wp7JdtOlMFjsm+P6RDEOzhSkfIi7v1Jwoc4PpVWq2AmQH0mvyD5pG2D5E9Y/Kd5
0i6Dkm+Nm1kP/NLfKffqfKKm2rV94LhG3UVOCG+JC8MPQEMf8Ro5AWMkQlSSrKWv
s7FYxwtaje1f5TNSBtpKXiNh067FX94mVJsHGDIXwZacyB11Bc9NCFMwSBYtZGqM
Kj3Qkeuwe70lubdaVt77VuFqjCMJ9VkYUSfGNbos8hSMoVNMhNrJzrwwaKMsKQ3Z
lUSU9+OldUPu8sweU+E38gYvPJDdBF24ZDA7w5kqn0Hr9LIWv8i9Qm0xlavvTqxb
Djay+WqCTBx3LrkCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAT00dTqOJASti+lPm
/0pfi8biGmTW2PAZLp0IG5Z3zqU+OWgxi6HF34En7e64m4Jh2HXHIhMz5xpuf4ib
3imjLRAmRUr3VPCj35fgchuJBWzXF0VXXz5Wub0mQjEiep6sUzI418Jr0wkb5tpR
yKfrL+y59T81bvjZ30BVLfxT9c9xnU3GCNMa7Pozqvgul8hvxGFOH+ndiwLB3Oey
7HVBMDG/kC/5pYRvtCUGO4Js6i9OE6XgwJ8y8UCZ77kZyJHiqCrPLP8siw3V42/5
u1cJp7sEdTIkwdgvN3Oz9lTb+XJoXwYpwZdFWDEEgXbLp+N6BsLP8uPvSi/ThMK/
T74hNQ==
-----END CERTIFICATE-----
55 changes: 55 additions & 0 deletions cimbar-deps-start/generate_cert.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#!/bin/bash
# 生成自签名 SSL 证书脚本
# 用于 https_server.py

echo "=========================================="
echo "🔐 生成自签名 SSL 证书"
echo "=========================================="
echo ""

# 检查 openssl 是否安装
if ! command -v openssl &> /dev/null; then
echo "❌ 错误: 未找到 openssl 命令"
echo "请先安装 openssl:"
echo " macOS: brew install openssl"
echo " Ubuntu/Debian: sudo apt-get install openssl"
exit 1
fi

echo "✅ 检测到 openssl"
echo ""

# 生成证书
echo "📝 正在生成证书..."
openssl req -x509 -newkey rsa:2048 \
-keyout key.pem \
-out cert.pem \
-days 365 \
-nodes \
-subj "/C=CN/ST=Beijing/L=Beijing/O=AirScan-QR/CN=localhost" \
2>&1

# 检查是否成功
if [ -f "cert.pem" ] && [ -f "key.pem" ]; then
echo ""
echo "=========================================="
echo "✅ 证书生成成功!"
echo "=========================================="
echo ""
echo "📄 生成的文件:"
ls -lh cert.pem key.pem
echo ""
echo "📅 有效期: 365 天"
echo "🌐 域名: localhost"
echo ""
echo "💡 现在可以运行:"
echo " python3 https_server.py"
echo ""
echo "⚠️ 浏览器会显示安全警告(因为是自签名证书)"
echo " 点击「高级」→「继续访问」即可"
echo ""
else
echo ""
echo "❌ 证书生成失败"
exit 1
fi
28 changes: 28 additions & 0 deletions cimbar-deps-start/key.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQD4IsGX49lqeyXb
TpTBY7Jvj+kQxDs4UpHyIu79ScKHOD6VVqtgJkB9Jr8g+aRtg+RPWPynedIug5Jv
jZtZD/zS3yn36nyiptq1feC4Rt1FTghviQvDD0BDH/EaOQFjJEJUkqylr7OxWMcL
Wo3tX+UzUgbaSl4jYdOuxV/eJlSbBxgyF8GWnMgddQXPTQhTMEgWLWRqjCo90JHr
sHu9Jbm3Wlbe+1bhaowjCfVZGFEnxjW6LPIUjKFTTITayc68MGijLCkN2ZVElPfj
pXVD7vLMHlPhN/IGLzyQ3QRduGQwO8OZKp9B6/SyFr/IvUJtMZWr706sWw42svlq
gkwcdy65AgMBAAECggEBAIQNExO/KQw2vz3HwvhsEyC16GWI2K8vmgXPO3pGD6Ug
dIXLGubPVJCF1z84O54gi5cCl2qVNRqV4I9HP/4UuQqLwuzxuCRjQY9GjxnidI0W
avzYZQ8Ihb1zOT8oSSm2uSoC6KhAKhPeWAcdyNwjpXk7VPREkXao8BtZZJx3r5zU
DHQwDNEb59ReTF2QpEugk4BVRyP08keUXXO0ajjdYjGC/ltu6uCANY5Y9Sj0TdWg
Au/5wRYyew21PIuLnpxrRe2erqj44flj80RDxx9CUlKkOcdWq1uWnGT5bIJ9WGfo
a5qF9TKkXk5dB0km7B7FVKosioftCZ0THXeUdGarxVUCgYEA/VYdbI9wKEpUYueQ
5byeRaH8hijoQJBXqGv8YIqIe/tgpoJ85yRAYMhbAXs7Y77q5UZGQdWcdwjQkM6B
ONO9uUuLRPQnMvqJrVAqmPsw+GwxLDvOlIX6Qk/21uMUTtDF0vfT+jruLHnkBvbJ
tFAm8d9NCDqNYmylogot6dUjG0sCgYEA+r6kqJ9/ad2jNgQgVAdq7hfY0giQLHBr
jYyUOpMSt/3Oogmk9lh5DYNBb1PUUasUfUdZXpK4k7Fw/iKF1H8gQrecOH3oLgae
YbfBGEn+drVnqkI8iMTJGbsXPhceK/xe8nNzlM8E4V5dNXuUQcG/6iSabkh3nKr5
6HwNvjv294sCgYEAt6L+vTzUnkATH4agQAgT6oHbXRy2DmcTQ6DTVt/Uw5qamtin
1Z0vlXhmj5JWoJ06BGyGbR58xsR6+xzWCu1h77lVAOzCpW968UjVOAONoeY7Vscb
ngnoOL1iPq5ogCFR5PWEkTS6hT7uDiZCXBRlxpqJaleXOStsfSNH2OKJCjUCgYEA
4Vvy9bLUezu+cs/mll9MVc2NC8iye55WrBPLLZH94uv0iWINp3MA6Yosh3hafUQ7
2BUGV5+a0PNL0L0Kd2ACiLQpbgSLZsKAGudiXwgx8lM8ZqO9cFcdP0kNrLpuXa4n
T9U/7mDZzAxZzbXSG/+dEz3upmvvRRnOHotQdsfCQd0CgYEAj6tLbv7GS2nBfg79
oXPC5366v+YNbgwmdahh2XqIX4fDdjJvKqnbCmEayh8Kith7cxWh/AYzLadkzQoO
N7/+T3+t5YqkcC1H5rflmp8owRYFDbje+RbQ6pNUEFgtZUYuQjCnDNAn2ipSPn5j
/0iD8u2JzW3xjnnrTk4tolW3VVM=
-----END PRIVATE KEY-----
1 change: 1 addition & 0 deletions cimbar-deps/cimbar_js.2026-01-20T0312.js

Large diffs are not rendered by default.

Binary file added cimbar-deps/cimbar_js.2026-01-20T0312.wasm
Binary file not shown.
Loading