Files
fire_leave_tool/README.md
T
2026-07-08 19:21:07 +08:00

91 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FireLeave_tool
## 当前代码情况
本仓库是动火离人/火焰检测边缘端工具,主程序使用 Go 编写,模块名为 `FireLeave_tool`,当前 `go.mod` 指定 Go 1.19。
主要能力:
- 启动并管理 `fire_leave``fire_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`,文件名格式为:
```text
{device_uuid}-{year}-{month}-{day}-{aligned_alarm_timestamp}.MP4
```
当前代码通过系统命令调用 FFmpeg:
```text
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 版本:
```sh
ffmpeg -version
```
建议将输出第一行记录到本节,例如:
```text
ffmpeg version <实际版本号>
```
## 构建与验证记录
最近一次文档记录中的构建信息:
```text
go version: go1.26.4
GOOS: linux
GOARCH: arm64
CGO_ENABLED: 0
binary: bin/fireleave_tool
```
常用验证命令:
```sh
go test ./...
go build -o bin/fireleave_tool.new .
```