Skip to content

项目名称

Live777播放器

基本信息

项目详情
项目名称ipkvm
小组名称ipkvm
项目方向Web 前端 / 流媒体 / 嵌入式硬件控制
项目周期2026年7月 — 2026年8月

小组成员

姓名角色GitHub
牛玥雯组长@moon-130
蔡澍组员@CaiCai1404

项目简介

IP‑KVM 是基于树莓派 4B + Live777 WebRTC SFU 引擎构建的硬件级带外远程控制系统。项目实现浏览器零插件访问,完成HDMI 视频采集 WebRTC 低延迟拉流、USB HID 键鼠模拟远程注入、ATX 远程电源控制三大核心能力,提供完整 Web 管理 UI、实时流媒体状态监控、多会话冲突保护、Systemd 开机自启,同时适配桌面与移动端访问。

背景:传统远程桌面(RDP/VNC)依赖被控主机操作系统正常运行,在 BIOS 设置、系统崩溃、重装系统场景完全失效。本项目基于低成本树莓派硬件,打造一套开箱即用的 DIY IP‑KVM 方案,不依赖被控主机任何软件,实现硬件层面远程运维。

技术栈

前端

| 技术 | 版本 | 用途 | TypeScript |5.6 |类型安全(7 项 strict 标志全开) React |18.3 |UI 框架 Tailwind CSS + daisyUI |4.3 / 5.7 |原子化 CSS + 语义组件库 Zustand |5.0 |状态管理 + localStorage 持久化配置 whip‑whep |1.2.0 |WHEP WebRTC 拉流协议客户端 Vite |5.4 |构建工具和开发服务器 ESLint |10.x |strictTypeChecked 规则集 Playwright |1.62 |E2E 自动化 UI 测试

后端(RTSP 桥接服务)

| 技术 | 用途 | Rust + axum 0.8 KVM |控制网关,HID 指令转发、电源控制、多用户会话冲突保护,编译期内存安全 tokio |异步运行时 tower‑http| CORS、鉴权、请求日志中间件 tracing |结构化 JSON 操作审计日志 Systemd |服务开机自启、进程守护、故障自动重启

硬件 用途 树莓派 4B 主控单元,运行网关与 Live777 服务 HDMI‑USB 采集卡 采集被控主机 HDMI 画面输出 USB HID 虚拟键鼠 模拟键盘、鼠标硬件输入 ATX 继电器模块 远程控制被控主机电源开关机、硬重启

核心功能

1.WebRTC/WHEP 低延迟视频拉流 — 通过 WHEP 协议接收采集卡视频流,看门狗自动重连,实时回传被控主机画面,支持 BIOS、开机 Logo、系统崩溃画面查看。 2.远程 HID 键鼠注入 — Web 端捕获键盘、鼠标、滚轮事件,Rust 网关转发至 USB HID 设备,硬件级输入,不依赖被控主机系统。支持粘贴文本、组合快捷键。 3.ATX 硬件电源控制 — Web 界面一键执行开机、关机、强制硬重启,通过 GPIO 继电器模拟机箱电源按键动作。 4.完整播放器控制能力 — 画面缩放、全屏、画中画、截图、视频参数调节,键盘快捷键支持。 实时流状态统计 — 分辨率、码率 (kbps)、帧率 (fps)、RTT (ms)、抖动 (ms)、丢包率 (%)、编解码器、会话状态,1 秒轮询刷新。 5.多会话冲突保护 — Rust 网关做会话管理,同一时间仅允许单用户操作键鼠与电源,避免多人同时操作冲突,拒绝非法抢占。 6.Web 端与移动端适配 — 桌面三栏布局(视频区、控制面板、设置);移动端适配触摸操作,虚拟软键盘,可折叠控制面板。 7.署与 CI 保障 — Systemd 服务配置实现树莓派开机自启;Playwright E2E 测试;GitHub Actions 完成 TypeCheck、Build、Rust 编译检查。

Web端主界面


项目截图

Web 端主界面

Web端主界面

移动端界面

移动端主界面

系统架构图

┌─────────────────────────────────────────────────────┐ │ 浏览器(IP‑KVM Web客户端) │ │ │ │ ┌──────────┐ ┌──────────┐ ┌────────┐ ┌──────┐ │ │ │ WHEP拉流 │ │键鼠事件上报│ │电源控制 │ │流统计 │ │ │ │视频播放 │ │键盘鼠标捕获│ │UI面板 │ │码率RTT│ │ │ └────┬─────┘ └────┬─────┘ └────────┘ └──────┘ │ │ │ │ │ │ │ │ WHEP订阅 │ HTTP JSON API │ └───────┼──────────────┼─────────────────────────────┘ │ │ ▼ ▼ ┌──────────────────────────────────────────────────┐ │ 树莓派4B主机 │ │ ┌──────────────┐ ┌────────────────────┐ │ │ │ Live777 SFU │◄───────│ Rust KVM控制网关 │ │ │ │ WebRTC服务 │ │会话管理/HID/ATX控制 │ │ │ └──────┬───────┘ └───────┬────────────┘ │ └────────┼─────────────────────────┼───────────────┘ │ │ ▼ ▼ ┌──────────────────┐ ┌────────────────────────┐ │ HDMI‑USB采集卡 │ │ USB HID键鼠模拟器 │ │ 采集被控主机画面 │ │ GPIO‑ATX继电器电源控制 │ └────────┬─────────┘ └──────────┬─────────────┘ │ │ ▼ ▼ ┌──────────────────────────────────────────────────┐ │ 被控目标计算机 │ │ (BIOS / 系统崩溃 / Windows / Linux均可) │ └──────────────────────────────────────────────────┘

项目源码: https://github.com/moon‑130/2026‑ipkvm

## 项目亮点

硬件级带外控制:不依赖被控主机操作系统,支持 BIOS 设置、系统蓝屏、重装系统场景远程操作,区别于普通远程桌面软件。
类型安全前后端体系:前端 TypeScript 全部 strict 严格模式;Rust 网关编译期内存安全,杜绝空指针、数据竞争,适合 7×24 小时嵌入式设备长期运行。
多用户会话冲突防护:Rust 网关实现会话锁机制,防止多网页同时连接造成键鼠乱输入,保障硬件操作安全。
完整运维能力闭环:WebRTC 低延迟视频流 + HID 键鼠模拟 + ATX 硬件电源控制,三大能力一体化集成,一套页面完成全部运维操作。
嵌入式部署适配:提供 Systemd 单元配置,树莓派上电自动拉起全部服务,故障自动重启,适配无人值守硬件设备场景。
自动化测试保障:Playwright 多场景 E2E 测试,GitHub Actions CI 自动执行 TypeCheck/Lint/Build/Rust 编译校验;桌面、移动端 UI 同时覆盖。

## 项目总结

本项目基于树莓派硬件,结合 Live777 WebRTC 流媒体引擎,从零实现一套完整 DIY IP‑KVM 带外远程控制系统。通过 TypeScript+Rust 前后端类型安全体系,完成视频流接收、键鼠硬件注入、远程电源控制全套功能,并解决多用户并发冲突、嵌入式开机部署、跨端 UI 适配等工程问题。
主要收获:
深入掌握 WebRTC WHEP 协议、媒体流传输、低延迟流媒体调优;
理解 Linux 嵌入式下 USB HID 设备、GPIO 硬件继电器控制、Systemd 服务部署;
实践 Rust 网关服务开发,体会编译期安全在硬件控制场景的价值;
学会多会话状态管理,解决多客户端访问下硬件操作互斥冲突;
在浏览器‑嵌入式硬件协同的软硬结合项目中积累调试与部署经验。

西安电子科技大学广州研究院