尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【C++ 工具分享】监控录像筛选工具,识别静态无运动视频,生成整理 + 还原 BAT 脚本,断点续传
前言家里小米摄像头会持续录制视频日积月累产生大量 MP4 文件。很多时间段画面完全静止没有人和物体活动白白占用大量磁盘空间。市面上视频剪辑软件只能手动打开一个个看批量筛选监控录像的工具比较少。于是用 C OpenCV FFmpeg 写了这个小工具核心安全设计程序只做分析不会直接移动 / 删除任何原始视频。输出迁移 bat 脚本和还原 bat 脚本人工确认脚本无误之后再双击执行。如果整理出错运行还原脚本一键恢复全部文件位置。支持递归遍历子目录、多线程并发分析、断点续传已经适配小米摄像头 HEVC 编码录像对断电损坏的残缺 MP4 做修复与容错处理。✨工具特性安全优先脚本先行程序扫描分析全部视频输出move_xxx.bat迁移脚本、revert_xxx.bat还原脚本原始文件完全不改动人工校验脚本再执行。帧差运动检测采样对比灰度帧统计差异像素数量超过阈值判定画面存在运动过滤静态无意义录像。FFmpeg 损坏视频修复小米摄像头断电断网会生成残缺 MP4程序调用 ffmpeg 尝试修复修复失败标记为损坏文件。多线程并发处理支持命令行参数‑t N指定工作线程数充分利用 CPU 加速批量视频分析。断点续传机制processed.txt记录每一个视频的检测结果再次运行会跳过已经处理完毕的视频不用重复分析。详细运行日志run_log.txt保存全部处理日志方便排查误判、损坏视频。BAT 防重复写入多次运行程序不会在 bat 脚本重复追加大量重复 move 指令自动判断末尾 pause不会重复生成多个 pause。环境依赖Windows x64 平台OpenCVRelease x64ffmpeg.exe需要在代码中配置 ffmpeg 完整路径C17 标准编译使用教程1、运行方式两种运行模式方式①命令行传参适合批处理调用vediocheck.exe 源视频目录 静态输出目录 [-t N]示例vediocheck.exe Z:\xiaomi_camera_videos\20250425 Z:\xiaomi_camera_videos\video_static -t 12‑t N指定并发工作线程范围 1‑64省略默认 20 线程。方式②不带参数交互式输入直接双击vediocheck.exe控制台交互式录入路径与线程数。图程序启动交互界面2、输入目录说明源监控视频目录存放小米摄像头录像的根目录程序会自动递归扫描全部子文件夹下 mp4。静态视频存放目标目录脚本、日志、断点记录文件全部输出到此目录。输入完成回车程序开始遍历磁盘。图程序运行扫描界面控制台实时打印扫描进度已跳过断点记录的文件。3、处理完成输出文件全部视频处理完毕后目标目录生成 4 个文件文件说明move_xxxx.bat迁移脚本将判定为静态 / 损坏的视频移动到目标位置记事本打开人工校验确认无误双击执行revert_xxxx.bat还原脚本迁移之后发现误判双击执行把所有视频恢复回原始路径processed.txt断点记录文件保存每个视频检测结果格式 完整路径状态码Y/NY 代表已经写入 bat 脚本删除该文件即可重新全量扫描run_log.txt完整运行日志记录每一个视频的判定结果排查误判、损坏视频⚠重要提醒工具仅做初步筛查存在少量误判执行 move 脚本之前务必用记事本打开 bat 人工核对内容不要直接双击运行processed.txt 格式说明无中文避免编码乱码Z:\test\1.mp4 | STATIC | Y Z:\test\2.mp4 | MOTION | N Z:\test\3.mp4 | CORRUPT_MOVE | Y Z:\test\4.mp4 | CORRUPT_SKIP | NSTATIC静态无运动已经写入 bat 脚本MOTION检测到画面运动跳过不写入 batCORRUPT_MOVE视频损坏配置开启移动写入 batCORRUPT_SKIP视频损坏配置不移动跳过 batY 已写入 batN 不写入 bat⚙关键参数配置源码顶部const int SAMPLE_INTERVAL 20; // 每隔多少帧采样一次越大速度越快降低精度 const int DIFF_THRESHOLD 12000; // 差异像素阈值超过该值判定画面有运动 const int SKIP_FRAMES_START 30; // 跳过视频开头N帧 const int VIDEO_ANALYZE_TIMEOUT_MS 90000; // 单视频分析超时90秒防止坏视频卡死线程 const int FFMPEG_TIMEOUT_MS 120000; // ffmpeg修复超时 const bool EXEC_REAL_MOVE false; // false只生成bat不直接移动文件强烈不建议改为true const bool AUTO_CLEAN_TMP true; // 自动删除ffmpeg修复生成的临时mp4 const bool MOVE_CORRUPT_FILE true; // 是否把损坏视频也加入迁移脚本 const std::wstring FFMPEG_PATH LD:\\opencv412\\ffmpeg.exe; //修改为你的ffmpeg实际路径参数调优提示DIFF_THRESHOLD阈值调大更加严格轻微光影变化会判定为静态调小更加灵敏光影变化就判定运动。VIDEO_ANALYZE_TIMEOUT_MS针对超长录像可以调整到 1800003 分钟。EXEC_REAL_MOVEfalse是安全底线不要改成 true全部操作优先走 bat 脚本人工确认。常见问题Q部分小mp4 提示损坏、超时标记 CORRUPT_MOVEA小米摄像头断电、断网会写出不完整 partial mp4moov 元数据缺失属于录像文件本身损坏。程序调用 ffmpeg 尝试修复修复失败标记损坏。可以通过MOVE_CORRUPT_FILE开关控制是否迁移这类文件。注意OpenCV 内部 ffmpeg 解码残缺 HEVC 视频时cap.read()有可能内部阻塞卡死当前超时防护只防护 “可以正常读帧” 的场景。Q怎么重新完整扫描全部视频A删除目标目录下面的processed.txt重新运行程序就会重新分析全部视频。bat 脚本会追加写入如果你想要全新 bat 脚本同时把 move 和 revert 的 bat 一并删除。Q多次运行bat 脚本会不会产生大量重复 move 命令A不会。程序读取processed.txt里面hasWriteBat标记如果该视频已经写入 bat就不会重复追加 move 指令。Q执行 move.bat 之后发现误判如何恢复A直接双击运行对应revert_xxx.bat一键全部还原视频到原始文件夹。设计思路为什么生成 bat 而不是程序直接 move监控视频批量处理最怕程序 bug一旦程序直接移动文件中途崩溃、误判视频位置错乱很难复原。程序只负责分析输出人类可读的 bat 批处理脚本磁盘原始数据完全不改动。用户可以记事本编辑 bat手动删除部分 move 行自定义筛选结果。配套完整还原脚本作为兜底就算 exe 程序丢失bat 脚本依旧可以完成迁移和恢复。局限性说明基于帧差灰度对比做运动检测不是 AI 人形识别光线明暗大幅度变化、树叶晃动会产生少量误判必须人工复核脚本。对严重损坏完全无法解码的 mp4 只能标记损坏。只测试了处理.mp4格式。其它格式可以自行测试。资源下载说明源码为 C 控制台源码VS2019 x64 ReleaseC17 编译使用前修改FFMPEG_PATH为你本地 ffmpeg 路径。资源包含完整 cpp 源码不含 OpenCV、ffmpeg 二进制库需要自行配置依赖。VS2019 编译配置说明平台x64 ReleaseC 语言标准设置为 C17依赖 OpenCV4.12需要自行配置 OpenCV包含目录D:\opencv412\build\include库目录D:\opencv412\build\x64\vc16\lib附加依赖项opencv_world412.lib将ffmpeg.exe放置对应目录修改源码中FFMPEG_PATH常量为实际路径。运行时需要opencv_world412.dll和ffmpeg.exe随同 exe 一起分发。C小米监控录像静态视频筛选工具源码生成bat还原脚本断点续传资源-CSDN下载https://download.csdn.net/download/zhaojun917/93315638
RELATED

相关推荐

【单片机课设毕设项目】基于 51/STM32 单片机的多指标水质检测设备设计与实现 单片机水环境传感器采集与手动自动双模式报警系统设计(018104)

【单片机课设毕设项目】基于 51/STM32 单片机的多指标水质检测设备设计与实现 单片机水环境传感器采集与手动自动双模式报警系统设计(018104)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

📅 2026/10/12 9:41:05
K8s(Kubernetes)简介及部署

K8s(Kubernetes)简介及部署

​ 是容器编排管理平台,用来批量管理 Docker 这类容器,实现容器自动化部署、扩缩容、故障自愈,管理大量容器化应用。 原理 把多台服务器组成集群,划分两类角色: Master 控制节点:集群大脑,接收用…

📅 2026/10/6 1:35:24
小白Obsidian入门教程,这一篇就够了

小白Obsidian入门教程,这一篇就够了

你有没有经历过这样的“笔记焦虑”? 刷到好文章,先放进微信收藏夹,然后再也没打开过; 报了课、看了书,认认真真在Word或备忘录里记了几千字,转头就忘在哪了; 更可怕的是,有些笔记软件…

📅 2026/10/30 0:56:27
MORE NEWS

更多资讯

📰

荆州电工证怎么办实操考试心里没底怕挂科?电子证书怎么拿

荆州电工证怎么办实操考试心里没底怕挂科?电子证书怎么拿 实操考试心里没底怕挂科,这是大多数考生在考前的真实写照。尤其是荆州电工证怎么办的问题,很多人对流程不了解,再加上对电子证书的获取方式不清楚,更是增添了不少焦虑。其实,只要提前准备,了解…

📰

淮北办水电工证怎么考?上岗必备证书报考全攻略

淮北办水电工证怎么考?上岗必备证书报考全攻略 你是不是正在找工作,但发现岗位要求“必须持有特种作业操作证”?别急, 淮北办水电工证 正是你 上岗必备…

📰

荆州电工证怎么办?在哪考才能快速拿到证上岗?

荆州电工证怎么办?在哪考才能快速拿到证上岗? 你是不是正在找电工相关工作,但卡在了没有特种作业证这道门槛上?荆州电工证怎么办?这可能是很多应届工程类毕业生或者刚入行的从业者最头疼的问题。别急,本文就是专门为你准备的,从 在哪考 到 怎么考…

📰

电工证到期在那里换,别被中介坑了,知道在哪考才安心

电工证到期在那里换,别被中介坑了,知道在哪考才安心 你是不是也遇到过这种情况,电工证快到期了,却不知道去哪儿换证?怕被中介骗钱、怕流程太麻烦、怕自己弄不明白,结果拖着拖着就过期了,还影响工作?别急,今天我就从河南本地培训机构的角度,给你讲清…

📰

电工证中级证办理全流程:外省证怎么转?多久拿证?

电工证中级证办理全流程:外省证怎么转?多久拿证? 之前考的证在外省能不能转过来?这个问题我听得太多了,特别是像你这种在南阳初次报考的小伙伴,可能手里拿着外地的证,心里没底。今天我就从头到尾讲清楚, 电工证中级证办理 到底怎么走, 多久拿证…

📰

溪桥小镇电工证值不值得考?实操考试心里没底怕挂科怎么办

溪桥小镇电工证值不值得考?实操考试心里没底怕挂科怎么办 实操考试心里没底怕挂科,这几乎是所有准备考取 溪桥小镇电工证 的学员共同的焦虑。尤其是在高压电工、低压电工这类实操要求极高的岗位上,考试难度和通过率直接影响你的职业发展。那问题来了,…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬