基于Android、python-raspberrypi-ffmpeg-socket实现 可移动多功能监控系统 - 初阶段

基于Android、python-raspberrypi-ffmpeg-socket实现 可移动多功能监控系统 - 初阶段

入手树莓派也好几个月了,断断续续的有在学习,只是觉得有趣,所以说呢,就是自娱自乐罢,暂且以下设计方案架构:
- 树莓派GPIO控制(0/1/pwm)
- python-socket客户端
- 摄像头监控直播ffmpeg
- java-socket服务器中转(透传)
- android客户端
哎呀
(灵魂画手)
本人java出生,python不精,所以python的结构设计也都是仿造java结构开发
树莓派端项目git地址(个人的通用项目)
此系统相关代码文件位于

help_note/python/            python相关学习工具
help_note/python/opencv/ 基于opencv的python学习代码
help_note/python/server/ 树莓派的相关代码(系统GPIO控制,http、socket服务提供)

1)GPIO控制 直接贴代码太长了,附上关键代码git地址
单例装饰器python_singleton.py

基本的GPIO控制驱动system.py

四驱轮子(H桥)移动模块ModelMove.py

摄像头G90舵机旋转模块ModelTurn.py

2)python-socket通讯模块
server_socket.py
启用前需要指定公网透传socket中转服务器的ip和端口
(不知原因总觉得树莓派系统很卡,当socket和ffmpeg同时运行,cpu冲高,偶尔卡顿)

业务处理服务ServiceServer.py

3)ffmpeg采集摄像头推送rtmp直播
本模块本是打算编译opencv环境和python-rtmp推送环境后,使用opencv控制摄像头获取图片帧《识别特殊物体(人脸)时就推送消息给客户端(预警)并保存关键高清图片》并调用python-rtmp手动推送帧到rtmp服务器,暂时尚未成功顺利安装环境,所以暂且使用ffmpeg推送直播

也不熟悉ffmpeg优化配置,目前用此命令推送,延迟3s左右,太慢了!
也将会考虑结合opencv手动实现图片帧socket/http手动推图到客户端,而非python-rtmp

ffmpeg  -f v4l2 -s 200x150 -r 5 -i /dev/video0 -vcodec h264 -preset veryfast -tune zerolatency  -g 6 -threads 4 -f flv rtmp://39.107.26.100:1935:1935/myapp/test1

4)socket中转透传
参考上篇文章 [socket中转服务器的实现]
(https://blog.csdn.net/u014303844/article/details/80235339)使用此socket中转后设备和客户端交互 信息延时1s以内,尚且可以接受
该端需要部署在公网环境

5)客户端Android app控制实现
目前只是简易写了客户端,是基于以往的即时聊天系统(懒)添加了一个入口(主页面侧边滑动出来的栏目有个设备控制),结合rtmp vitamio模块实现播放,绘制基本的界面控制设备,socket采用的mina(历史遗留,笑),运行效果附图(丑)
客户端app-git地址
编译前需要指定多个ip(内网测试ip,公网ip等,会轮流多个ip检测socket连接并断线重连)
简易控制界面,rtmp视频点播监控,两个滑动栏分别控制移动速度和摄像头旋转


以上,便是初期设计效果了,各个模块(每个节点)都有大把的需要优化的地方啊,简直无法忍受,如此效率低下,效果如此差
嘛,没办法的事儿,涉及的方面过于多了,首先还是只得先实现基本的功能,再考虑优化了
后期待续:
1. 先是得拼了老命也得编译好opencv环境来实现识别关键信息推送
2.丰富设备各种传感器,实现设备环境信息完全掌控推送(cpu,mem,温度,光感,电量,增加各种设备行为控制)
3.再是优化监控视频,考虑更换更适合pi的实现方式,及时性优先(不然怎么玩啊)
4.优化socket信息交互效率(包头字节约定,框架选择之类)并做好性能测试(压测,因为后期还可能做出什么共享控制系统,共享鱼缸?笑)
5.实现机器智能学习响应系统(物体识别学习,环境变化自处理,自发移动地图生成《超声波,避障,图像测距》)

猜你喜欢

转载自blog.csdn.net/u014303844/article/details/80283072