PoixsDesk 项目说明文档

跨平台Desk

PoixsDesk 项目说明文档

📖 项目简介

PoixsDesk 是一个基于 WebRTC 技术的远程桌面/云电脑系统,支持通过 Web 浏览器远程访问和控制 Windows 桌面。该系统实现了低延迟的屏幕共享、音视频传输和双向输入控制功能。

云电脑架构图

✨ 核心功能

1. 实时屏幕共享

2. 音视频同步传输

3. 远程输入控制

4. 双向数据传输

5. WebSocket 信令

🏗️ 系统架构

整体架构

┌──────────────┐         ┌──────────────┐
│  Web 客户端   │◄───────►│  桌面端程序   │
│              │         │              │
│ - 浏览器播放  │         │ - 屏幕捕获    │
│ - 输入控制    │         │ - 音视频编码  │
└──────┬───────┘         └──────┬───────┘
       │                        │
       │   WebSocket 信令        │
       │◄──────────────────────►│
       │                        │
       │   WebRTC 媒体传输       │
       │◄──────────────────────►│
       │                        │

模块组成

📦 项目结构

PoixsDesk/
├── libcommon/              # 公共库模块
│   ├── client.h/cpp        # RTC客户端
│   ├── crtc_publisher.h/cpp # RTC发布者
│   ├── cinput_device.h/cpp # 输入设备管理
│   ├── cdesktop_capture.h/cpp # 桌面捕获
│   ├── cdata_channel.h/cpp # 数据通道
│   └── ...
├── libdevice/              # 设备控制模块
│   └── window/
│       ├── device.h/cpp    # 输入设备控制
│       └── misc.h/cpp      # 辅助函数
├── PoixsDesk/              # 主程序
│   └── main.cpp            # 程序入口
├── Win/                    # Windows GUI程序
├── Tools/                  # 工具程序
├── www/                    # Web前端
└── build/                  # 构建目录

详细的架构说明请参考 ARCHITECTURE.md

英文文档请参考 README_EN.md

🚀 快速开始

环境要求

编译步骤

  1. 克隆项目
    git clone <repository_url>
    cd PoixsDesk
    
  2. 准备 WebRTC 依赖
    • 下载并编译 Google WebRTC 源码
    • 在 CMakeLists.txt 中配置 WebRTC 路径
  3. 配置 CMake
    mkdir build
    cd build
    cmake .. -DWebRTC_ROOT=D:/Work/webrtc_google/src
    
  4. 编译项目
    cmake --build . --config Release
    
  5. 运行程序
    ./PoixsDesk/PoixsDesk.exe ws://localhost:8080/rtc
    

运行参数

📖 使用说明

桌面端配置

  1. 启动桌面端程序
    PoixsDesk.exe ws://your-signaling-server/rtc
    
  2. 程序会自动
    • 连接到信令服务器
    • 创建 WebRTC 连接
    • 开始捕获桌面和音频
    • 等待客户端连接

Web 客户端使用

  1. 打开浏览器
    • 访问 http://your-server/player.html
  2. 连接到桌面
    • 输入房间名称和用户名
    • 点击连接按钮
  3. 远程控制
    • 使用鼠标点击和移动
    • 使用键盘输入
    • 使用滚轮滚动

Windows 服务模式

可以使用 Windows 服务模式运行,以便开机自启:

# 安装服务
PoisxDeskService.exe install

# 启动服务
PoisxDeskService.exe start

# 停止服务
PoisxDeskService.exe stop

🔧 配置说明

视频编码配置

crtc_publisher 中可以配置:

音频编码配置

网络配置

📝 API 文档

RTC 客户端 API

初始化客户端

chen::crtc_client client;
client.init(0);  // gpu_index: GPU索引
client.Loop("ws://localhost:8080/rtc");  // 连接信令服务器

客户端状态

enum ERtc_Type {
    ERtc_None,              // 未初始化
    ERtc_WebSocket_Init,    // WebSocket初始化
    ERtc_WebSocket,         // WebSocket已连接
    ERtc_WebSocket_Wait,    // 等待响应
    ERtc_Destory,           // 销毁中
    ERtc_Exit               // 退出
};

输入设备 API

鼠标控制

// 绝对鼠标移动
chen::abs_mouse(event, x, y);

// 相对鼠标移动
chen::move_mouse(event, deltaX, deltaY);

// 鼠标按键
chen::button_mouse(event, x, y, button, release);
// button: 0=左键, 1=中键, 2=右键, 3+=扩展键

键盘控制

// 按键按下/释放
chen::keyboard_update(event, vk_code, release, flags);
// vk_code: 虚拟键码
// release: true=释放, false=按下

🔍 故障排查

常见问题

1. 输入事件无效

问题:鼠标或键盘输入无法控制远程桌面

解决方案

2. 视频不显示

问题:Web 客户端无法看到桌面画面

解决方案

3. 高延迟

问题:远程操作有明显延迟

解决方案

4. 音频问题

问题:没有声音或声音卡顿

解决方案

调试工具

🔒 安全建议

认证和授权

数据加密

输入验证

🤝 贡献指南

代码规范

提交流程

  1. Fork 项目
  2. 创建功能分支
  3. 提交更改
  4. 创建 Pull Request

📄 许可证

请查看 LICENSE 文件了解详细许可证信息。

👥 作者

🙏 致谢

📚 相关文档

🐛 问题反馈

如果遇到问题或有建议,请通过以下方式反馈:

🔮 未来计划

功能增强

平台扩展

性能优化


最后更新:2025-01-XX
版本:1.0