Skip to content

Releases

EasyNVR-RecordAlert v1.0.17

Choose a tag to compare

@st1341815 st1341815 released this 04 Nov 07:07

两件事:日报统计区间能跨夜了,告警推送能挑时段了;外加一个折行 bug 的修复

安装包:EasyNVR-RecordAlert-1.0.17.fpk(67455 字节,sha256 013911d134d213ae515dd528848c7f143f251030eb2e9bc9c815d60569f46020)
升级前请先读文末「升级注意」——卸载会清空授权目录,必须补一步。

一、日报统计区间可自定义

  • 默认 00:00 — 23:59,等价于以前的「昨天整天」,升级后日报内容不变。
  • HH:MM 含端点,所以默认区间内部是 [昨天 00:00, 今天 00:00),23:59 那一分钟不会丢。
  • 起 > 止 = 跨天:08:00 — 08:00 是 24 小时,18:00 — 06:00 是 12 小时。
  • 统计取「最近一个已结束的完整区间」:日报 09:00 发、区间 08:00—08:00 时,统计昨天 08:00 到今天 08:00。
  • 正文改成 统计区间:2026-11-03 08:00 — 2026-11-04 08:00,跨天不再含糊写成「昨天」。
  • 「补发昨日日报」改名「补发最近一期日报」(区间不再固定是昨天)。

二、推送计划:按星期 + 时段静默

  • 新增「告警推送计划」:勾星期(一~日)+ 起止时段,默认「每天 00:00–23:59」= 全天。
    快捷按钮:每天 / 工作日 / 周末。
  • 时段外(夜里、周末)只检测不推送:扫描照常跑、状态页照常显示异常、日志照常记,只是不发告警。
  • 而且不推进告警状态 —— 夜里断流不会被静默规则吃掉,进入时段后的第一轮扫描立刻补发一条。
  • 跨夜时段(22:00 — 07:00)与「起止相同 = 全天」都支持;18:00 这种端点算在时段内。
  • 页面「立即检测」= 人就在旁边看着,默认绕过推送计划强制发一次。
  • 状态页新增「告警推送计划 工作日 08:00–18:00」,不在时段内时显示「(当前静默)」。
  • 日报有自己独立的推送日,不受告警时段影响 —— 关掉夜间告警不会顺手关掉日报。

三、界面:推送日不再折行(1.0.17)

  • 推送时间的输入框收窄到 9em(约 126px,原满格约 289px)。
  • 两组「推送日」改为独占整行、勾选项不折行。
  • 375 / 560 / 700 / 768 / 900 / 1100 / 1440 px 七档宽度实测:单行、无横向溢出。

四、其他调整

  • 日报的所有设置(开关 / 时间 / 统计区间 / 推送日)挪进「推送渠道」卡片,和渠道一次保存;
    「配置」卡片只管录像目录 / 布局 / 阈值 / 时区 / 别名。
  • 容错:推送日空选或全是非法值 → 回落「每天」,绝不让一次漏勾变成永久静默。
  • 支持 周一,周三 / 1 3 5 / [1,3] 三种写法;8:00 全角冒号照常归一。
  • 旧配置没有这些键 → 全部取默认(每天 + 全天 + 00:00–23:59),行为与 1.0.15 一致。

升级注意(踩过,写下来)

trim-cli app uninstall 会连「授权目录」一起清掉:/vol1/@appdata/erm 里的
config.json / state.json / logs 都保留,但 app config auth-paths erm 变成空列表。
升级后不补这一步,应用一个录像文件都读不到:

trim-cli app config set-authorization-path erm /vol3/1000/NVR --perm 6 --yes
trim-cli app config auth-paths erm        # 必须能看到那条路径
trim-cli app restart erm --yes

自检

  • 断言数 164 → 209 项(新增统计区间边界 / 跨夜长度 / 时段判定 / 星期归一 / 时段外闸门)
  • 邮件专项 62 项、端到端全绿

EasyNVR-RecordAlert v1.0.14

Choose a tag to compare

@st1341815 st1341815 released this 02 Nov 06:25

v1.0.14 · 限流不再吞掉日报与告警

起因(线上实测):

2026-11-01 09:00:12 [ERROR] 推送 feishu 失败:code=11233 chat rate limit
2026-11-01 09:00:12 [INFO]  日报已发送:2026-11-01          ← 明明失败了
2026-11-02 09:00:11 [ERROR] 推送 feishu 失败:code=11232 frequency limited psm[app_platform_runtime]appID[1500]
2026-11-02 09:00:11 [INFO]  日报已发送:2026-11-02          ← 又是这样

同一机器人 12:30 / 15:54 手动测试都成功,两天都只在 09:00 整点失败 → 不是配置、不是网络,是飞书平台侧应用级配额在整点推送高峰被占满(appID[1500] 是所有自定义机器人共用的内置应用)。

坏在两点:① 失败一次就彻底放弃、没有重试;② run_daily() 无论成败都写 last_report_day,谎报「已发送」,当天不再补发。

改动

  1. 限流自动退避重试:识别飞书 11232/11233、钉钉 130101、企微 45009 及文本兜底;立即 + 20s + 60s 共 3 次尝试,带 ±20% 抖动。只对限流重试——webhook 写错、关键词不匹配、签名错立即返回。
  2. 日报失败不再谎报:全部渠道成功才写 last_report_day;失败登记补发(5 分钟后、最多 3 次),日志如实写失败渠道。
  3. 告警失败回滚重发:失败回滚 last_alert_time,按 30→60→120→300 秒退避补发,不再让一次限流吞掉整个静默期的告警。
  4. 错峰提醒:日报时间设整点且启用飞书时,配置页提示改到 09:05。

自检

selftest.py 从 100 项扩到 155 项,新增限流重试 / 日报补发 / 告警退避三组用例;邮件自检 59 项。

EasyNVR-RecordAlert v1.0.13

Choose a tag to compare

@st1341815 st1341815 released this 02 Nov 06:37

v1.0.13 · 新增「电子邮件」推送渠道

推送渠道增加到四个:钉钉 / 飞书 / 企业微信 / 电子邮件(SMTP 直发)。

  • 支持 SSL(465) / STARTTLS(587) / 明文(25) 三种加密方式
  • 收件人可多个(逗号、分号或换行分隔),发件人留空则用登录账号
  • 主题自动拼前缀 + 告警正文首行
  • 发送失败按「连接超时 / TLS 握手 / 鉴权被拒 / 收件人被拒 / 正文被拒 / 部分收件人被拒」分别给出可读原因并带 SMTP 返回码,不会把失败记成已发送

为什么自己连 SMTP

飞牛系统自带的「通知邮箱」对第三方应用是关着的:SMTP 凭据在 SAC 里加密存储还原不出、发信 CGI 需管理员 WebUI 会话、推送总线 socket 仅 root、开放平台也没有邮件/通知 API。所以用标准库 smtplib 自己连;想复用同一个邮箱,把授权码在应用里再填一次即可。

顺手修掉的两个既有 bug

  1. config.as_int() 转换失败时跳过了 clamp,导致 as_int("abc", 25, 1, 65535) 返回 1(默认值被下限夹坏)。
  2. 收件人拆分不能走 as_list()(只认逗号/分号),多行文本框按行写会整行当成一个地址。

注:本版本此前只打了 tag 未发布 Release,此包由 v1.0.13 源码重新构建,代码与该 tag 逐文件一致。

EasyNVR-RecordAlert v1.0.12

Choose a tag to compare

@st1341815 st1341815 released this 30 Oct 07:50

飞牛 fnOS 原生 fpk 应用:监控 EasyNVR 录像目录,通道长时间没有新增录像就推送告警,
每天固定时间推送前一天各通道录像数量统计。支持钉钉(含加签)/ 飞书 / 企业微信。

v1.0.12 · 在线时长显示真实时长(分档)

上一版为了省扫描开销,3 天没断流就写 >3 天。现在算到底、按档位显示真实时长 ——
反正视频只保留约 180 天,不存在跨年,扫活整棵树也就 1 秒出头。

显示档位:

时长 显示
不到 1 分钟 不足 1 分钟
不到 60 分钟 N 分钟
不到 100 小时 H 小时 M 分 / H 小时
满 100 小时 D 天 H 时 / D 天
满 100 天 M 月 D 天 H 时(1 月按 30 天)

边界实测:

 99 小时        → 99 小时
 99 小时 59 分  → 99 小时 59 分
100 小时        → 4 天 4 时
 99 天          → 99 天
100 天          → 3 月 10 天
150 天          → 5 月
180 天          → 6 月        (最长保留期,永远不会出现「年」)

计算:从最新录像往回逐个比对相邻文件 mtime(跨日期目录、camera 布局下跨 profile_N
一起比对),第一个超过 5 分钟的间隔就是断点;一路到最早录像都没断,就按最早录像起算。

性能:只有「真的一直没断流」的通道才会扫满全树。实测 5500 个 mp4 全量 stat 0.03 秒,
按 180 天外推约 1 秒,每 5 分钟扫一次。

验证:selftest.py 重写 test_online_streak()(连续 30 分钟 / 断流→— / 连续 3 小时 /
camera 聚合两 profile / 连续 5 天扫到底不封顶 / 9 个格式化档位),96 项断言 SELFTEST_ERM_OK;
e2e_local.py 通过;真实设备上两个通道算得 25 小时 24 分 / 25 小时 25 分,单通道 0.03 秒。

安装

  1. 应用中心 → 手动安装 → 上传 EasyNVR-RecordAlert-1.0.12.fpk(向导只问推送渠道与检测参数);
  2. 应用中心 → 本应用 → 设置 → 授权目录,把录像目录加为可读,然后重启应用;
  3. 打开应用 → 填「录像目录」并保存 → 确认通道列表 → 勾选推送渠道、填 Webhook → 「测试推送」。

外接存储(U 盘/SD 卡)另需「文件管理 → 设置 → 外接存储权限 → 所有账户可见」。

已装旧版要升级:命令行 appcenter-cli 对已安装应用直接报「已安装」,得 uninstall + install
(授权目录会被清空,需重新授权);也可就地替换 target 里的程序文件后 appcenter-cli stop/start
(保留配置与授权,但应用中心里的版本号不会变)。

校验

文件:EasyNVR-RecordAlert-1.0.12.fpk
大小:50354 B
sha256:33c375b898ccb1bff98d526c72518eeffb47d4f560b426d996289dd0323e7d82

EasyNVR-RecordAlert v1.0.11

Choose a tag to compare

@st1341815 st1341815 released this 30 Oct 07:14

飞牛 fnOS 原生 fpk 应用:监控 EasyNVR 录像目录,通道长时间没有新增录像就推送告警,
每天固定时间推送前一天各通道录像数量统计。支持钉钉(含加签)/ 飞书 / 企业微信。

v1.0.11 · 通道状态新增「在线时长」

「通道状态」表多了一列 在线时长,位置就在「最新录像」与「已闲置」之间:

通道   目录              状态   最新录像               在线时长        已闲置   文件数
大门   O27fqV6dYvs3T     正常   2026-10-30 15:10:35   24 小时 45 分   0 分钟   5507
客厅   Ou5Rv3hRv7gaU     正常   2026-10-30 15:10:53   24 小时 47 分   0 分钟   5431

口径:从最新录像文件往回数,相邻文件间隔不超过 5 分钟就算连续录像
(EasyNVR 正常约 1 分钟一段,5 分钟能包容偶发写入延迟);碰到第一个更大的间隔就是断点,
断点到最新文件的时间差即「在线时长」。

情况 显示
连续 30 分钟 30 分钟
连续 1 小时 30 分 1 小时 30 分
连续 2 天 2 小时 2 天 2 小时
最近 3 天内始终没断(断点在更早) >3 天
通道断流 / 无录像 / 无权限 / 目录不存在 —(只有正在录像才叫「在线」)
刚恢复不到 1 分钟 不足 1 分钟

camera 布局下会把该摄像头所有 profile_N 的录像时间合起来算(子码流断续不影响判定)。

跨零点不会误判:EasyNVR 按天分目录,午夜那条连续的录像会跨两个目录。
实现里「最老的日期目录」是部分覆盖的,所以截断判定时多扫一个目录兜住边界 ——
实测真实数据从 10-29 00:00 连续录到 10-30 15:10,显示 24 小时 45 分 而不是被打断成几小时。

验证:selftest.py 新增 test_online_streak()(连续/断流/截断/跨零点/camera 聚合/
五个格式化档位),全量 101 项断言 SELFTEST_ERM_OK;e2e_local.py 通过;
手机端(375px 视口)7 列卡片化后卡片内滚动宽度 349 < 卡片 351,无横向溢出。

安装

  1. 应用中心 → 手动安装 → 上传 EasyNVR-RecordAlert-1.0.11.fpk(向导只问推送渠道与检测参数);
  2. 应用中心 → 本应用 → 设置 → 授权目录,把录像目录加为可读,然后重启应用;
  3. 打开应用 → 填「录像目录」并保存 → 确认通道列表 → 勾选推送渠道、填 Webhook → 「测试推送」。

外接存储(U 盘/SD 卡)另需「文件管理 → 设置 → 外接存储权限 → 所有账户可见」。

已装旧版要升级:命令行 appcenter-cli 对已安装应用直接报「已安装」,得 uninstall + install
(授权目录会被清空,需重新授权);也可就地替换 target 里的程序文件后 appcenter-cli stop/start
(保留配置与授权,但应用中心里的版本号不会变)。

校验

文件:EasyNVR-RecordAlert-1.0.11.fpk
大小:49941 B
sha256:0cc52c4b1d0788952424d826dd09b9cbcf6ae4cde5d9be98e0a6fe696af9ba78

EasyNVR-RecordAlert v1.0.10

Choose a tag to compare

@st1341815 st1341815 released this 29 Oct 11:07

飞牛 fnOS 原生 fpk 应用:监控 EasyNVR 录像目录,通道长时间没有新增录像就推送告警,
每天固定时间推送前一天各通道录像数量统计。支持钉钉(含加签)/ 飞书 / 企业微信。

v1.0.10 · 推送渠道按需展开

以前 4 个 Webhook 输入框一直摆在那里(哪怕只用飞书),看着乱;现在勾哪个渠道才出现哪个框。

  • 只勾「钉钉」→ 出现「钉钉 Webhook」+「钉钉加签密钥」;
  • 勾「飞书」→ 出现「飞书 Webhook」;勾「企业微信」→ 出现「企业微信 Webhook」;
  • 一个都不勾 → 那一片只显示一行提示:「勾选上面的渠道后,这里才会出现对应的 Webhook 填写框」;
  • 取消勾选不清空已填内容(值仍随保存一起提交),重新勾选立刻恢复显示。

实现:4 个填写框各带 data-ch,syncPushFields() 按 ch_<渠道> 的勾选状态切 hidden,
勾选事件与「加载配置」后都会同步(fillConfig() 末尾调用)。纯前端改动,后端零变化。

验证(本机真机,配置里只启用了飞书):

操作 结果
打开页面 只显示「飞书 Webhook」,钉钉 2 个框与企微框隐藏,提示行隐藏
勾「钉钉」 钉钉 Webhook + 加签密钥立即出现
取消「钉钉」 两框隐藏,已填内容保留
全部取消 4 框全隐藏,提示行出现
重新勾「飞书」 飞书框恢复,提示行隐藏

安装

  1. 应用中心 → 手动安装 → 上传 EasyNVR-RecordAlert-1.0.10.fpk(向导只问推送渠道与检测参数);
  2. 应用中心 → 本应用 → 设置 → 授权目录,把录像目录加为可读,然后重启应用;
  3. 打开应用 → 填「录像目录」并保存 → 确认通道列表 → 勾选推送渠道、填 Webhook → 「测试推送」。

外接存储(U 盘/SD 卡)另需「文件管理 → 设置 → 外接存储权限 → 所有账户可见」。

已装旧版要升级:命令行 appcenter-cli 对已安装应用直接报「已安装」,得 uninstall + install
(授权目录会被清空,需重新授权);也可就地替换 target 里的程序文件后 appcenter-cli stop/start
(保留配置与授权,但应用中心里的版本号不会变)。

校验

文件:EasyNVR-RecordAlert-1.0.10.fpk
大小:47887 B
sha256:e5ad56e6c2ea608fae3d45c6bacdefbc1df8be5342f85c8e6855346a955ba1a1

EasyNVR-RecordAlert v1.0.9

Choose a tag to compare

@st1341815 st1341815 released this 29 Oct 08:02

飞牛 fnOS 原生 fpk 应用:监控 EasyNVR 录像目录,通道长时间没有新增录像就推送告警,
每天固定时间推送前一天各通道录像数量统计。支持钉钉(含加签)/ 飞书 / 企业微信。

v1.0.9 · 配置区排版整理

纯 UI 调整,逻辑没动。

问题:输入框标签里塞了大段说明 —— 例如「通道布局(通道按 <摄像头ID>/profile_N/<日期> 自动发现)」,
卡片里字段是 minmax(220px, 1fr) 的网格,这种长度必然自动折行,很难看。

改法:

  • 标签只留字段名,说明统一挪到卡片底部的注释块(border-top: 1px dashed、
    灰色小字、行高 1.75,目录结构用 code 包住);
  • 「配置」与「推送渠道」拆成两张卡片,保存按钮放在「推送渠道」卡片底部 ——
    两块仍在同一个 <form> 里,点一次保存一起提交,改配置不用点两次;
  • 标签顺手瘦身:重复提醒间隔(分钟,0=只提醒一次) → 重复提醒间隔(分钟)、
    扫描间隔(秒,≥30) → 扫描间隔(秒),这些语义都写进了注释块。

验证:

场景 结果
桌面(1440px) 16 个标签全部单行(高 19~20px),无折行
手机(375px 视口) scrollWidth = 375,溢出 0;注释块宽 317px 自适应
保存 点「保存配置」→「已保存。」,两块内容一次提交

安装

  1. 应用中心 → 手动安装 → 上传 EasyNVR-RecordAlert-1.0.9.fpk(向导只问推送渠道与检测参数);
  2. 应用中心 → 本应用 → 设置 → 授权目录,把录像目录加为可读,然后重启应用;
  3. 打开应用 → 填「录像目录」并保存 → 确认通道列表 → 填 webhook → 「测试推送」。

外接存储(U 盘/SD 卡)另需「文件管理 → 设置 → 外接存储权限 → 所有账户可见」。

已装旧版要升级:命令行 appcenter-cli 对已安装应用直接报「已安装」,得 uninstall + install
(授权目录会被清空,需重新授权);也可就地替换 target 里的程序文件后 appcenter-cli stop/start
(保留配置与授权,但应用中心里的版本号不会变)。

校验

文件:EasyNVR-RecordAlert-1.0.9.fpk
大小:47287 B
sha256:a341899f8640c216250f7ef8983ee9c00e9cd456551f7f21bd94900504eb8fb5

EasyNVR-RecordAlert v1.0.8

Choose a tag to compare

@st1341815 st1341815 released this 29 Oct 07:32

飞牛 fnOS 原生 fpk 应用:监控 EasyNVR 录像目录,通道长时间没有新增录像就推送告警,
每天固定时间推送前一天各通道录像数量统计。支持钉钉(含加签)/ 飞书 / 企业微信。

v1.0.8 · 安装向导瘦身 + 删除 stream_* 相关设置

按现场使用反馈,把和 EasyNVR 真实目录结构对不上的配置项去掉。

1)安装向导不再询问录像目录与通道

  • 第一步改为纯说明页:装完打开应用填「录像目录」,到「设置 → 授权目录」加可读,然后重启;
  • 删除 wizard_record_root / wizard_monitor_channels / wizard_channel_include 三个输入;
  • 想命令行预置目录仍可:appcenter-cli install-fpk xxx.fpk -e install.env,install.env 里写 wizard_record_root=...。

2)删除 stream_* 相关设置(EasyNVR 根本不生成这类目录)

去掉的项 原因
页面「通道(逗号分隔,支持 stream_* 通配;留空用下面的规则)」monitor_channels 手填通道清单只会填错
页面「单层目录的自动发现规则(布局=单层时生效)」channel_include 没有单层目录这种形态
「通道布局」的 auto / flat 选项 auto 在真实布局下等价于 camera,flat 已无对应目录

通道现在只按 <录像根目录>/<摄像头ID>/profile_N/<YYYYMMDD>/<录像文件> 自动发现,
口径可选摄像头聚合(默认,一个摄像头一个通道)或按 profile 分开。

兼容旧配置:auto / flat 自动归一到 camera;monitor_channels、channel_include
在加载/保存时直接丢弃,config.json 下次保存就干净了。

顺手修掉的打包坑:fnpack 用 INI 解析 manifest,半角 ; 是行内注释起点 ——
desc 里写 &lt;摄像头ID&gt; 这类 HTML 实体(自带分号)会让值在 ; 处截断、
剩余半句变注释(实测包内 desc 被切成两行、changelog 从 v1.0.7 往前整段丢失)。
现改为直接写「摄像头ID/profile_N/日期/」,并在 README / 实测报告里记下验收方法。

验证

selftest.py    79 项断言全过(69 → 79,新增「stream_* 一层目录不再算通道」等回归)
e2e_local.py   端到端全过(含「废弃字段已不在配置里」)
真机(/vol3/1000/NVR/easynvr_rec,2 摄像头 8134 个录像文件)
  version 1.0.8 | layout camera | channels 2 | alerting 0
  O27fqV6dYvs3T 正常 4092 个文件;Ou5Rv3hRv7gaU 正常 4042 个文件

安装

  1. 应用中心 → 手动安装 → 上传 EasyNVR-RecordAlert-1.0.8.fpk(向导只问推送渠道与检测参数);
  2. 应用中心 → 本应用 → 设置 → 授权目录,把录像目录加为可读,然后重启应用;
  3. 打开应用 → 填「录像目录」并保存 → 确认通道列表 → 填 webhook → 「测试推送」。

外接存储(U 盘/SD 卡)另需「文件管理 → 设置 → 外接存储权限 → 所有账户可见」。

已经装过旧版想升级:appcenter-cli 对已安装应用直接报「已安装」,命令行升级要
uninstall + install(授权目录会被清空,需重新授权)。也可以就地替换
target 下的程序文件后 appcenter-cli stop/start(保留配置与授权,但应用中心里的版本号不会变)。

校验

文件:EasyNVR-RecordAlert-1.0.8.fpk
大小:46804 B
sha256:bc8051f53160ea37f45b3dcad6e88178287c9a0521253c03d9267f67533d1229

EasyNVR-RecordAlert v1.0.7

Choose a tag to compare

@st1341815 st1341815 released this 29 Oct 04:30

飞牛 fnOS 原生 fpk 应用:监控 EasyNVR 录像目录,通道长时间没有新增录像就推送告警,
每天固定时间推送前一天各通道录像数量统计。支持钉钉(含加签)/ 飞书 / 企业微信。

v1.0.7 · 修复手机端通道表溢出屏幕

现象:用手机飞牛客户端打开应用,通道状态里的文本顶出屏幕。

根因:表格所有 th/td 都设了 white-space: nowrap(当初是为了不让日期和中文折行),
6 列的 min-content 宽度被顶到 520px;而 .card 又没有横向滚动兜底,
于是在 375px 视口下 documentElement.scrollWidth 变成 555px(溢出 180px)。

修复:

  • ≤640px 时通道表改为逐通道卡片:左边标签、右边值,长摄像头 ID 可换行,不再横向溢出;
  • .card 加 overflow-x: auto 兜底,任何宽内容都不会顶出屏幕;
  • 表单控件在手机上用 16px 字号(防 iOS 聚焦缩放);
  • 无别名时「目录」列与通道名重复,手机上自动隐藏;
  • 桌面端(>640px)表格布局保持不变。

验证(390px 视口的 iframe 内实测):

视口 scrollWidth 溢出 被裁文字
375px 375 0 无
320px 305 0 无

通道表、一键自检表、日志区均无元素超出视口(日志 pre 按设计在区块内横向滚动)。

安装

  1. 应用中心 → 手动安装 → 上传 EasyNVR-RecordAlert-1.0.7.fpk,向导里填录像根目录(必填、绝对路径);
  2. 应用中心 → 本应用 → 设置 → 授权目录,把该目录加为可读,然后重启应用;
  3. 打开应用 → 确认通道列表 → 填 webhook → 「测试推送」。

外接存储(U 盘/SD 卡)另需「文件管理 → 设置 → 外接存储权限 → 所有账户可见」。

校验

文件:EasyNVR-RecordAlert-1.0.7.fpk
大小:46974 B
sha256:b20962aa6da0ce34c531934842d56850879cab8c10722b2975594bcc3de901e6

EasyNVR-RecordAlert v1.0.6

Choose a tag to compare

@st1341815 st1341815 released this 29 Oct 01:11

飞牛 fnOS 原生 fpk 应用:监控 EasyNVR 录像目录,通道长时间没有新增录像就推送告警,
每天固定时间推送前一天各通道录像数量统计。支持钉钉(含加签)/ 飞书 / 企业微信。

v1.0.6 · 识别事件抓拍目录

  • 识别 EasyNVR 的 <YYYYMMDD>_event 抓拍目录:按日期目录处理并按扩展名过滤,
    里面的 jpg 不会被当成录像(也不影响「最新录像时间」判定)。

通道识别(v1.0.5 起,按现场真实结构)

<录像根目录>/<摄像头随机ID>/profile_<通道号>/<YYYYMMDD>/20261029000315-62000.mp4
  • 通道布局:摄像头聚合(默认,一个摄像头=一个通道,子码流不录制也不误报)/ 按 profile 分开 / 单层目录
  • 摄像头别名:O27fqV6dYvs3T=大门 → 告警与日报显示「大门(O27fqV6dYvs3T)」
  • 扫描按日期目录逐天打开(1.8 万个 mp4 约 0.06 秒),回溯上限 120 天

安装

  1. 应用中心 → 手动安装 → 上传 EasyNVR-RecordAlert-1.0.6.fpk,向导里填录像根目录(必填、绝对路径);
  2. 应用中心 → 本应用 → 设置 → 授权目录,把该目录加为可读,然后重启应用;
  3. 打开应用 → 确认通道列表 → 填 webhook → 「测试推送」。

外接存储(U 盘/SD 卡)另需「文件管理 → 设置 → 外接存储权限 → 所有账户可见」。

校验

文件:EasyNVR-RecordAlert-1.0.6.fpk
大小:46071 B
sha256:32114081b40d746328bbd7f44a930bb0270c2a2ca722a3021823de79007afadb