322 lines
7.7 KiB
Markdown
322 lines
7.7 KiB
Markdown
|
|
# DisplayFlow 开发计划
|
|||
|
|
|
|||
|
|
## 1. 项目阶段划分
|
|||
|
|
|
|||
|
|
### 阶段一:核心架构搭建(Foundation Phase)
|
|||
|
|
**目标**:建立跨平台核心库的基础架构和构建系统
|
|||
|
|
|
|||
|
|
#### 1.1 构建系统配置
|
|||
|
|
- [ ] 配置 CMake 作为统一构建系统
|
|||
|
|
- [ ] 设置跨平台编译配置(Android NDK、Windows MSVC)
|
|||
|
|
- [ ] 配置依赖管理(FlatBuffers、编解码库等)
|
|||
|
|
- [ ] 建立单元测试框架
|
|||
|
|
|
|||
|
|
#### 1.2 核心库基础模块
|
|||
|
|
- [ ] **网络抽象层(Network Abstraction)**
|
|||
|
|
- 统一网络接口定义
|
|||
|
|
- RNDIS/USB 网络检测
|
|||
|
|
- Wi-Fi 网络管理
|
|||
|
|
- 以太网支持
|
|||
|
|
- 自动连接选择算法
|
|||
|
|
|
|||
|
|
- [ ] **NAT 穿透模块(NAT Traversal)**
|
|||
|
|
- STUN 客户端实现
|
|||
|
|
- TURN 客户端实现
|
|||
|
|
- ICE 协议实现
|
|||
|
|
- 候选地址收集
|
|||
|
|
- 连接检查和路径选择
|
|||
|
|
- 自动连接建立
|
|||
|
|
|
|||
|
|
- [ ] **协议层(Protocol Layer)**
|
|||
|
|
- FlatBuffers Schema 定义
|
|||
|
|
- 消息序列化/反序列化
|
|||
|
|
- 会话建立协议
|
|||
|
|
- 视频帧传输协议
|
|||
|
|
- 输入事件协议
|
|||
|
|
|
|||
|
|
- [ ] **会话管理(Session Management)**
|
|||
|
|
- 会话创建与销毁
|
|||
|
|
- 角色管理(Host/Client/Peer)
|
|||
|
|
- 一对多会话支持
|
|||
|
|
- 会话状态机
|
|||
|
|
|
|||
|
|
- [ ] **编解码抽象(Codec Abstraction)**
|
|||
|
|
- 编解码器接口定义
|
|||
|
|
- H.264 硬件加速支持
|
|||
|
|
- VP8 软件编解码
|
|||
|
|
- MJPEG 支持
|
|||
|
|
- 自适应编解码器选择
|
|||
|
|
|
|||
|
|
- [ ] **文件传输模块(File Transfer)**
|
|||
|
|
- 文件传输协议定义
|
|||
|
|
- 断点续传机制
|
|||
|
|
- 多文件并发传输
|
|||
|
|
- 传输进度跟踪
|
|||
|
|
- 文件校验(MD5/SHA256)
|
|||
|
|
- 传输队列管理
|
|||
|
|
|
|||
|
|
### 阶段二:平台适配层实现(Platform Adaptation Phase)
|
|||
|
|
**目标**:实现各平台的显示捕获和渲染功能
|
|||
|
|
|
|||
|
|
#### 2.1 Android 平台实现
|
|||
|
|
- [ ] **显示捕获**
|
|||
|
|
- MediaProjection API 集成
|
|||
|
|
- ImageReader 帧获取
|
|||
|
|
- 屏幕分辨率检测
|
|||
|
|
- 帧率控制
|
|||
|
|
|
|||
|
|
- [ ] **摄像头捕获**
|
|||
|
|
- Camera2 API / NDK Camera API 集成
|
|||
|
|
- 摄像头设备枚举
|
|||
|
|
- 视频流捕获
|
|||
|
|
- 摄像头参数控制(分辨率、帧率、对焦等)
|
|||
|
|
- 多摄像头支持
|
|||
|
|
|
|||
|
|
- [ ] **输入处理**
|
|||
|
|
- 触摸事件捕获
|
|||
|
|
- 输入事件转发
|
|||
|
|
|
|||
|
|
- [ ] **网络层**
|
|||
|
|
- Android USB RNDIS 支持
|
|||
|
|
- Wi-Fi 网络管理
|
|||
|
|
- 网络权限处理
|
|||
|
|
|
|||
|
|
#### 2.2 Windows 平台实现
|
|||
|
|
- [ ] **虚拟显示器**
|
|||
|
|
- IddCx 驱动框架集成
|
|||
|
|
- 虚拟显示器创建
|
|||
|
|
- 分辨率动态调整
|
|||
|
|
|
|||
|
|
- [ ] **摄像头捕获**
|
|||
|
|
- DirectShow / Media Foundation 集成
|
|||
|
|
- 摄像头设备枚举
|
|||
|
|
- 视频流捕获
|
|||
|
|
- 摄像头参数控制
|
|||
|
|
- 多摄像头支持
|
|||
|
|
|
|||
|
|
- [ ] **渲染引擎**
|
|||
|
|
- DirectX 渲染管道
|
|||
|
|
- 视频帧解码与显示
|
|||
|
|
- 性能优化
|
|||
|
|
|
|||
|
|
- [ ] **输入处理**
|
|||
|
|
- 键盘事件捕获
|
|||
|
|
- 鼠标事件捕获
|
|||
|
|
- 输入事件转发
|
|||
|
|
|
|||
|
|
- [ ] **网络层**
|
|||
|
|
- USB RNDIS 检测
|
|||
|
|
- Wi-Fi 网络管理
|
|||
|
|
- 以太网支持
|
|||
|
|
|
|||
|
|
### 阶段三:角色层实现(Role Implementation Phase)
|
|||
|
|
**目标**:实现 Host、Client、Peer 三种角色的完整功能
|
|||
|
|
|
|||
|
|
#### 3.1 主机角色(Host Role)
|
|||
|
|
- [ ] 屏幕捕获集成
|
|||
|
|
- [ ] 视频编码流水线
|
|||
|
|
- [ ] 数据发送逻辑
|
|||
|
|
- [ ] 一对多广播支持
|
|||
|
|
- [ ] 性能监控与自适应
|
|||
|
|
|
|||
|
|
#### 3.2 客户端角色(Client Role)
|
|||
|
|
- [ ] 数据接收逻辑
|
|||
|
|
- [ ] 视频解码流水线
|
|||
|
|
- [ ] 渲染显示集成
|
|||
|
|
- [ ] 输入事件处理
|
|||
|
|
- [ ] 延迟优化
|
|||
|
|
|
|||
|
|
#### 3.3 对等角色(Peer Role)
|
|||
|
|
- [ ] 同时运行 Host 和 Client 逻辑
|
|||
|
|
- [ ] 双向数据流管理
|
|||
|
|
- [ ] 资源竞争处理
|
|||
|
|
- [ ] 性能平衡
|
|||
|
|
|
|||
|
|
### 阶段四:集成与优化(Integration & Optimization Phase)
|
|||
|
|
**目标**:整合各模块,优化性能,完善功能
|
|||
|
|
|
|||
|
|
#### 4.1 系统集成
|
|||
|
|
- [ ] 端到端功能测试
|
|||
|
|
- [ ] 多场景验证
|
|||
|
|
- [ ] 错误处理与恢复
|
|||
|
|
- [ ] 日志系统
|
|||
|
|
|
|||
|
|
#### 4.2 性能优化
|
|||
|
|
- [ ] 延迟优化(目标 < 30ms)
|
|||
|
|
- [ ] 带宽优化
|
|||
|
|
- [ ] CPU/GPU 使用优化
|
|||
|
|
- [ ] 内存管理优化
|
|||
|
|
|
|||
|
|
#### 4.3 稳定性提升
|
|||
|
|
- [ ] 异常处理
|
|||
|
|
- [ ] 网络断线重连
|
|||
|
|
- [ ] 资源清理
|
|||
|
|
- [ ] 压力测试
|
|||
|
|
|
|||
|
|
### 阶段五:测试与文档(Testing & Documentation Phase)
|
|||
|
|
**目标**:完善测试覆盖,编写完整文档
|
|||
|
|
|
|||
|
|
#### 5.1 测试
|
|||
|
|
- [ ] 单元测试覆盖
|
|||
|
|
- [ ] 集成测试
|
|||
|
|
- [ ] 跨平台兼容性测试
|
|||
|
|
- [ ] 性能基准测试
|
|||
|
|
|
|||
|
|
#### 5.2 文档
|
|||
|
|
- [ ] API 文档
|
|||
|
|
- [ ] 架构设计文档
|
|||
|
|
- [ ] 用户使用指南
|
|||
|
|
- [ ] 开发者指南
|
|||
|
|
- [ ] 部署文档
|
|||
|
|
|
|||
|
|
## 2. 技术选型
|
|||
|
|
|
|||
|
|
### 2.1 核心依赖
|
|||
|
|
- **序列化**:Google FlatBuffers
|
|||
|
|
- **编解码**:
|
|||
|
|
- H.264:MediaCodec (Android) / Media Foundation (Windows)
|
|||
|
|
- VP8:libvpx
|
|||
|
|
- MJPEG:自定义实现
|
|||
|
|
- **网络**:原生 Socket API + 平台特定网络库
|
|||
|
|
- **NAT 穿透**:
|
|||
|
|
- STUN/TURN 客户端(自实现或使用 libnice/libjuice)
|
|||
|
|
- ICE 协议实现
|
|||
|
|
- **构建系统**:CMake 3.15+
|
|||
|
|
|
|||
|
|
### 2.2 平台特定依赖
|
|||
|
|
- **Android**:
|
|||
|
|
- NDK r21+
|
|||
|
|
- MediaProjection API
|
|||
|
|
- Camera2 API / NDK Camera API
|
|||
|
|
- USB Host API
|
|||
|
|
- **Windows**:
|
|||
|
|
- Windows SDK 10.0.19041.0+
|
|||
|
|
- DirectX 11/12
|
|||
|
|
- IddCx 1.4+
|
|||
|
|
- DirectShow / Media Foundation(摄像头)
|
|||
|
|
|
|||
|
|
## 3. 开发优先级
|
|||
|
|
|
|||
|
|
### P0(核心功能,必须实现)
|
|||
|
|
1. 核心网络抽象层
|
|||
|
|
2. 基础协议定义
|
|||
|
|
3. Android Host 角色
|
|||
|
|
4. Windows Client 角色
|
|||
|
|
5. USB RNDIS 连接支持
|
|||
|
|
|
|||
|
|
### P1(重要功能,优先实现)
|
|||
|
|
1. 会话管理
|
|||
|
|
2. 编解码器集成
|
|||
|
|
3. 输入事件处理
|
|||
|
|
4. Wi-Fi 连接支持
|
|||
|
|
5. 性能优化
|
|||
|
|
|
|||
|
|
### P2(增强功能,后续实现)
|
|||
|
|
1. Peer 角色支持
|
|||
|
|
2. 一对多广播
|
|||
|
|
3. 多种编解码器
|
|||
|
|
4. 以太网支持
|
|||
|
|
5. 高级性能调优
|
|||
|
|
|
|||
|
|
### P3(扩展功能,可选实现)
|
|||
|
|
1. **文件传输功能**
|
|||
|
|
- 基础文件传输
|
|||
|
|
- 断点续传
|
|||
|
|
- 多文件并发传输
|
|||
|
|
- 传输进度和校验
|
|||
|
|
|
|||
|
|
2. **远程摄像头功能**
|
|||
|
|
- 摄像头设备枚举
|
|||
|
|
- 视频流捕获和传输
|
|||
|
|
- 摄像头参数控制
|
|||
|
|
- 多摄像头切换
|
|||
|
|
|
|||
|
|
3. **NAT 穿透功能(TURN/STUN)**
|
|||
|
|
- STUN 客户端实现
|
|||
|
|
- TURN 客户端实现
|
|||
|
|
- ICE 协议集成
|
|||
|
|
- 互联网连接支持
|
|||
|
|
- 自动路径选择
|
|||
|
|
|
|||
|
|
## 4. 里程碑
|
|||
|
|
|
|||
|
|
### Milestone 1: 核心架构完成(4周)
|
|||
|
|
- CMake 构建系统就绪
|
|||
|
|
- 核心库基础模块框架完成
|
|||
|
|
- 网络抽象层可用
|
|||
|
|
- 协议定义完成
|
|||
|
|
|
|||
|
|
### Milestone 2: Android Host 可用(6周)
|
|||
|
|
- Android 平台适配层完成
|
|||
|
|
- 屏幕捕获功能实现
|
|||
|
|
- 基础编码与发送功能
|
|||
|
|
- 可通过 USB RNDIS 发送视频流
|
|||
|
|
|
|||
|
|
### Milestone 3: Windows Client 可用(8周)
|
|||
|
|
- Windows 平台适配层完成
|
|||
|
|
- 虚拟显示器创建
|
|||
|
|
- 基础解码与渲染功能
|
|||
|
|
- 可接收并显示视频流
|
|||
|
|
|
|||
|
|
### Milestone 4: 端到端可用(10周)
|
|||
|
|
- Host-Client 完整流程打通
|
|||
|
|
- 输入事件双向传输
|
|||
|
|
- 基础性能达标(延迟 < 50ms)
|
|||
|
|
- 稳定性基本保证
|
|||
|
|
|
|||
|
|
### Milestone 5: 生产就绪(12周+)
|
|||
|
|
- 所有核心功能完成
|
|||
|
|
- 性能优化达标(延迟 < 30ms)
|
|||
|
|
- 测试覆盖充分
|
|||
|
|
- 文档完整
|
|||
|
|
|
|||
|
|
### Milestone 6: 扩展功能(16周+)
|
|||
|
|
- 文件传输功能完成
|
|||
|
|
- 远程摄像头功能完成
|
|||
|
|
- 扩展功能测试和优化
|
|||
|
|
- 用户体验优化
|
|||
|
|
|
|||
|
|
## 5. 风险与应对
|
|||
|
|
|
|||
|
|
### 技术风险
|
|||
|
|
1. **跨平台兼容性**
|
|||
|
|
- 风险:不同平台 API 差异大
|
|||
|
|
- 应对:充分抽象,建立完善的适配层
|
|||
|
|
|
|||
|
|
2. **性能瓶颈**
|
|||
|
|
- 风险:延迟或帧率不达标
|
|||
|
|
- 应对:早期性能测试,持续优化
|
|||
|
|
|
|||
|
|
3. **网络稳定性**
|
|||
|
|
- 风险:不同网络环境下的连接问题
|
|||
|
|
- 应对:完善的错误处理和重连机制
|
|||
|
|
|
|||
|
|
### 开发风险
|
|||
|
|
1. **依赖管理**
|
|||
|
|
- 风险:第三方库版本冲突
|
|||
|
|
- 应对:使用 vcpkg/Conan 等包管理器
|
|||
|
|
|
|||
|
|
2. **测试环境**
|
|||
|
|
- 风险:跨平台测试设备不足
|
|||
|
|
- 应对:建立 CI/CD,自动化测试
|
|||
|
|
|
|||
|
|
## 6. 下一步行动
|
|||
|
|
|
|||
|
|
1. **立即开始**:
|
|||
|
|
- 搭建项目目录结构
|
|||
|
|
- 配置 CMake 构建系统
|
|||
|
|
- 设置基础依赖(FlatBuffers)
|
|||
|
|
|
|||
|
|
2. **第一周目标**:
|
|||
|
|
- 完成项目结构搭建
|
|||
|
|
- CMake 可在 Windows 和 Android 上编译通过
|
|||
|
|
- 创建核心库基础框架
|
|||
|
|
- 定义 FlatBuffers Schema
|
|||
|
|
|
|||
|
|
3. **第一个月目标**:
|
|||
|
|
- 网络抽象层实现
|
|||
|
|
- 基础协议完成
|
|||
|
|
- Android 平台适配层框架
|
|||
|
|
- 简单的端到端测试
|
|||
|
|
|