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

┌──────────────┐ ┌──────────────┐
│ 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
git clone <repository_url>
cd PoixsDesk
mkdir build
cd build
cmake .. -DWebRTC_ROOT=D:/Work/webrtc_google/src
cmake --build . --config Release
./PoixsDesk/PoixsDesk.exe ws://localhost:8080/rtc
ws://localhost:8080/rtc:WebSocket 信令服务器地址PoixsDesk.exe ws://your-signaling-server/rtc
http://your-server/player.html可以使用 Windows 服务模式运行,以便开机自启:
# 安装服务
PoisxDeskService.exe install
# 启动服务
PoisxDeskService.exe start
# 停止服务
PoisxDeskService.exe stop
在 crtc_publisher 中可以配置:
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 // 退出
};
// 绝对鼠标移动
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=按下
问题:鼠标或键盘输入无法控制远程桌面
解决方案:
问题:Web 客户端无法看到桌面画面
解决方案:
问题:远程操作有明显延迟
解决方案:
问题:没有声音或声音卡顿
解决方案:
请查看 LICENSE 文件了解详细许可证信息。
如果遇到问题或有建议,请通过以下方式反馈:
最后更新:2025-01-XX
版本:1.0