DeskShare · Flask MJPEG

MJPEG LIVE STREAM

浏览器看桌面
远程点一点

基于 Flask 的 MJPEG 桌面串流服务,配合 WebSocket 转发鼠标键盘事件。无需安装浏览器插件,打开网页即可观看本机屏幕并远程操控——适合内网协助、演示与临时监控。

MJPEG WebSocket pynput 局域网 托盘启动
deskshare://live 24 FPS ~2.4 Mbps

项目用途

将 Windows / Linux 桌面画面以 MJPEG 流推送到浏览器,并允许远端发送鼠标移动、点击与键盘输入。解决「远程看一眼屏幕」「帮同事点几下」的轻量需求。

核心目标

在可信局域网内,用最少依赖实现「可看可控」的桌面共享,无需 TeamViewer 账号或第三方中继。

  • IT 支持远程查看用户桌面排障
  • 会议室大屏投射本机操作过程
  • 平板 / 手机临时充当无线副屏
  • 自动化测试流程中人工介入点击

设计理念

协议简单、代码透明、部署极快。MJPEG 可被 img 标签与 curl 直接消费;WebSocket 回传归一化坐标,服务端 pynput 注入输入。

  • 完全自建,无第三方云端
  • 可按需裁剪远程控制与文件传输
  • 托盘图形界面 + 命令行双模式
  • 配置写入 %APPDATA%,重启生效

项目特色

轻量内网桌面共享:串流、远程操控与可调画质,Host / Viewer 两端能力合一。

📡

MJPEG 串流

multipart/x-mixed-replace 推送 JPEG 帧,浏览器原生支持,无需 WebRTC 信令服务器。

🖱

远程操控

WebSocket 回传归一化坐标与按键事件,服务端 pynput 注入鼠标键盘。

可调帧率

截图间隔、JPEG 质量、缩放比例均可配置,平衡清晰度与带宽占用。

🔐

可选密码

启动参数或桌面端设置访问令牌,防止局域网内未授权观看与控制。

📊

状态面板

实时 FPS、延迟、连接数显示,便于调优串流参数与排障。

🐍

纯 Python

Flask + mss + Pillow + pynput,依赖清晰,易于二次开发与内网部署。

串流端(Host)

  • mss 高速截屏,按设定 FPS 编码 JPEG
  • Flask 路由 /stream 推送 MJPEG
  • 支持多观看者共享同一帧捕获线程
  • 自适应分辨率缩放,节省带宽
  • 托盘图标 / 命令行 / PyInstaller exe 启动

控制端(Viewer)

  • Canvas 或 img 渲染 MJPEG 帧
  • 鼠标移动 / 单击 / 双击 / 滚轮映射
  • 键盘快捷键转发(可配置黑名单)
  • 全屏模式、适应窗口与原始比例切换
  • 连接状态、FPS 与延迟指示器

交互演示

在浏览器中模拟 MJPEG 串流、远程点击脉冲、观看者管理与画质带宽调优。所有数据均为前端模拟,不连接真实服务。

Demo 1 · MJPEG 画布串流与性能指标

模拟 Flask /stream 路由推送的 JPEG 帧序列,展示 FPS、延迟与带宽读数。

0FPS
12延迟 ms
0累计帧
0.0Mbps
目标 FPS:

Demo 2 · 远程点击脉冲与事件日志

在上方画布点击,或使用下方快捷键按钮,模拟 WebSocket 远程输入注入。

快捷键注入:
等待远程事件…
提示:画布内 点击 亦可注入

Demo 3 · 观看者计数与连接管理

模拟多观众共享同一 MJPEG 帧源时的连接列表与在线人数。

3
在线观看
峰值: 3

Demo 4 · 画质滑块、带宽仪表与密码门

调节 JPEG 质量与缩放比例,观察带宽变化;输入令牌模拟访问鉴权。

实时带宽估算
0.0 Mbps · 0 KB/帧

状态:未鉴权(演示模式开放)

技术栈

Python 后端 + 浏览器原生能力,无重型客户端依赖。

Flaskflask-sockmssPillow pynputWebSocketMJPEGpystray PyInstaller

截屏线程:mss.grab → PIL resize → JPEG → multipart 推送;WebSocket 回传 move/click/key,pynput 注入输入。

快速上手

Step 1

克隆仓库 git clone 或下载 Release,安装依赖 pip install -r requirements.txt

Step 2

运行 python deskshare_desktop.py,在托盘窗口设置端口与权限,或 python server.py --port 8080

Step 3

浏览器访问提示的局域网地址,可选输入令牌,即可观看并(若允许)远程操控。

常见问题

Q:公网可以直接暴露吗?

强烈不建议。MJPEG 无内置加密,远程控制风险高。请仅在可信内网使用,或叠加 VPN / 反向代理 TLS 与强令牌。

Q:延迟大概多少?

局域网通常 50–200ms,取决于分辨率、质量、Wi-Fi 状况与截屏 FPS。低于 TeamViewer 中继方案,但 MJPEG 带宽开销更大。

Q:支持多显示器吗?

当前以主显示器截屏为主,可在配置中指定 monitor 索引。多屏切换属于 roadmap 方向。

Q:与 RDP / VNC 有何区别?

RDP/VNC 协议更高效、功能更全;DeskShare 优势在于零客户端安装、Web 即开、源码极简,适合临时查看与轻量协助。

内网桌面共享,现在就试试

下载 DeskShare,一条命令启动串流。观众打开浏览器即可观看——用完记得关闭远程控制。