Files
DisplayFlow/DEVELOPMENT_PLAN.md
2025-12-11 22:58:25 +08:00

7.7 KiB
Raw Permalink Blame History

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.264MediaCodec (Android) / Media Foundation (Windows)
    • VP8libvpx
    • 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 平台适配层框架
    • 简单的端到端测试