首页 > 编程知识 正文

无人机实时图传,无人机fpv传图软件

时间:2023-05-06 20:26:56 阅读:140024 作者:1409

无人机在海外和国内都很受欢迎。 以后就不知道了。 说起这个无人机玩具,一提到“大疆无比”,我就想起了小时候的遥控车。 刚才出来的时候也很受欢迎。 我一直很穷,所以跑在别人后面看人玩。 即使想拥抱(题外话)。 就我主要负责的任务而言,就是封装安卓端的APP,通过sdk方式为客户提供二次开发。 简单的是现场直播

整个APP是在mpv EventBus框架下开发的,这里主要说的是native层

native层主要由三个板块构成

1 .飞控指令块

2 .设备命令交互模块

3 .图传方块

1 .飞控指令模块正在进行私有协商。 私有协议是指在指令发送过程中,指令的校验方式、发送的位数均由自己定义,它与设备【图们儿】方一起使用。 飞控指令主要是控制飞机的基本命令,如前后左右、上下飞行、翻转等,简单来说就是把市场上看到的遥控手柄上的功能转移到APP端,我们先来普及一下无人机硬件的基本组成部分。 市场上的无人机主要分为两类。 一个是无照片传递的。 最主要的硬件结构是飞行控制板,飞行控制板就像计算机的cpu,接受各种指令,保存飞行控制平衡等。 电机当然会被带着照片交给你。 最主要的硬件构成是飞行控制板,通过照片传递。 他们之间用串行方式发送。 无照片传递的是只靠方向盘遥控飞机,带照片传递的是用方向盘遥控飞机的过程中,可以用手机连接飞机的wifi图片传输板,看到飞机上拍摄的图像。 我负责的APP端的指令交互是与照片传输板的交互。

2 .设备命令交互模块是指app端向映射板发送预定命令,使设备端执行视频拍摄、拍照等指定任务。 ……、交互方式主要有两种,一种是cgi格式,一种是json格式,其中都是使用套接字发送,一种是udp,一种是tcp,这主要在控制板上面

3图像传输模块是最难、问题最多的模块,是最重要的模块。 图像传输是rtsp标准协议,传输过程是h264流,是实时播放过程,最难解决的问题是图像jdddx,是图像花瓶的问题,图像在各个手机上有不同的表现,在性能好的手机上,图像的扩展是图像的扩展

要解决映像jdddx问题,必须首先了解jdddx的原因。

1 .数据在传输过程中丢失,无数据导致的jdddx

2 .来不及接收app端,因数据丢失导致的jdddx

3 .为了减少闪屏,发生了jdddx。 例如,正好I帧丢失了。 为了避免后面出现闪屏,请投射后面的p帧,直到出现下一个I帧

已知闪屏的原因是I帧、关键帧和后续p帧发送到ffmpeg并解码的图像是闪屏或马赛克。 【请注意,这个传输过程没有使用b帧,整个传输过程只有两种类型的p帧: I帧和p帧】,有很多p帧

解决方案:

一个问题是数据在传输中丢失,没有数据造成的jdddx、外部环境的影响、照排机信号稳定性的影响等,app方面没有好的解决方案,只有两种选择,一种是tcp传输,另一种是udp传输实测表明,tcp的效果更好。

tcp :数据传输过程可以保持数据的完整性,所以花屏很少,离upd有点近。

udp )传输过程不保证数据的完整性,容易出现在屏幕上,距离较远

第二个问题是app端的接收延迟,导致数据丢失的jdddx。 我在这里遇到的是以前的接收数据与解码相同的线程,显示了另一个线程。 这样可能会导致解码延迟,阻止接收线程,从而影响数据的接收(udp )。 解决方案是在传入数据自身的线程上,将解码和显示线程分开,中途通过缓存队列

第三个问题:根据客户的需求,我这里不用屏幕,直接扔掉

项目的mpv EventBus使用方法非常灵活,模块置换、复用、改写灵活。 另外,java层不需要特殊,一般是不动的。 优化在各个方面都在jni层,主要也是图传的优化。 这样也方便了版本的迭代,客户的版本不升级会有多痛苦。

上述几个问题,解决方法本来就很简单,真正做起来非常不容易。 要想有很多漏洞、ios移植容易、稳定性高、兼容性高,非常不容易。 其中的苦乐也只有自己知道。 (现在想想也不是什么难事。 很多事情过去了,想起来也只是那么回事。 在下面附加下面的源代码结构图后,源代码将不再共享。 总的来说学到了很多东西。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。