原项目(HOScrcpy,官方 OpenHarmony 工具箱)
https://gitcode.com/OpenHarmonyToolkitsPlaza/HOScrcpy/releases

本项目是在它之后做的:SDK 视频流沿用同一套设备端服务端 SO(华为签名产物),
另外补了开发板可用的 DRM 直推通路与色彩修正,并把连接流程做薄。没有它的基础就没有这个项目,
感谢原项目作者。

本项目(OpenHarmonyScrcpy ·windows版基于python开发)
https://gitee.com/micheng0326/open-harmony-scrcpy-win

一、起因:官方 HOScrcpy 在我这块开发板上不好用

事情的起点很朴素:手上有一块 RK3568 的 OpenHarmony 开发板,我要在上面调界面。

先试的是官方工具 —— HOScrcpy(OpenHarmony 工具箱里的投屏项目,见文末原项目地址)。
它能连上,但在我这块板子上基本无法使用:

  1. 视频流花屏。画面能出来,但颜色/色块是错的(截图取证过),根本没法用来看 UI 是否正确 ——
    而"看 UI 对不对"恰恰是投屏的全部意义。
  2. 图片流很卡、不流畅。切到图片流能看清,但它是截图轮询:滑一下列表,画面是一帧一帧跳的,
    拖动、动画完全没法判断流畅度。
  3. 连接设备那一步不顺手。页面上没有"直接填 IP:端口 就连过去"的快捷入口,还要装java、hdc等环境,对一些不懂技术的同事不友好

于是就有了这个项目:先把"能看清、能动、能操作"这三件事做对。

后来才知道,花屏的根子在色彩通路的偏移(这也是本项目里 libdrmfix.so 这个补丁存在的原因),
而卡顿的根子是用截图冒充视频流。这两件事都不是"调参数"能解决的,必须换通路 —— 于是有了下面的四种模式。


二、四种投屏模式:不是"多而全",而是"按设备挑一条能活的"

鸿蒙设备差异极大:手机是零售版固件(有签名校验),开发板是开发版固件(可加载自建扩展),
芯片平台又分 Rockchip / 海思等。指望一条通路打天下不现实,所以这里做了四条,按优先级排:

模式适合谁怎么出画面关键特点
SDK视频流华为官方鸿蒙设备 / 手机调设备端厂商签名的投屏服务(uitest + 服务端 SO + gRPC)零售机上唯一可用的视频流;内容驱动,屏幕静止时不出帧,页面先显示当前画面静帧
DRM视频流Rockchip 平台(RK3568 / RK3588 …)DRM → RGA → MPP 硬编码直推免签名、延迟最低、设备 CPU 占用最小;10/30/60fps 可选,静止画面也持续出帧 —— 开发板上就是靠它解决花屏和卡顿的
OHOS视频流开发版固件OH_AVScreenCapture + 硬件 H.264通用视频流;零售机因代码签名校验加载不了自建扩展
JPEG图片流兜底设备端 JPEG 流;扩展起不来则自动降级为系统截图轮播任何设备都能出画,代价是卡顿(降级后约 3fps)、设备 CPU 偏高

**华为设备先试 SDK;开发板先试 DRM;DRM 不行试 OHOS;都不行用 JPEG 保底。**

三、把连接那一层做薄:一个输入框 + 一个按钮

这一点改得很克制,只补了官方工具上缺的那个"快捷入口":页面上直接填 IP:端口 就能连,
连过的地址会进历史下拉,下次选一下就行。目标只有一个 —— 从插上设备到看见画面,三步以内。

  1. 下载仓库,整个目录放在一起(自带便携 Python 运行时和 hdc.exe,不需要装 Python / 不需要装 SDK);
  2. 双击 启动投屏_Web版.bat(黑窗口是实时日志,关掉即停服务)或者直接运行打包好的OpenHarmonyScrcpy.exe;
  3. 浏览器打开 http://localhost:6789 → 如何使用自行探索, 都很简单。

四、它不适合干什么(先把边界说清楚)

  • 不是所有设备都能跑 SDK 模式:需要设备 uitest 支持 --extension-name,且能加载配对的服务端 SO。
    实测老固件(uitest 5.0.1.2)只加载默认扩展 ⇒ 这类设备请用 DRM / JPEG。
  • DRM 模式只认 Rockchip 平台:需要 librga.z.so、librockchip_mpp.z.so、/dev/dri/card0。
  • OHOS 模式只认开发版固件:零售机的代码签名校验会拒绝自建采集扩展。
  • JPEG 是兜底,不是主力:降级轮播约 3fps,设备 CPU 占用是四种里最高的。
  • 不提供"降分辨率换流畅"的开关:画面就是设备原始分辨率(手机 1320×2856、开发板 1920×1080 都按原样投)。
  • Windows 优先:Linux / macOS 启动脚本在,但尚未实机验证,所以不在发布包里承诺。

五、许可与第三方声明(重要)

  • 项目代码采用 木兰宽松许可证第 2 版(Mulan PSL v2)。
  • 仓库 agent/ 目录里包含并非本项目开发的设备端二进制(agent_sdk*.so、libscrcpy_server*.z.so),
    它们仅供「SDK视频流」模式使用,来自华为 HOScrcpy SDK 1.0.18-beta、为华为签名产物,
    权利归华为技术有限公司所有。本项目原样转发、未作修改,仅为连接你自有设备提供互操作性;
    LICENSE 不覆盖这些文件,不提供任何担保,商业使用 / 再分发请自行取得权利人授权。
    其余三个模式使用的工具与扩展(drm_rga_mpp_tcp、libdrmfix.so、libscreen_cast.z.so、
    libscreen_jpeg.z.so)是本项目自研的。
  • 请只用于连接你自有或已获授权测试的设备。

六、写在最后

这个项目最开始只是我自己要用:一块开发板、一个花屏的投屏、一个卡成幻灯片的图片流。
后来能跑通、能长期跑住,就顺手整理出来,给有缘者使用。

不承诺它适配所有设备,也不保证每条通路在你的固件上都可用 ,如果对你有用, 记得点赞收藏

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐