2026-07-08 19:21:07 +08:00
2026-05-12 15:45:50 +08:00
2026-07-03 20:55:15 +08:00
2026-07-03 20:55:15 +08:00
2026-07-03 20:55:15 +08:00
2025-12-10 14:34:57 +08:00
2025-12-10 14:34:57 +08:00
2026-05-12 15:45:50 +08:00
2025-12-10 14:34:57 +08:00
2026-07-03 20:55:15 +08:00
2025-11-18 17:30:28 +08:00
2025-11-18 17:30:28 +08:00
2026-01-30 17:25:23 +08:00
2026-05-12 15:45:50 +08:00
2025-11-18 17:30:28 +08:00
2026-05-12 15:45:50 +08:00
2026-07-08 19:21:07 +08:00
2026-05-12 15:45:50 +08:00

FireLeave_tool

当前代码情况

本仓库是动火离人/火焰检测边缘端工具,主程序使用 Go 编写,模块名为 FireLeave_tool,当前 go.mod 指定 Go 1.19。

主要能力:

  • 启动并管理 fire_leavefire_check 两路推理进程。
  • 接收推理进程通过 HTTP 上报的检测结果和心跳。
  • 维护设备运行状态、告警冷却、禁报时间窗口和本地缓存。
  • 通过 WebSocket 与平台通信,支持告警、禁报时间等主题。
  • 检测到告警后合成事件前后视频,并上传到 Nginx/平台。
  • 支持 GPIO 按键触发本地告警暂停。

主要目录:

  • main.go:主流程入口,负责设备初始化、推理进程启动、状态监控和告警判断。
  • connect/:WebSocket 通信、设备配置存储、推理进程心跳与重启。
  • httpreader/:本地 HTTP 服务,接收推理结果、视频片段和心跳。
  • reporter/:告警视频上传、事件上报、禁报时间持久化。
  • video_server/:视频合成与上传逻辑。
  • gpio_monitor/GPIO 按键监控。
  • logger/:日志封装。
  • docs/usr_doc/:变更记录和客户操作说明。
  • bin/fireleave_tool:当前构建产物。

视频合成逻辑

视频合成入口在 video_server/video_merge.go

  • 根据告警时间对齐到 10 秒边界。
  • 优先查找告警前 10 秒、告警时刻、告警后 10 秒对应的视频片段。
  • 支持 .mp4.h264 输入。
  • 如果精确时间片段不足,会在目录中查找最接近目标时间的候选片段。
  • 至少找到 2 个片段才会执行合成。
  • 合成完成后复制到 /data/upload,文件名格式为:
{device_uuid}-{year}-{month}-{day}-{aligned_alarm_timestamp}.MP4

当前代码通过系统命令调用 FFmpeg:

ffmpeg -hide_banner -loglevel error -y ...

.h264 片段会先按时间顺序拼接为临时 .h264 文件,再使用 FFmpeg 封装为 MP4;.mp4 或混合输入则使用 FFmpeg concat list 方式合成,并使用 -c copy-movflags +faststart

本次视频合成使用的 FFmpeg 版本

当前仓库代码没有内置 FFmpeg 二进制,也没有在代码中锁定 FFmpeg 版本;运行时依赖部署环境 PATH 中可执行的 ffmpeg 命令。

本仓库可确认的相关信息:

  • Dockerfile 中安装的视频合成相关包为 mp4-merge_0.1.11-1_arm64.deb
  • video_server/video_merge.go 实际调用的是 ffmpeg 命令。
  • 当前 Windows 工作区未检测到可执行的 ffmpeg,因此无法从本机直接读取 ffmpeg -version 输出。

部署设备或容器中可用下面命令确认本次实际使用的 FFmpeg 版本:

ffmpeg -version

建议将输出第一行记录到本节,例如:

ffmpeg version <实际版本号>

构建与验证记录

最近一次文档记录中的构建信息:

go version: go1.26.4
GOOS: linux
GOARCH: arm64
CGO_ENABLED: 0
binary: bin/fireleave_tool

常用验证命令:

go test ./...
go build -o bin/fireleave_tool.new .
S
Description
No description provided
Readme 62 MiB
Languages
Go 96%
Shell 3.7%
Dockerfile 0.3%