界面重做(深色监控面板主题):
- 事件时间轴页: 左侧事件列表卡片 + 右侧关键帧时间轴
(时间点 + 视频帧 + 人物/动作/衣着摘要 + 关注标记)
- 全局 CSS: 深色主题、卡片化按钮、统计卡、对话气泡、成员卡片
- 侧边栏任务队列状态徽章; 历史帧无图时优雅降级占位
关键帧持久化链路:
- Edge orchestrator: process_push_task 成功后把 keyframes
base64 注入 frame_details[i].frame_image (位置对齐视觉输入帧)
- NAS event_receiver: 落库前 base64 解码写盘到
fam-ui/static/frames/event_{id}/frame_{idx}.jpg
- payload 增量 ~300KB/事件 (6帧 jpeg q80), 队列/拉取均无压力
配置: fam-core/fam-ui 新增 storage.frame_image_dir
43 lines
1.5 KiB
Plaintext
43 lines
1.5 KiB
Plaintext
# FAM-Core 配置文件 (NAS 端)
|
||
# 复制此文件为 config.yaml 并修改实际值
|
||
|
||
server:
|
||
host: "0.0.0.0"
|
||
port: 8000
|
||
|
||
database:
|
||
host: "127.0.0.1"
|
||
port: 3306
|
||
user: "root"
|
||
password: ""
|
||
database: "sentinel_home_ai"
|
||
|
||
scheduler:
|
||
scan_interval: 60 # 扫描间隔(秒)
|
||
video_dir: "/volume1/surveillance" # 视频录制目录
|
||
video_extensions: [".mp4", ".mkv", ".avi"]
|
||
file_stable_seconds: 60 # 文件稳定判定秒数
|
||
camera_name: "默认摄像头"
|
||
|
||
dispatcher:
|
||
poll_interval: 30 # 轮询间隔(秒)
|
||
edge_url: "http://100.x.x.20:5000/api/edge/video/enqueue" # 异步队列端点(上传入队,Poller 拉取结果)
|
||
max_retries: 5 # 文件级重试次数(分块级重试另计,每块3次)
|
||
stale_timeout: 1800 # PROCESSING 僵尸回收(秒),需大于压缩+上传+Edge队列积压总时长
|
||
# ffmpeg_path: "/var/packages/CodecPack/target/bin/ffmpeg41" # 可选,默认自动探测(Synology 需 CodecPack 版,系统版无 h264 编码)
|
||
compress_timeout: 3600 # 单个视频预压缩超时(秒)
|
||
|
||
video_server:
|
||
base_url: "http://100.x.x.10:8000/media"
|
||
token: "your-secret-token-here" # 视频访问 token
|
||
video_dir: "/volume1/surveillance"
|
||
|
||
chat_handler:
|
||
ollama_url: "http://100.x.x.20:11434/api/generate"
|
||
model_name: "llava-phi3"
|
||
timeout: 120
|
||
|
||
storage:
|
||
# 关键帧落盘目录(event_receiver 写入,fam-ui 读取展示时间轴)
|
||
frame_image_dir: "/volume1/web/sentinel-home-ai/fam-ui/static/frames"
|