OpenHarmony投屏工具OHScrcpy软件下载、使用教程和技术浅析

上期 视频投稿 是我做的一个名为OHScrcpy的OpenHarmony投屏工具,今天在这里和大家分享一下~
目前仅初步实现,只是名字参考安卓的Scrcpy投屏工具,非移植二开,现阶段的开发技术和实现方式距离Scrcpy的完成度还相差很远。
个人认为目前只适用于教学视频、直播写代码等演示场景,距离低延迟、高帧率能日常使用的实现其实还很遥远。
如果你对投屏工具有更高的期望和要求,那现在这个工具也许不太适合你去使用。
另外也有人问到这个工具是否开源?这里再回答一下:我目前做了两个系列的视频,一个探索系列,一个开源系列,这期为前者,该系列只发成品、教程、心得,后者均为各类型开源项目。
先上资源
后续版本更新都将在这个专栏文章中更新,下载地址不变!
资源文件:OHScrcpy-1.0-Beta2.zip、OHScrcpy-1.0-Beta1.zip
下载地址:https://www.123pan.com/s/EKF7Vv-fUei.html 提取码:ohos
环境要求
电脑系统:Windows 10/11 64 位
设备系统:OpenHarmony 3.2+
开发阶段仅在一加6T(OpenHarmony 3.2 Release)上测试过
其他开发板等设备,横竖屏分辨率的宽高比自适应算法完全靠想象盲写,理论上OK,如果有什么问题可以在评论区反馈!
使用教程
如果你本地有配置hdc命令到环境变量,并且不想使用软件同级目录中的hdc,直接删除或改个名字即可
只连接一个设备时(包含安卓设备数量,因为hdc也识别安卓设备...)
直接运行 OHScrcpy.exe 即可(首次打开要等个3~5秒,因为要等待hdc服务启动,当然如果你本机的hdc服务本身就是处于启动状态,就不会有这个等待的时间)
当连接多个设备时
查看 设备序列号:hdc list targets
在 OHScrcpy.bat 脚本中写入 start OHScrcpy.exe -t 设备序列号 后保存,双击此脚本运行
或者把 OHScrcpy.exe 发送到桌面快捷方式,右键快捷方式,属性,修改目标值追加 -t 设备序列号(注意下 -t 前面是有个空格的)

再次双击运行快捷方式即可
使用说明
不点出右键菜单,所有快捷键也可以使用
自动调整窗口有3种方式:右键菜单、快捷键(Ctrl+X)、双击窗口任意处
设备安装应用有3种方式:右键菜单、快捷键(F5)、拖拽安装包到窗口任意处
截屏(F1)文件默认保存到桌面,文件格式为.jpeg
播放开机动画(Ctrl+B)功能纯属娱乐~
技术浅析
先做一些大致的对比(勿较真)
操作系统:Android | OpenHarmony
运行环境:ART | Ark
编程语言:java | js
编译产物:dex | abc
打包产物:apk | hap
调试工具:adb | hdc
Scrcpy安卓投屏工具的大致实现原理
adb推送dex到安卓设备
adb开启端口转发
利用安卓shell命令app_process直接运行这个dex程序
dex程序作为服务端,会创建一个本地视频流的socket等待客户端连接
投屏工具连接到socket服务端,实时解码并显示画面
投屏工具的点触交互等功能依赖adb或者dex程序提供的功能
继续探索
上面说的这6点,再看下刚才的一些对比,换做OH的环境,以我目前的了解,3、4、6暂时没有解决方案。
那怎么办呢?当然是只能另辟蹊径了~ 低延迟、高帧率咱们搞不定,还不能先搞个高延迟、低帧率的实现了?
只要能找到获取屏幕分辨率和图像的方法,通过多线程和程序上的优化自己组装图片,不就行了吗?
那么问题又来了,怎么做?
经过不断地研究,我发现真正的“技术密码”还得是反编译和分析DevEcoStudio部分jar包,看他内部的一些实现
这里只提下最重要的一个点,就是这个jar包:C:\Program Files\Huawei\DevEco Studio\plugins\openharmony\lib\ohos_hilog-3.1.0.500.jar
本次技术浅析到此结束 😎
高清图赏


