logo
0
0
WeChat Login

📹 MP4 视频内容变动检测工具

分析MP4视频画面,检测特定区域的变动,记录变动发生的时间点,生成日志方便查找监控录像。

✨ 功能特点

  • 🔍 智能检测 - 基于帧差法检测画面变动
  • 🎯 区域监控 - 支持指定多个矩形区域重点监控
  • ⏱️ 时间定位 - 精确记录变动发生的时间点
  • 📊 多种输出 - 支持文本报告、CSV时间线、JSON格式
  • 快速扫描 - 可调节采样间隔加速处理
  • 📁 批量处理 - 支持扫描整个目录

🛠️ 安装

pip install opencv-python numpy

或使用 requirements.txt:

pip install -r requirements.txt

🚀 快速使用

1. 检测单个视频(全画面)

python mp4_checker.py /path/to/video.mp4

2. 指定监控区域

# 格式: x,y,宽,高 python mp4_checker.py video.mp4 --region 100,100,300,400 # 给区域命名 python mp4_checker.py video.mp4 --region 入口:100,100,300,400 # 多个区域 python mp4_checker.py video.mp4 \ --region 入口:100,100,300,400 \ --region 窗户:500,50,200,200

3. 扫描目录下所有视频

python mp4_checker.py /path/to/videos/

4. 生成报告文件

python mp4_checker.py video.mp4 \ --report report.txt \ --csv timeline.csv \ --json result.json

📋 命令行参数

参数说明默认值
input视频文件或目录路径(必填)
--region, -r监控区域 (可多次使用)全画面
--config, -c区域配置文件(JSON)
--threshold, -t像素变化阈值25
--min-change最小变动百分比触发1.0
--sample-interval, -s帧采样间隔2
--report输出报告文件
--csv输出时间线CSV
--json输出JSON结果
--log日志文件
--verbose, -v详细输出False

📐 区域配置文件

创建示例配置:

python mp4_checker.py --create-config regions.json

配置文件格式:

{ "regions": [ { "name": "入口区域", "x": 100, "y": 100, "w": 300, "h": 400 }, { "name": "窗户区域", "x": 500, "y": 50, "w": 200, "h": 200 } ] }

使用配置文件:

python mp4_checker.py video.mp4 --config regions.json

📊 输出示例

控制台/报告输出

================================================================================ 📹 MP4视频内容变动检测报告 生成时间: 2025-12-01 10:30:00 ================================================================================ 扫描视频数: 1 检测到变动时段总数: 3 -------------------------------------------------------------------------------- 📁 文件: /videos/camera01.mp4 分辨率: 1920x1080 时长: 1:30:00 (5400秒) 帧率: 25.00 fps ⚠️ 检测到 3 个变动时段: [1] 区域: 入口区域 时间: 0:05:23 - 0:05:45 持续: 22秒 最大变动: 15.3% [2] 区域: 入口区域 时间: 0:32:10 - 0:32:18 持续: 8秒 最大变动: 8.7% [3] 区域: 窗户区域 时间: 1:15:02 - 1:15:05 持续: 3秒 最大变动: 5.2%

CSV时间线输出

视频文件,区域,开始时间,结束时间,开始秒数,结束秒数,持续秒数,最大变动百分比 /videos/camera01.mp4,入口区域,0:05:23,0:05:45,323,345,22,15.3 /videos/camera01.mp4,入口区域,0:32:10,0:32:18,1930,1938,8,8.7 /videos/camera01.mp4,窗户区域,1:15:02,1:15:05,4502,4505,3,5.2

⚙️ 调整检测灵敏度

提高灵敏度(检测更小的变动)

python mp4_checker.py video.mp4 --threshold 15 --min-change 0.5

降低灵敏度(只检测明显变动)

python mp4_checker.py video.mp4 --threshold 40 --min-change 5.0

加快处理速度

# 每5帧采样一次(可能漏检短暂变动) python mp4_checker.py video.mp4 --sample-interval 5

🔧 工作原理

  1. 帧差法 - 对比相邻帧的像素差异
  2. 灰度处理 - 转换为灰度图减少计算量
  3. 高斯模糊 - 去除噪声干扰
  4. 阈值过滤 - 只记录超过设定百分比的变动
  5. 时间合并 - 连续的变动事件合并为时间段

📝 实际应用场景

  1. 监控回放 - 快速定位有人/物出现的时间点
  2. 安防检查 - 检测特定区域(门、窗)的异常
  3. 视频审核 - 批量检查监控录像是否有事件发生
  4. 事件提取 - 导出变动时间点用于视频剪辑

⏰ 定时任务

# 每天凌晨分析前一天的监控 0 1 * * * python /path/to/mp4_checker.py /videos/$(date -d yesterday +\%Y\%m\%d)/ \ --config /path/to/regions.json \ --report /logs/report_$(date +\%Y\%m\%d).txt \ --csv /logs/timeline_$(date +\%Y\%m\%d).csv

License

MIT License