无人机摄像头改造记录

这篇具有很好参考价值的文章主要介绍了无人机摄像头改造记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

23年5月,改造4G远控车时,因为要用到摄像头模组,早年的摄像头都是 usb 接口输出 mjpg 格式数据,近几年因为无人机的流行,国内很多厂商在原本 usb 摄像头硬件基础上,叠加了一个物联网 wifi 芯片,用很低的成本就把摄像头扩展了无线功能,加上不同的天线和发射功率的调节,可以支持几百米米甚至上千米的遥控距离。然后深圳就诞生了一批廉价无人机厂商,遥控距离比 DJ 短些,视频质量差些,但价格是 DJ 的一半甚至更低,这样就不愁用户买单。

在这个大环境下,笔者调查了 TB 在售的无人机/遥控车摄像头模块,大约有20款,根据卖家提供的线索下载了 APP ,分析发现实际用的硬件方案就那么几家,软件方案与硬件是配套的,也就那么几家。从其中挑了两款典型的硬件,加以软件层面的分析,最终目的是把 wifi 摄像头,改造成4G远程摄像头

 

 

 A 款:

分辨率是1080P, WIFI 热点名称是 heliwayxxxx ,对应的 APP 是 heliway 或者 jjrc 

抓取 IP 包分析后,其工作原理是手机侧获取 wifi dhcp 服务器的地址,也就是模块的地址,然后往8080端口发送 udp 包,获取摄像头硬件/固件信息;然后往8888口发送 tcp 包,其数据包为固定内容的12个字节,随后摄像头模块就向手机侧发送视频流。 udp 包经过实验,可选,不影响获取视频流。 tcp 视频流是经过过 apk 中的几个 so 库获处理的,从 IP 包也能看出来是有外层封包的, 具体封包细节没有深入研究。so 经过解析后返回给 Android 侧, Android 送入 mediacodec 进行解码,解码后送入 surfaceview 显示。

 

 

明白工作原理后,这款摄像头的改造开始

1.首先4G扩展板作为 client ,连接摄像头的 wifi ,摄像头的 ip 是固定的172.16.10.1,在4G扩展板的公网网卡绑定两个 server socket 端口,端口号随意;

3.另外再起两个 socket client ,分别连接摄像头的8888、8080端口,注意,这两个 socket client 需绑定 wifi 网卡;

4.创建两个转发线程,一个用于转发 tcp ,一个用于转发 udp ,在公网网口和 wifi 网卡之间转发数据

 

至此,4G扩展板上的改造工作结束,再说手机侧,手机侧的改造相对简单,基本不用动原本apk的逻辑

1. 手机获取4g扩展板的公网ip,可以用ddns,但延迟较大,建议还是搭建一个简单的redis服务用于交换ip

2. 手机在其公网网卡上起两个client socket,分别连接4g扩展板的tcp和udp端口

3.手机原本的apk代码跑起来后,视频流就可以正常显示

4.加上判定手机当前网络的判定,如果是 wifi 网络就使用原本的局域网地址;如果是4g网络就用公网地址,这样就实现了自动切换网络环境,提供局域网免流量和4g远程两种操作模式。

 

实际改造中发现了一个坑, Android 版本 app 中的 so 库不支持公网地址,仅支持局域网地址。对此,我是完全不能理解,可能是开发人员的失误,但又没有 so 的源码,只能变通解决。

在手机侧开一个转发进程,监听本地端口,发现连接请求就转发到公网,这样就规避了 so 不支持公网地址的缺陷,效率略低,但在当前手机性能过剩的大环境下,影响也不大。

 github 地址:文章来源地址https://www.toymoban.com/news/detail-484583.html

 

 

 B 款:

分辨率是480p,低端的, wifi 热点名称是 frd-uav-z8xxxx,对于的 app 是 frd ,低端摄像头,输出是 jpg 格式,优点是发热小,功耗低,续航长。

抓取 IP 包分析后,起工作量原理是手机侧获取摄像头的 IP 地址,然后往5252端口发送固定内容的 tcp 包,随后摄像头就往手机的5555端口发送 udp 包,这就是摄像头数据,手机拿到数据后,前9个字节是包头,后面是 mjpg 数据,手机要完成拼包,然后就是把 jpg 转成 bitmap 解码,送显示。

 

改造过程(4G扩展板)

1.首先4G扩展板作为 client ,连接摄像头的 wifi ,摄像头的 ip 是固定的192.168.1.1

2.在4G扩展板的公网网卡绑定一个 tcp 的 server socket 端口,端口号假设10000,这个端口用于接收手机侧的 tcp 包,转发的目的地是192.168.1.1:5252;

3.在4G扩展板的公网网卡绑定另一个 tcp 的 server socket 端口,端口号假设是10001,当检测手机连接这个端口后,就开始在 wifi 网口上监听5555 udp 端口,如果收到 udp 数据,就通过公网网口转发给手机;

4.注意,要先看下 IP 包中 udp 数据包的大小,给第二个转发线程设置合理的 buffer 区大小,否则会出现缓存过小,发送丢包现象;对于这个摄像头设置100k就够了。

 

改造过程(手机)

1.手机获取4g扩展版的 ip 地址

2.在手机的公网网口上起两个 client socket ,分别连接4g扩展版的10000和10001端口

3.其它的就复用 apk 原本的逻辑即可,视频流就可以正常显示

4.加上判定手机当前网络的判定,如果是 wifi 网络就使用原本的局域网地址;如果是4g网络就用公网地址,这样就实现了自动切换网络环境,提供局域网免流量和4g远程两种操作模式。

 github 地址:

到了这里,关于无人机摄像头改造记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Iriun-旧手机改造成电脑摄像头/家庭监控

    很多网友换新手机之后,原来的旧手机就一直放着落灰,没能发挥其剩余价值,今天我推荐这款把手机当做电脑摄像头的免费软件:  iriun Webcam ,分分钟将你的旧手机变身成为高清摄像头。 一、推荐理由 1、手机当做电脑摄像头使用/手机当做家庭监控 2、支持iOS(iPhone)和

    2024年02月04日
    浏览(77)
  • 激光无人机开发(一)大疆Livox-Avia雷达硬件设计及连接线改造

    在Fast-LIO中,作者使用了一个搭载了Livox-Avia的无人机平台进行数据采集,如下图所示: 其中除了雷达外,还搭载了一个FPV相机,用于录制第一人称视角的视频。 飞控选用的是常见的Pixhawk 4-mini;机载电脑选用的是大疆妙算2(现在好像停产了)。 整个无人机轴距260mm*270mm,属

    2024年02月07日
    浏览(67)
  • 记录--h5调用手机摄像头踩坑

    一般业务也很少接触摄像头,有也是现成的工具库扫个二维码。难得用一次,记录下踩坑。 这个就不用多说了,缺点就是没办法自定义界面,它是调用的系统原生相机界面。 由于我需要自定义界面,就像下面这样: 所以我选择了这个方案,这个 api 使用起来其实很简单: 可

    2024年02月08日
    浏览(52)
  • 树莓派——opencv打开树莓派摄像头调试记录

    目录 一、安装包:(注意换要源,不要用系统默认源) 问题1:磁盘空间不足——把根目录扩展到整个SD卡 解决:把根目录扩展到整个SD卡 二、下载 1、先创建opencv目录: 2、下载 问题:fatal: unable to access \\\'https://github.com/opencv/opencv.git/\\\': gnutls_handshake() failed: The TLS connection was

    2024年02月11日
    浏览(49)
  • 无人机/飞控--ArduPilot、PX4学习记录(2)

    这是一篇碎碎念,零零碎碎的记录了环境配置过程, 仅供本人记录学习历程和参考。 (记录的挺乱的,但是文章链接里的博客写的是真好) 本章主要完成的目标 : 安装PX4 并 成功运行出3D无人机界面。 参考文章: 搭建PX4环境: PX4/Pixhawk - 编译环境搭建_pix4 yu pixhawk-CSDN博客 使

    2024年03月21日
    浏览(64)
  • 无人机/飞控--ArduPilot、PX4学习记录(5)

    这几天看dronekit,做无人机失控保护。 PX4官网上的经典案例,我做了很多注解,把代码过了一遍。 无人机具体执行了:  先起飞,飞至正上空10m-向北移动10m-向东移动10m-向南移动10m-向西移动10m-回到初始起飞点(即home点),降落。 具体执行之前,要打开JMAVSim,接下来会在JMAV

    2024年04月15日
    浏览(62)
  • 获取大疆无人机的飞控记录数据并绘制曲线

    机型M350RTK,其飞行记录文件为加密的,我的完善代码如下 git@github.com:huashu996/DJFlightRecordParsing2TXT.git 飞行记录文件在打开【我的电脑】,进入遥控器内存, 文件路径:此电脑 pm430 内部共享存储空间 DJI com.dji.industry.pilot FlightRecord  网址如下DJI Developer 注册完之后新建APP获得密

    2024年02月16日
    浏览(59)
  • 【Unity3D-01】 记录Unity3D调用外接摄像头

    最近想在Unity3D上调用一个摄像头,通过查找资料发现仙魁XAN和八哥快走开的博客符合我的想法,实现起来也不难就尝试了一下 2.1 在这个工程里新建Canvas 如下图所示 然后下设RawImage为载体 2.2 在Assets里面新建一个脚本命名为PlaneManager.cs 代码内容如下(参考八哥快走开的博客)

    2024年02月04日
    浏览(54)
  • 记录对接海康威视摄像头web端实时预览:Linux+ffmpeg+nginx转换RTSP视频流(完整版实现)

            需求:web端实现海康摄像头实时预览效果         由于市面上大部分网络摄像头都支持RTSP协议视频流,web端一般无法直接使用RTSP实现视频预览,本篇使用ffmpeg对视频流进行转换,最终实现web端实时预览。         工具介绍:ffmpeg、nginx、vue         介

    2024年01月25日
    浏览(56)
  • 手把手教你完成一个Python与OpenCV人脸识别项目(对图片、视频、摄像头人脸的检测)超详细保姆级记录!

    课程来源: 一天搞定人脸识别项目!学不会up直接下跪!(python+opencv)_哔哩哔哩_bilibili 环境配置详见: 在conda虚拟环境中安装OpenCv并在pycharm中使用_conda虚拟环境安装opencv_好喜欢吃红柚子的博客-CSDN博客 目录 一、读取图片 1.1 imshow和WaitKey方法   1.2 代码实现 1.3 效果展示 

    2024年02月03日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包