7.7 KiB
7.7 KiB
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(核心功能,必须实现)
- 核心网络抽象层
- 基础协议定义
- Android Host 角色
- Windows Client 角色
- USB RNDIS 连接支持
P1(重要功能,优先实现)
- 会话管理
- 编解码器集成
- 输入事件处理
- Wi-Fi 连接支持
- 性能优化
P2(增强功能,后续实现)
- Peer 角色支持
- 一对多广播
- 多种编解码器
- 以太网支持
- 高级性能调优
P3(扩展功能,可选实现)
-
文件传输功能
- 基础文件传输
- 断点续传
- 多文件并发传输
- 传输进度和校验
-
远程摄像头功能
- 摄像头设备枚举
- 视频流捕获和传输
- 摄像头参数控制
- 多摄像头切换
-
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. 风险与应对
技术风险
-
跨平台兼容性
- 风险:不同平台 API 差异大
- 应对:充分抽象,建立完善的适配层
-
性能瓶颈
- 风险:延迟或帧率不达标
- 应对:早期性能测试,持续优化
-
网络稳定性
- 风险:不同网络环境下的连接问题
- 应对:完善的错误处理和重连机制
开发风险
-
依赖管理
- 风险:第三方库版本冲突
- 应对:使用 vcpkg/Conan 等包管理器
-
测试环境
- 风险:跨平台测试设备不足
- 应对:建立 CI/CD,自动化测试
6. 下一步行动
-
立即开始:
- 搭建项目目录结构
- 配置 CMake 构建系统
- 设置基础依赖(FlatBuffers)
-
第一周目标:
- 完成项目结构搭建
- CMake 可在 Windows 和 Android 上编译通过
- 创建核心库基础框架
- 定义 FlatBuffers Schema
-
第一个月目标:
- 网络抽象层实现
- 基础协议完成
- Android 平台适配层框架
- 简单的端到端测试