OpenHarmony投屏工具
原项目(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 工具箱里的投屏项目,见文末原项目地址)。
它能连上,但在我这块板子上基本无法使用:
- 视频流花屏。画面能出来,但颜色/色块是错的(截图取证过),根本没法用来看 UI 是否正确 ——
而"看 UI 对不对"恰恰是投屏的全部意义。 - 图片流很卡、不流畅。切到图片流能看清,但它是截图轮询:滑一下列表,画面是一帧一帧跳的,
拖动、动画完全没法判断流畅度。 - 连接设备那一步不顺手。页面上没有"直接填
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:端口 就能连,
连过的地址会进历史下拉,下次选一下就行。目标只有一个 —— 从插上设备到看见画面,三步以内。
- 下载仓库,整个目录放在一起(自带便携 Python 运行时和
hdc.exe,不需要装 Python / 不需要装 SDK); - 双击
启动投屏_Web版.bat(黑窗口是实时日志,关掉即停服务)或者直接运行打包好的OpenHarmonyScrcpy.exe; - 浏览器打开 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)是本项目自研的。 - 请只用于连接你自有或已获授权测试的设备。
六、写在最后
这个项目最开始只是我自己要用:一块开发板、一个花屏的投屏、一个卡成幻灯片的图片流。
后来能跑通、能长期跑住,就顺手整理出来,给有缘者使用。
不承诺它适配所有设备,也不保证每条通路在你的固件上都可用 ,如果对你有用, 记得点赞收藏
更多推荐



所有评论(0)