DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

liyuhan7 /

liyuhan7/dsh-phone-mirror

Verified

在 DSH 右侧栏投屏并反控安卓手机/平板。scrcpy 内核编 H.264,浏览器 WebCodecs 解码,鼠标键盘直接操作;仅支持 Windows。

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@17b10acf

dsh-phone-mirror

English | 中文

给用 DSH 的开发者:在右侧栏看安卓设备画面,并用鼠标键盘直接操作。

页面示例

CI license

特性

  • 页签常驻右侧栏:在「+」里添加「手机」页签即可投屏,画面按 contain 比例铺满;切换页签保留会话,关闭页签断开并释放设备端进程。
  • 鼠标键盘反控:点按、拖拽、滚轮按 scrcpy 控制协议回传;ASCII 字符走按键注入,中文等非 ASCII 文本经设备剪贴板粘贴,组字时面板底部显示拼音。
  • 声音一起转发:Opus 48 kHz 立体声,经 AudioWorklet 环形缓冲播放,起播缓冲 80 ms、欠载时自适应到 240 ms;设备不支持时自动改为无声会话。
  • 解码在 Worker 线程:拉流、H.264 解码、绘制与音频解码都在 Worker 内完成,DSH 主线程渲染对话或写文件时面板不跟着卡;拿不到 Worker 时退回主线程。
  • 起不来时自动降级:scrcpy 失败后用 adb screencap 周期截图(默认 260 ms 一帧),帧率低但几乎任何能 adb 的设备都能出画面。
  • 一根线到无线:面板底部「转无线」把 USB 调试切到 TCP 并自动连上,拔线后继续投屏;原生 Android 11+ 还能用「配对」走无线调试。

快速开始

环境要求

  • Windows(内置 adb 路径固定为 tools/platform-tools/adb.exe)
  • DSH >= 0.2.0-rc.1 < 0.3.0
  • Node.js 20+(仅首次下载工具与构建时使用)
  • 安卓设备已开启「开发者选项 → USB 调试」并完成授权
  • 转发声音需要 Android 11+

各品牌开启 USB 调试的入口和额外开关见 docs/debugging.md。

安装

# npm 包,预构建安装
dsh plugin --profile <profile> add dsh-phone-mirror
# 或从仓库安装
dsh plugin --profile <profile> add "github:liyuhan7/dsh-phone-mirror"

准备 adb(首次;scrcpy-server.jar 已随仓库提供)

# 在插件目录执行,全局安装后位于 <profile 目录>/node_modules/dsh-phone-mirror
npm run fetch:tools

platform-tools 约 8 MB;系统里已有 adb 时可在配置里指定 adbPath 跳过。

运行

  1. 重启 DSH,右侧栏点「+」添加「手机」页签
  2. 顶部下拉选中设备,点「连接」
  3. 设备弹出「允许 USB 调试吗?」时勾选「始终允许」
  4. 想摆脱数据线:点面板底部「转无线」,提示已切到无线后拔线

预期输出:面板出现设备画面,标题行显示 BKY-W10 · 1048×1600 · 30fps(设备名 · 分辨率 · 实时帧率)。

用法

点按 / 拖拽 / 滚轮    直接操作设备
键盘                 点击画面接管,Esc 交还焦点
全屏                 工具栏「全屏」
画质                 流畅 720 / 标准 1080 / 高清 1600
无线连接             底部「转无线」把 USB 调试切到 TCP 并自动连上
                     底部「配对」填无线调试页上的配对地址与 6 位配对码
断开连接             只断电脑与平板之间的无线通道,USB 不受影响

画面发花或全黑时点「重建画面」:丢弃解码器并重新拉流,由设备重发关键帧。

配置

在 profile 的 cordis.patch.yml 里覆盖:

- id: dsh-phone-mirror
  config:
    maxSize: 1600
    maxFps: 60
    videoBitRate: 8000000
字段 默认 说明
mode auto auto 先试 scrcpy(音频失败后改无声再试),仍失败才降级截图
maxSize 1280 长边像素上限,可被面板的画质档位覆盖
maxFps 60 编码帧率上限
videoBitRate 8000000 编码码率(bps)
screencapIntervalMs 260 降级模式的截图间隔
audio true 转发设备声音;设备不支持时下次直接无声开场
adbPath 空 自定义 adb 路径,留空用插件自带的
serverJar 空 自定义 scrcpy-server.jar 路径

常见问题

adb devices 为空,但手机显示已连接

Windows 把该 USB 接口绑到了厂商驱动(例如华为 HDB)。在设备管理器里手动更新为「Android ADB Interface」,或安装 Google USB Driver 后指定。

dsh plugin 拒绝操作 desktop profile

desktop profile 由 Electron 应用独占托管。直接编辑该 profile 的 package.json,在 dependencies 里加 "dsh-phone-mirror": "link:D:/path/to/dsh-phone-mirror",并把插件名加进 dsh.profile.bundles,然后执行 pnpm install。

没有声音

先看面板上的喇叭按钮:灰色说明这个会话没拿到音频,查 /dsh-phone-mirror/api/status 里的 session.audio 与 session.audioCodec。按钮可用却听不到,检查电脑音量、设备是否静音,以及正在播的 App 是否禁止被捕获。

画面发黑,或帧率只有个位数

付费视频等 DRM 内容走 MediaCodec 的安全通路,只能出黑屏;设备静止时 scrcpy 不产生帧,帧率显示个位数属正常。

许可证

MIT,见 LICENSE;第三方组件见 THIRD-PARTY.md。

—/ 5

No ratings yet

Verified DSH bundle

Commit 17b10acfac22

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout