用python自行开发的流星监控系统meteor_monitor(第一篇)

代码:

https://github.com/xingxinghuo1000/meteor_monitor_scripts.git

由于代码做了较大调整,废弃了sikuli部分。本篇文章为旧的,不要看了,最新文章请看:

用python自行开发的流星监控系统meteor_monitor(第二篇)-CSDN博客

背景

著名的流星监控软件ufocapturehd2有几个缺陷,不能忍

1、吃性能,我的工控电脑2.4GHz的4核心CPU,发现流星后,录制出来的视频,会严重丢帧

2、收费。还相当的贵。大概700多元? 用破解版当然也可以,这里不推荐

调研过程

1、解决如何录制的问题

我发现win10自身的相机app,可以以非常低的cpu消耗,录制720p,50fps的视频,非常流畅。如果能够写个脚本。离线分析录制出来的mp4文件,把录制和分析解耦,就整体搞定了性能的问题。

调研过其他几个软件,都不如win10自带的app好用

2、如何自动化录制视频,并分段

视频必须得分段,如果不分段,录制一个晚上,一个视频文件40GB,中途如果不小心断电了,整个晚上录制的文件,就变得不可读,这是不能接受的

曾经尝试过,使用pywinauto库,做自动化,发现相机这个app,没有具体按钮的句柄,spyxx工具无法探查出来。

那就上万能工具sikuliX吧,这个工具是使用模式识别方式,点击按钮,不论这个按钮在屏幕哪里,只要匹配到了,就能点。

参考资料: sikulix自动化测试 - 简书

3、如何存储视频

首先为了节省cpu消耗,必须保存到本地硬盘中。但工控的本地硬盘,一般不会很大

所以视频可以通过一个脚本,定时同步到nfs上,或者samba服务中,

这样就解决了性能和容量的两难问题

同步脚本和录制时间,需要一个标记,来表示为视频录制已完成,这里采用了大数据里常用的.done文件。每一个mp4文件,都对应一个.done文件,没有.done文件,就代表没有录制完

4、离线分析

由于视频存储在了nas中(可能是nfs或者samba)。分析端,可以是多机共同参与的,即分布式分析。这样可以提升分析的效率,尽早拿到结果

需要对视频做一个文件锁的功能,防止多机冲突。

每一个mp4。都对应一个.lock文件,如果发现了.lock文件锁,则看看里面的内容,是不是自己锁定的,如果是,就处理,如果是其他机器锁定的,则跳过这个文件

分析思路:使用帧差法,通过python+opencv来实现这个算法,不算难

参考资料:python+opencv实现移动侦测(帧差法) - 杰晶网络,每天都更新的互联网资源网! 更新日期:2022/6/15

part1-视频自动录制部分

先上代码

具体代码如下: https://github.com/xingxinghuo1000/meteor_monitor_scripts/tree/master/sikuli_open_camera.sikuli

如何使用:

1、把相机的应用,固定到任务栏,必须的,否则sikuli没法启动相机

2、安装JDK,下载sikuliX的jar包,放在D盘根目录

3、仅支持windows,双击start_camera_record_by_sikuli.bat文件,即可运行

开发过程和踩坑记录

1、先做最小的Demo,实现点击录制按钮,和停止录制的按钮

2、再做基本的控制,比如启动相机app,关闭相机app。 启动相机,无法通过cmd命令启动(python中是 os.popen方式执行cmd),必须通过点击任务栏按钮才行。不知道为什么,如果有大神知道,可以告知

3、判断何时开始录制,何时停止录制,这需要获取当地的日出和日落时间,我写了一个比较简单的实现,直接写死在代码里,如果您有需要,可以修改代码,修改为您当地的时间,然后再运行

4、稳定性:对于停止按钮和录制按钮的判断,sikulix支持设置阈值,调整了一下,才准确搞定。按照默认的参数,会有误判,非常坑人

5、调整参数,比如视频分段的时间间隔,多久停止一下,再重新录制。我设置的是200多秒。不要太长,免得保存视频时造成卡顿

效果

进程常驻内存,定时判断时间,是否该录制视频。每隔一段时间,自动停止录制,再开始录制

part2-视频定时同步功能

脚本代码:https://github.com/xingxinghuo1000/meteor_monitor_scripts/tree/master/video_sync

执行过程:

1、扫描目标目录,视频是否已超过100GB,如果超过则删除老的文件,

2、轮训查看源视频目录,找出所有mp4文件

3、检查mp4文件是否有对应的.done文件,

4、如果有则复制到目标目录,复制完,在目标目录写入.done文件,同时删除源目录的视频文件

5、不断循环

注意:

为了防止网络问题,对于传输了一半的文件,删掉重新同步

如果出了网络问题,程序会进入exception逻辑,sleep一段时间后重试

会不会出现传输了一半的文件,被下游处理呢?

答:不会,没有.done文件,下游是不会处理这个视频文件的

后续可以扩展的地方

1、目标路径,可以是一个ftp地址,

不过这次,没有支持这个功能,没太大必要。大多数windows都支持samba服务,直接挂载到本地,作为本地路径使用即可

part3-离线分析脚本

代码:meteor_monitor_scripts/detect_meteor at master · xingxinghuo1000/meteor_monitor_scripts · GitHub

相关推荐
小陈工1 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
墨染天姬5 小时前
【AI】端侧AIBOX可以部署哪些智能体
人工智能
AI成长日志5 小时前
【Agentic RL】1.1 什么是Agentic RL:从传统RL到智能体学习
人工智能·学习·算法
2501_948114246 小时前
2026年大模型API聚合平台技术评测:企业级接入层的治理演进与星链4SAPI架构观察
大数据·人工智能·gpt·架构·claude
小小工匠6 小时前
LLM - awesome-design-md 从 DESIGN.md 到“可对话的设计系统”:用纯文本驱动 AI 生成一致 UI 的新范式
人工智能·ui
黎阳之光6 小时前
黎阳之光:视频孪生领跑者,铸就中国数字科技全球竞争力
大数据·人工智能·算法·安全·数字孪生
小超同学你好6 小时前
面向 LLM 的程序设计 6:Tool Calling 的完整生命周期——从定义、决策、执行到观测回注
人工智能·语言模型
智星云算力6 小时前
本地GPU与租用GPU混合部署:混合算力架构搭建指南
人工智能·架构·gpu算力·智星云·gpu租用
jinanwuhuaguo6 小时前
截止到4月8日,OpenClaw 2026年4月更新深度解读剖析:从“能力回归”到“信任内建”的范式跃迁
android·开发语言·人工智能·深度学习·kotlin
xiaozhazha_7 小时前
效率提升80%:2026年AI CRM与ERP深度集成的架构设计与实现
人工智能