Frigate NVR 完整教學 2026:3.6 萬星開源 AI 監視器,Docker 三步自架、只錄「有人有車」的片段(0.18 人臉辨識、車牌辨識、語意搜尋、GenAI 描述全攻略)

Frigate 是 3.6 萬星、MIT 授權的本地 NVR:用 OpenCV 做低成本的動作偵測,只在有動靜時把畫面裁切縮放丟給 AI 辨識人/車/動物,影片與資料全留在自己硬碟,沒有訂閱費。本文整理 0.18.2 的 Docker Compose 與 config.yml 完整寫法、五種偵測加速硬體(OpenVINO/Coral/Hailo/TensorRT/RKNN)選型與價格、儲存空間實算公式、0.18 新增的人臉辨識/車牌辨識/語意搜尋/GenAI 描述、七個實測踩過的坑,以及 Home Assistant 整合與手機推播設定。

  • Dennis
  • 10 分鐘閱讀
Frigate NVR 完整教學 2026:3.6 萬星開源 AI 監視器,Docker 三步自架、只錄「有人有車」的片段(0.18 人臉辨識、車牌辨識、語意搜尋、GenAI 描述全攻略)

Frigate 是一套完全跑在自己硬體上的 NVR:它只用 OpenCV 做低成本的動作偵測,只有在畫面有動靜時才把區域裁切、縮放後交給 AI 辨識人、車、動物,所以 4 台 1080p 攝影機用一台 Intel N100 迷你電腦就能跑。影片、快照、事件全存在自己的硬碟,沒有月費、沒有雲端。

為什麼不直接用攝影機廠商的雲端

痛點廠商雲端 NVR傳統 NVRFrigate
月費每台每月訂閱,越加越貴無,但要買主機無
通知準確度樹影、下雨、光線變化都會通知純動作偵測,誤報多AI 只認人/車/動物,可依物件決定通不通知
資料在哪廠商伺服器自己硬碟自己硬碟(含資料庫、快照、影像)
跨品牌只能同一家通常綁品牌只要 RTSP 就能接
自動化封閉 App幾乎沒有MQTT 全事件 + Home Assistant
事後找人只能手動拖時間軸手動拖依物件、區域、車牌,甚至自然語言搜尋

最後一項是 0.18 之後最大的差別:你可以直接問「昨晚門口那台白色廂型車」,不用再從晚上十點拖到凌晨兩點。

一表看懂

項目內容
專案blakeblackshear/frigate
最新版本v0.18.2(2026-10-15 發布)
GitHub 星數36,749(2026-10-19 以 GitHub API 查詢)
Fork/開啟中 issue3,726/94
授權MIT(可商用,但沒有保固)
技術底層Python + FastAPI + OpenCV + TensorFlow/ONNX,影像用 FFmpeg,串流用 go2rtc
網頁介面內建,8971 埠(需登入);5000 埠為內部無驗證 API
部署方式Docker Compose(官方推薦)或 Home Assistant App
物件偵測可換偵測器,支援 OpenVINO、EdgeTPU、Hailo、TensorRT、ROCm、RKNN、ONNX、Apple Silicon 等

它到底怎麼運作(比你想的省很多)

步驟做什麼為什麼這樣設計
1. 解碼用 FFmpeg 接 RTSP,背景解碼串流解碼交給硬體(VAAPI/QSV/NVDEC)就不吃 CPU
2. 動作偵測OpenCV 比對像素變化,標出「有動靜的區域」成本極低,絕大多數時間畫面是靜止的
3. 裁切與縮放只把動靜區域裁出來、縮到 320×320不把整張 4K 丟進模型,省下 90% 以上算力
4. 物件辨識送進偵測器判斷是人、車、狗還是腳踏車320×320 模型 + 裁切放大,反而對遠處小目標更準
5. 追蹤與事件跨影格追蹤 bounding box,符合條件就錄影/快照並發 MQTT預設 5 fps 就足以穩定追蹤

看懂第 3 步,你就懂為什麼「把 detect 串流設成 4K」是純浪費:模型最後看到的還是 320×320 的裁切圖,你只是讓 CPU 多解一張大圖。

安裝:Docker Compose(推薦)

先建立目錄,config/config.yml 放設定,storage/ 放錄影:

mkdir -p ~/frigate/config ~/frigate/storage

docker-compose.yml(官方範例,移除你沒有的硬體 device):

services:
  frigate:
    container_name: frigate
    restart: unless-stopped
    stop_grace_period: 30s
    image: ghcr.io/blakeblackshear/frigate:stable
    shm_size: "512mb"          # 依攝影機數量與解析度調整,見下方說明
    devices:
      - /dev/bus/usb:/dev/bus/usb        # USB Coral
      - /dev/dri/renderD128:/dev/dri/renderD128  # Intel/AMD iGPU(OpenVINO 或 VAAPI 解碼)
      # - /dev/apex_0:/dev/apex_0        # PCIe/M.2 Coral
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./config:/config
      - ./storage:/media/frigate
      - type: tmpfs                     # 錄影暫存放 RAM,保護 SSD
        target: /tmp/cache
        tmpfs:
          size: 1000000000
    ports:
      - "8971:8971"    # 需登入的網頁與 API
      - "8554:8554"    # RTSP 再串流
      - "8555:8555/tcp" # WebRTC
      - "8555:8555/udp"
    environment:
      FRIGATE_RTSP_PASSWORD: "your_camera_password"

四個埠各有用途,別亂開:8971 是有驗證的 UI/API(給反向代理用);5000 是內部無驗證 API,只給同網路的服務用,盡量不要對外;8554 是 RTSP 再串流(多個客戶端拉同一台攝影機時,只對攝影機建一條連線);8555 是 WebRTC 低延遲預覽。

shm_size 為什麼一定要調

Docker 預設共享記憶體只有 64MB,Frigate 用它存解碼後的原始影格。官方數字:2 台 720p 約需 210MB,容器還另外用掉最多 50MB 放 log 與 nginx 快取。所以 shm_size 留 64MB 的結果就是啟動後直接 Bus error 掛掉。4 台以上建議 512MB 起跳。用 Home Assistant App 的話不用設,Supervisor 會自動給總記憶體的一半。

config.yml:最小可跑版本

mqtt:
  enabled: true
  host: 192.168.1.50        # Mosquitto broker
  user: mqtt
  password: your_mqtt_password

detectors:
  ov:                        # Intel iGPU/NPU 用 OpenVINO,零成本
    type: openvino
    device: GPU

model:
  width: 300
  height: 300
  input_tensor: nhwc
  input_pixel_format: bgr
  path: /openvino-model/ssdlite_mobilenet_v2.xml
  labelmap_path: /openvino-model/coco_91cl_bkgr.txt

cameras:
  front_door:
    ffmpeg:
      hwaccel_args: preset-vaapi        # Intel 用 VAAPI;NVIDIA 用 preset-nvidia
      inputs:
        - path: rtsp://admin:pass@192.168.1.100:554/stream2   # 子串流:偵測
          roles: [detect]
        - path: rtsp://admin:pass@192.168.1.100:554/stream1   # 主串流:錄影
          roles: [record]
    detect:
      enabled: true
      width: 1280        # 必須等於 detect 子串流的真實解析度
      height: 720
      fps: 5             # 5 就夠,調高只是燒 CPU
    record:
      enabled: true
      continuous:
        days: 3          # 全時錄影只留 3 天
      motion:
        days: 7          # 有動靜的留 7 天
      alerts:
        retain:
          days: 30
          mode: motion   # 只有「告警級」物件(人、車)才留 30 天
      detections:
        retain:
          days: 30
          mode: motion
    snapshots:
      enabled: true
      retain:
        default: 30

⚠️ 0.18 的 record 設定格式和舊教學不一樣。 網路上一堆文章還停在 record: retain: { days: 7, mode: motion },那是舊語法;0.18 改成 continuous / motion / alerts / detections 四段,升級時 Frigate 會嘗試自動遷移,但照舊文抄會直接報錯。

偵測器怎麼選(這決定你要不要花錢)

偵測器適用硬體成本優點缺點
openvinoIntel 第 6 代以後的 iGPU/NPU0 元(硬體內建)不用買任何東西,4 台 1080p 夠用需要較新的 Intel 平台;老 CPU 只有 AVX 會很慢
edgetpuGoogle Coral USB/M.2約 80–130 美元(約 NT$2,500–4,100)推論極快、功耗極低,幾乎不吃 CPU常缺貨;樹莓派供電不足會不穩,要接有電源的 USB hub
hailo8 / hailo8lHailo-8/8L(Raspberry Pi 5 AI Kit 等)依模組而定官方原生支援,Pi 5 上好選擇Pi OS Bookworm 要手動處理舊驅動
tensorrtNVIDIA GPU(含 Jetson)依顯卡速度最快,可跑較大模型要轉模型、映像檔要用 -tensorrt 標籤
rocmAMD GPU依顯卡免 Blackwell 世代也能跑映像檔需用 -rocm,設定較多
rknpuRockchip 單板(RK35xx/RK36xx)依板子便宜的 ARM 加速路線映像檔要用 -rk,只支援特定晶片
cpu任何 x860 元一定能跑官方明說不建議:延遲高、CPU 吃滿

選型結論很簡單:Intel 平台直接用 OpenVINO,不要花錢;樹莓派或省電小主機再考慮 Coral/Hailo;要跑大模型或 Frigate+ 自訂模型才需要 NVIDIA。

儲存空間怎麼算(最多人算錯的地方)

錄影是直接抄攝影機串流、不重新編碼,所以容量完全由位元率決定。每 1 Mbps 連續錄影一天約 10.8 GB。

畫質與編碼位元率每台每天1TB 可存
1080p H.2642 Mbps約 22 GB約 46 天
1080p H.2644 Mbps約 43 GB約 23 天
4K H.2656 Mbps約 65 GB約 15 天
4K H.2658 Mbps約 86 GB約 12 天
4K H.26410–12 Mbps約 108–130 GB約 8–9 天

四台 1080p、只留「有動靜」的片段,配上 2TB 硬碟可以撐很久;但如果你開全天連續錄影,4 台 4K 一天就吃掉 300GB 以上。先算容量再開 continuous,是自架 NVR 唯一不會後悔的順序。

0.18 新增了什麼(這次改版很大)

功能說明
Settings UI 全設定化幾乎所有設定都能在網頁上改,含驗證與「需重啟」提示,可存檔即生效(不用再改 YAML 重啟)
Profiles為同一台攝影機定義多組設定(白天/夜間/在家/外出),可即時切換,也能用 MQTT frigate/profile/set 切
人臉辨識針對人物建立訓練集後辨識「是誰」,可與通知、自動化連動
車牌辨識(LPR)讀車牌號碼,適合車道與社區出入口
語意搜尋用圖片或自然語言描述找歷史事件(以 Jina AI 模型在本機算 embedding)
GenAI 描述與摘要接本地 Ollama/llama.cpp 或 OpenAI/Gemini,對事件產生文字描述與審查摘要
GenAI Chat在 UI 裡用自然語言問「昨天下午有人在後院嗎」,背後是會呼叫 Frigate 工具的 LLM agent
Motion Search/Debug Replay框選區域找動作時段;可把錄好的影片當成假攝影機重跑偵測,用來調參數
匯出與 Cases匯出可歸檔成「案件」,支援多攝影機快速匯出與自訂 ffmpeg 參數

GenAI 與語意搜尋的硬體門檻

  • 語意搜尋:至少 8GB RAM、CPU 需支援 AVX+AVX2;官方建議 16GB RAM 以上並搭配 GPU。樹莓派這種等級「不會動或跑不穩」。
  • GenAI 描述:需要視覺模型(官方推薦 qwen3-vl 系列),用 CPU 跑推論時間長到不實用,官方直接寫「不建議」。
  • 支援的 provider:llamacpp、ollama、openai、azure_openai、gemini;角色分 chat/descriptions/embeddings/transcribe,可以拆給不同 provider。

也就是說:樹莓派能跑偵測,但跑不動 0.18 最亮眼的那幾個 AI 功能。 想全開請準備有 GPU 的 x86 主機。

七個實測踩過的坑

坑症狀解法
shm_size 太小啟動即 Bus error依官方公式調到 256MB 以上,4 台起跳 512MB
detect 串流設 4KCPU 吃滿、準確度沒提升detect 用 720p 子串流就好,模型只看 320×320
fps 調到 10 以上CPU/GPU 暴增,追蹤沒變好維持 5,這是設計上足夠的值
沒開 hwaccel解碼全靠 CPU,畫面卡Intel 用 preset-vaapi、NVIDIA 用 preset-nvidia,並掛 /dev/dri
主/子串流長寬比不同預覽與播放畫面變形兩條串流用同一個長寬比(例如都 16:9)
用 H.265 錄影部分瀏覽器播不出來只有 Chrome 108+、Edge、Safari 支援 H.265;其他瀏覽器要 H.264
/tmp/cache 沒掛 tmpfsSSD 寫入量暴增、壽命縮短照上面的 compose 掛 1GB tmpfs

另外兩個小細節:RTSP 密碼若含特殊符號,早期版本會解析失敗,能改就改用底線;攝影機的 RTSP 帳密通常和手機 App 的帳號不同,別拿 App 密碼去試。

升級到 0.18 前的四個破壞性變更

如果你已經在跑 0.17,這幾點一定要知道(官方列為 breaking changes):

  1. 快照不再存標註版 JPEG。 現在只存乾淨的 WebP(<camera>-<id>-clean.webp),clean_copy 選項被移除;需要帶框的圖要改用 /api/events/<id>/snapshot.jpg 端點。snapshots.quality 預設從 70 改成 60。
  2. zones 與 masks 格式變了,多了 enabled 與 friendly_name。自動遷移失敗就得手改。
  3. FFmpeg 升到 8,go2rtc 若做硬體轉碼需要小幅改設定;FFmpeg 5 在 0.19 會移除。
  4. Intel GPU 使用率統計改讀 kernel DRM 計數器,需要 host kernel 6.5 以上,不再需要 CAP_PERFMON 或 privileged。

升級前請備份 config.yml 與 frigate.db,這是官方自己寫在最前面的建議。

接上 Home Assistant:整合與手機推播

  1. 先讓 HA 有 MQTT broker(Mosquitto App),Frigate 的 mqtt: 指向同一個 broker。
  2. 用 HACS 安裝 Frigate 整合,重啟後在「設定 → 裝置與服務 → 新增整合」填入 http://<frigate-ip>:8971。
  3. 整合會自動生出 camera(串流與最新快照)、binary_sensor(各區域物件佔用)、sensor(FPS、CPU、物件統計)、switch(錄影/偵測/快照開關)。
  4. 儀表板可再用 HACS 裝 frigate-hass-card,直接嵌即時畫面與事件歷史。
  5. 推播建議走整合提供的安全端點,不必把 Frigate 直接曝露到外網:
https://<HA_URL>/api/frigate/notifications/<event-id>/snapshot.jpg
https://<HA_URL>/api/frigate/notifications/<event-id>/clip.mp4      # Android
https://<HA_URL>/api/frigate/notifications/<event-id>/master.m3u8   # iOS

自動化最省事的做法是匯入社群的「Frigate Notifications」藍圖,把觸發設在 binary_sensor.front_door_person_occupancy,通知的 data.image 指向上面的 snapshot 端點,這樣手機推送就會帶圖。

誰適合、誰不需要

適合:家裡有 2 台以上 IP 攝影機、已經在用 Home Assistant、在意影片不離開自家網路、想用「有人出現才通知」取代「有動靜就通知」。

不需要:只有一台攝影機而且廠商 App 已經夠用;不想維護 Docker 與硬碟;需要專業監控系統的集中管理、多站點與保固服務。

站內延伸閱讀

資料來源與查證方式

  • Frigate 官方文件:安裝、設定、偵測器、錄影、語意搜尋、人臉辨識、GenAI(docs.frigate.video,2026-10-19 讀取)
  • GitHub blakeblackshear/frigate:v0.18.0/v0.18.2 release notes、README、GitHub API 星數與授權
  • NotebookLM 快速研究(10 個來源)交叉比對安裝與硬體需求

已知限制:本文未實機部署;硬體建議(如「N100 可跑 4 台 1080p」)來自官方文件與社群經驗,實際效能取決於解碼負載與是否啟用 enrichment。Coral 價格為美金行情換算(匯率約 31.5),實際售價與供貨依通路而定。人臉辨識、車牌辨識與 GenAI 的準確率高度依賴訓練資料與光線條件,官方也明確要求用自家攝影機畫面訓練才會有實用效果。

📬 訂閱 most.tw 電子報

每週精選 AI 工具教學與技術乾貨,直接送到你的信箱。免費、隨時可退訂。

訂閱即表示同意收到 most.tw 電子報,隨時可一鍵退訂。

💬 有問題想討論?加 LINE 聯絡我

歡迎透過 LINE 官方帳號直接留言,我會盡快回覆你的問題。

加入 LINE 好友