Repository navigation
Releases
EasyNVR-RecordAlert v1.0.17
两件事:日报统计区间能跨夜了,告警推送能挑时段了;外加一个折行 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
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,谎报「已发送」,当天不再补发。
改动
- 限流自动退避重试:识别飞书 11232/11233、钉钉 130101、企微 45009 及文本兜底;立即 + 20s + 60s 共 3 次尝试,带 ±20% 抖动。只对限流重试——webhook 写错、关键词不匹配、签名错立即返回。
- 日报失败不再谎报:全部渠道成功才写
last_report_day;失败登记补发(5 分钟后、最多 3 次),日志如实写失败渠道。 - 告警失败回滚重发:失败回滚
last_alert_time,按 30→60→120→300 秒退避补发,不再让一次限流吞掉整个静默期的告警。 - 错峰提醒:日报时间设整点且启用飞书时,配置页提示改到 09:05。
自检
selftest.py 从 100 项扩到 155 项,新增限流重试 / 日报补发 / 告警退避三组用例;邮件自检 59 项。
EasyNVR-RecordAlert v1.0.13
v1.0.13 · 新增「电子邮件」推送渠道
推送渠道增加到四个:钉钉 / 飞书 / 企业微信 / 电子邮件(SMTP 直发)。
- 支持 SSL(465) / STARTTLS(587) / 明文(25) 三种加密方式
- 收件人可多个(逗号、分号或换行分隔),发件人留空则用登录账号
- 主题自动拼前缀 + 告警正文首行
- 发送失败按「连接超时 / TLS 握手 / 鉴权被拒 / 收件人被拒 / 正文被拒 / 部分收件人被拒」分别给出可读原因并带 SMTP 返回码,不会把失败记成已发送
为什么自己连 SMTP
飞牛系统自带的「通知邮箱」对第三方应用是关着的:SMTP 凭据在 SAC 里加密存储还原不出、发信 CGI 需管理员 WebUI 会话、推送总线 socket 仅 root、开放平台也没有邮件/通知 API。所以用标准库 smtplib 自己连;想复用同一个邮箱,把授权码在应用里再填一次即可。
顺手修掉的两个既有 bug
config.as_int()转换失败时跳过了 clamp,导致as_int("abc", 25, 1, 65535)返回 1(默认值被下限夹坏)。- 收件人拆分不能走
as_list()(只认逗号/分号),多行文本框按行写会整行当成一个地址。
注:本版本此前只打了 tag 未发布 Release,此包由 v1.0.13 源码重新构建,代码与该 tag 逐文件一致。
EasyNVR-RecordAlert v1.0.12
飞牛 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 秒。
安装
- 应用中心 → 手动安装 → 上传
EasyNVR-RecordAlert-1.0.12.fpk(向导只问推送渠道与检测参数); - 应用中心 → 本应用 → 设置 → 授权目录,把录像目录加为可读,然后重启应用;
- 打开应用 → 填「录像目录」并保存 → 确认通道列表 → 勾选推送渠道、填 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
飞牛 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,无横向溢出。
安装
- 应用中心 → 手动安装 → 上传
EasyNVR-RecordAlert-1.0.11.fpk(向导只问推送渠道与检测参数); - 应用中心 → 本应用 → 设置 → 授权目录,把录像目录加为可读,然后重启应用;
- 打开应用 → 填「录像目录」并保存 → 确认通道列表 → 勾选推送渠道、填 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
飞牛 fnOS 原生 fpk 应用:监控 EasyNVR 录像目录,通道长时间没有新增录像就推送告警,
每天固定时间推送前一天各通道录像数量统计。支持钉钉(含加签)/ 飞书 / 企业微信。
v1.0.10 · 推送渠道按需展开
以前 4 个 Webhook 输入框一直摆在那里(哪怕只用飞书),看着乱;现在勾哪个渠道才出现哪个框。
- 只勾「钉钉」→ 出现「钉钉 Webhook」+「钉钉加签密钥」;
- 勾「飞书」→ 出现「飞书 Webhook」;勾「企业微信」→ 出现「企业微信 Webhook」;
- 一个都不勾 → 那一片只显示一行提示:「勾选上面的渠道后,这里才会出现对应的 Webhook 填写框」;
- 取消勾选不清空已填内容(值仍随保存一起提交),重新勾选立刻恢复显示。
实现:4 个填写框各带 data-ch,syncPushFields() 按 ch_<渠道> 的勾选状态切 hidden,
勾选事件与「加载配置」后都会同步(fillConfig() 末尾调用)。纯前端改动,后端零变化。
验证(本机真机,配置里只启用了飞书):
| 操作 | 结果 |
|---|---|
| 打开页面 | 只显示「飞书 Webhook」,钉钉 2 个框与企微框隐藏,提示行隐藏 |
| 勾「钉钉」 | 钉钉 Webhook + 加签密钥立即出现 |
| 取消「钉钉」 | 两框隐藏,已填内容保留 |
| 全部取消 | 4 框全隐藏,提示行出现 |
| 重新勾「飞书」 | 飞书框恢复,提示行隐藏 |
安装
- 应用中心 → 手动安装 → 上传
EasyNVR-RecordAlert-1.0.10.fpk(向导只问推送渠道与检测参数); - 应用中心 → 本应用 → 设置 → 授权目录,把录像目录加为可读,然后重启应用;
- 打开应用 → 填「录像目录」并保存 → 确认通道列表 → 勾选推送渠道、填 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
飞牛 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 自适应 |
| 保存 | 点「保存配置」→「已保存。」,两块内容一次提交 |
安装
- 应用中心 → 手动安装 → 上传
EasyNVR-RecordAlert-1.0.9.fpk(向导只问推送渠道与检测参数); - 应用中心 → 本应用 → 设置 → 授权目录,把录像目录加为可读,然后重启应用;
- 打开应用 → 填「录像目录」并保存 → 确认通道列表 → 填 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
飞牛 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 里写 <摄像头ID> 这类 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 个文件
安装
- 应用中心 → 手动安装 → 上传
EasyNVR-RecordAlert-1.0.8.fpk(向导只问推送渠道与检测参数); - 应用中心 → 本应用 → 设置 → 授权目录,把录像目录加为可读,然后重启应用;
- 打开应用 → 填「录像目录」并保存 → 确认通道列表 → 填 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
飞牛 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 按设计在区块内横向滚动)。
安装
- 应用中心 → 手动安装 → 上传
EasyNVR-RecordAlert-1.0.7.fpk,向导里填录像根目录(必填、绝对路径); - 应用中心 → 本应用 → 设置 → 授权目录,把该目录加为可读,然后重启应用;
- 打开应用 → 确认通道列表 → 填 webhook → 「测试推送」。
外接存储(U 盘/SD 卡)另需「文件管理 → 设置 → 外接存储权限 → 所有账户可见」。
校验
文件:EasyNVR-RecordAlert-1.0.7.fpk
大小:46974 B
sha256:b20962aa6da0ce34c531934842d56850879cab8c10722b2975594bcc3de901e6
EasyNVR-RecordAlert v1.0.6
飞牛 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 天
安装
- 应用中心 → 手动安装 → 上传
EasyNVR-RecordAlert-1.0.6.fpk,向导里填录像根目录(必填、绝对路径); - 应用中心 → 本应用 → 设置 → 授权目录,把该目录加为可读,然后重启应用;
- 打开应用 → 确认通道列表 → 填 webhook → 「测试推送」。
外接存储(U 盘/SD 卡)另需「文件管理 → 设置 → 外接存储权限 → 所有账户可见」。
校验
文件:EasyNVR-RecordAlert-1.0.6.fpk
大小:46071 B
sha256:32114081b40d746328bbd7f44a930bb0270c2a2ca722a3021823de79007afadb