PlainApp 中文文档 下载 App

屏幕镜像:WebCodecs + Canvas 实现的远程桌面

入口位置

侧栏点 Screen Mirror(最后一项)。手机端 PlainApp 本身没有专门的屏幕镜像页面——这个功能只有浏览器端有 UI,手机端是后台服务,收到浏览器的"开始镜像"请求时才启动。

界面长什么样

屏幕镜像面板
浏览器里看到的手机实时画面 + 控制工具栏

面板是一个大 Canvas 画布(手机画面实时渲染在这里) + 上方工具栏。工具栏按钮从左到右:

技术栈

PlainApp 屏幕镜像的实现不走 WebRTC(那是 PlainCast 的技术栈),而是:

  1. 手机端用 Android MediaProjection API 捕获屏幕帧
  2. H.264 / H.265 编码(WebCodecs 浏览器解码)
  3. 通过加密的 WebSocket 发到浏览器
  4. 浏览器解码后画到 <canvas> 里

这个路线的好处:不需要任何插件(WebCodecs 已经是现代浏览器标准 API),也不需要额外的信令服务器(WebRTC 需要)。

三大质量模式

模式分辨率帧率适合场景
Auto自适应自适应默认,Wi-Fi 好就升、差就降
HD原始或接近原始15–20 fps看文档界面、做演示、截屏
Smooth降低分辨率25–30 fps操控游戏、滑动滚动、快速交互

切换质量是热切换——点一下工具栏按钮,下一个关键帧生效,不用重启整个会话。

远程控制怎么用

Remote Control 开关打开后:

坐标系统做了归一化——不管浏览器窗口你拉多大,点到画布的什么位置都能准确映射到手机屏幕上对应的实际坐标。全屏切换也不影响映射精度。

截屏与录屏

关于 HTTPS 依赖

WebCodecs API 只在 HTTPS 或 localhost 下才能用。PlainApp 的本地服务器默认已经是 HTTPS(自签名证书),所以没问题。

如果你手动用 http:// 8080 端口开的面板,Screen Mirror 页面会显示"需要 HTTPS"提示,并给一个 HTTPS 链接跳转。点那个链接继续,不要硬开 HTTP 版。

常见问题

问题处理
手机弹窗询问"是否允许屏幕录制"点允许,然后 PlainApp 屏幕镜像开始
画面是黑屏大概率手机端镜像服务挂了,工具栏点 Relaunch 重启
浏览器延迟很高切到 Smooth 模式 + 确认手机和电脑在同一 5 GHz Wi-Fi
远程控制面板没反应确认 Remote Control 开关是亮的;关掉再开试试