根因诊断(网络问题,非代码逻辑):
- NAS(中国移动) → Oracle(美国Phoenix) 跨境上行带宽实测仅 0.5-0.9MB/s 且波动大
- 下载方向 3.0MB/s(非对称,典型国际出口拥塞)
- Tailscale P2P: ping 可通(224ms)但持续数据流被阻断(0 B/s, 127s超时)
- 360MB 原始视频上传需 10-20min,任何大分块都会超时
NAS dispatcher:
- 新增 _compress_video: 480p/CRF28/veryfast,静态监控场景实测 ~36x 压缩比
(360MB → ~12MB,上传时间 20min → ~30s)
- ffmpeg 自动探测: CodecPack ffmpeg41(带libx264) > /usr/local/bin > PATH
(Synology 系统 ffmpeg 被裁剪,无 h264 编解码)
- scale 两级滤镜: force_original_aspect_ratio=decrease + trunc(iw/2)*2
(h264 要求偶数尺寸,853x480 会报错)
- 压缩缓存 /tmp/fam_compressed/task_{id}/,源文件未变则重试复用,TTL 24h
- 压缩完成后重置 PROCESSING 状态(重置 stale 回收计时基准)
- 压缩失败回退原始文件分块上传
- _query_uploaded_chunks 失败时记录日志(原静默失败导致全量重传无感知)
Edge api_gateway:
- fix: total_chunks 变更清理旧分块后同步重写 meta.json
(原 bug: meta.json 不更新导致每块上传都触发清理,删除同批新分块死循环)
config:
- stale_timeout 600→1800(覆盖压缩+上传+Edge队列积压总时长)
- 新增 ffmpeg_path / compress_timeout 配置项
39 lines
1.3 KiB
Plaintext
39 lines
1.3 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
|