分析MP4视频画面,检测特定区域的变动,记录变动发生的时间点,生成日志方便查找监控录像。
pip install opencv-python numpy
或使用 requirements.txt:
pip install -r requirements.txt
python mp4_checker.py /path/to/video.mp4
# 格式: 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
python mp4_checker.py /path/to/videos/
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%
视频文件,区域,开始时间,结束时间,开始秒数,结束秒数,持续秒数,最大变动百分比 /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
# 每天凌晨分析前一天的监控
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
MIT License