从0到1打造一个私有的远程控制平台
文章平均质量分 74
打造属于自己的远程控制平台
ithouse
这个作者很懒,什么都没留下…
展开
-
远程控制平台简介
之所以想自己动手实现一个远程控制平台,很大一部分原因是因为我那糟糕的记性,虽然经常加班到很晚,拖着疲惫的步伐回到家,才想起忘记打卡了,如果我能在家控制在办公室的手机打一下卡就好了…有人说,市场上有TeamViewer,向日葵,AnyDesk,ToDesk,等等这些老大哥,何必多此一举,重复造轮子?是的,以上提到的都是很成熟的远程控制平台了,但无一不是付费的。原创 2023-07-31 18:02:57 · 445 阅读 · 0 评论 -
远程控制平台一之推拉流的实现
在选用推拉流框架的时候,有了解过nginx+rtmp/rtsp,Janus,以及其他开源的推拉流框架,要么是延迟严重(延迟一分多钟),要么配置复杂,而且这些框架对于只是转发远程画面这个简单需求来说,过于庞大了。以上几乎已经是服务器端所有功能了,实际跑起来的时候,发现在网络不好的情况下,延迟还是比较大的,这是因为默认JeroMQ默认会缓存很长时间的画面,我们需要简单设置一下,尽量减少缓存,但太少又不行,会出现数据不推送,或者延迟没改善的问题,经过多次测试,以下设置可以把延迟控制在5秒内。原创 2023-08-01 18:38:23 · 373 阅读 · 0 评论 -
远程控制平台二之高效率录屏
可以自己定),因为16帧/秒看起来就没有卡顿了,超过这个频率没有意义,而我们的场景,为了能降低延迟,稍稍卡顿也是可接受的,所以我这里就简单地让两次截屏时间间隔不少于100毫秒,如果间隔小于100毫秒,就让线程先休眠50毫秒,也就是说,一秒的视频画面不能多于10帧。显然不是的,我们的要求只是看到远程设备的屏幕以及操控远程设备,所以,图像是必须的,但声音是多余的,至少在我们目前这个项目是这样,所以,我们在录屏的时候,只需使用ImageReader截取受控端屏幕画面传输即可。这样就已经是极限了吗?原创 2023-08-01 19:47:48 · 500 阅读 · 0 评论 -
远程控制平台三之实现模拟点击
刚开始我是想计算当前屏幕点击位置的像素位置,传递到受控端后,转换相应的像素,但效果不佳,后来想到一个简单粗暴的方法:干脆不用传像素了,就传屏幕位置的比例,比如在主控端点击的是A(x,y)位置,那么我就计算A位置的x和y分别占当前设备的比例,假设为x’和y’,把(x’, y’)传到受控端,分别乘以受控端的宽和高,就得到了具体要点击的位置(以上代码可以体现)。手势的捕捉是比较简单的,只需设置一个主控端SurfaceView的触摸监听即可,需要注意的是,短按、长按和滑动要区分开,我这里是z在。原创 2023-08-01 20:22:57 · 412 阅读 · 0 评论 -
远程控制平台四之优化部署
前提是只有一个主控端,如果多个主控端同时看,还是会串流的,但对于我们个人使用而言,这个是可以控制的,如果要严格要求只有一个主控端,目前看来应用单点登陆策略是一个办法。在目前国内手机厂商的严格管制下,绝对的保活是不存在的,只能说,我们自己使用的APP,尽可能自己在手机上把APP加入白名单,使用前台服务,忽略电池使用,允许后台联网,心跳保活等等,多管齐下,才可能让APP尽可能长时间存活。右侧全选引用到的类库,右键鼠标,Exact into Output Root – OK。原创 2023-08-01 21:27:01 · 544 阅读 · 0 评论