
Frigate 第三方擴展生態全景11 個高價值插件與它們的 REST API / MQTT 接入方式【免費下載鏈接】frigateNVR with realtime local object detection for IP cameras項目地址: https://gitcode.com/GitHub_Trending/fr/frigateFrigate 是開源的家用 NVR網絡錄像機其核心價值之一在于開放——它不僅自身功能豐富還通過一套穩定的集成接口REST API 與 MQTT 消息總線允許社區在其之上構建各類擴展。本篇文章以倉庫內 docs/docs/integrations/third_party_extensions.md 文檔為主干逐一梳理 11 個圍繞 Frigate 構建的第三方項目并結合當前倉庫源碼深入講解這些擴展所依賴的集成機制內部 API 端口、認證模型、事件/審查數據結構、MQTT 主題體系。讀完本文你將理解第三方工具如何與 Frigate 通信并能根據自身場景通知、人臉識別、自然語言查詢、大屏展示、媒體備份等選型與接入對應擴展。注意本文僅作客觀梳理不對任何擴展項目進行推薦或評級。文中的項目均來自官方文檔收錄的社區項目清單清單本身不設上限任何人均可通過向 Frigate 文檔提交 PR 來補充新項目。安裝任何第三方軟件前請務必自行評估與審查其安全性。Frigate 為何能擁有第三方擴展生態開放而穩定的集成接口官方文檔明確寫道絕大多數第三方服務的設計目標是與 Frigate 在 5000 端口上的免認證 API 對接。這句話背后對應的是 Frigate 當前倉庫中一套真實的網絡與認證架構我們先用源碼把它講透。REST API默認內部端口 5000外部端口 8971Frigate 的監聽端口定義在 frigate/config/network.py 的ListenConfig中internal內部監聽端口默認5000external外部監聽端口默認8971兩者必須不同有validate_distinct_ports校驗internal_port/external_port屬性會把address:port形式的配置解析成純端口號。配置注釋還特別說明對絕大多數用戶而言更推薦直接在 Docker Compose 的 ports 段修改端口映射而非改動該配置。因此5000 端口是 Frigate 容器內部的默認 API 端口第三方擴展若與 Frigate 運行在同一網絡如同一 docker-compose 項目或同一 Docker 網絡即可直接訪問。為什么內部端口可以免認證/auth 端點的特殊處理免認證 API并非沒有認證而是有一套基于反向代理的信任模型。Frigate 容器內由 nginx 充當網關nginx 會為每個請求打上x-server-port頭再由/auth端點完成身份注入。在 frigate/api/auth.py 中可以看到核心邏輯# dont require auth if the request is on the internal port # this header is set by Frigates nginx proxy, so it cant be spoofed. if ( int(request.headers.get(x-server-port, default0)) request.app.auth_internal_port ): success_response.headers[remote-user] anonymous success_response.headers[remote-role] admin return success_response也就是說通過內部端口默認 5000進入的請求會被自動標記為remote-user: anonymous、remote-role: admin從而繞過登錄而外部端口默認 8971的請求則必須走完整認證流程。這正是官方文檔所稱unauthenticated api over port 5000的底層實現——x-server-port頭由 Frigate 自己的 nginx 設置無法被外部偽造相關認證邊界說明也記錄在 frigate/api/auth.py 的allow_any_authenticated依賴中。所有 API 路由都在 frigate/api/fastapi_app.py 中掛載涵蓋事件event、審查review、媒體media、錄像record、導出export、相機camera、統計stats等模塊。第三方擴展最常用到的端點包括GET /api/events查詢事件列表支持相機、標簽、區域、時間、has_clip、has_snapshot、分數區間等大量過濾參數定義見 frigate/api/defs/query/events_query_parameters.py實現見 frigate/api/event.pyGET /api/events/{event_id}按 ID 獲取單個事件frigate/api/event.pyGET /api/events/{event_id}/thumbnail.{extension}獲取事件縮略圖較新的include_thumbnails參數已被標記為 deprecated官方在 frigate/api/defs/query/events_query_parameters.py 中明確建議改用該縮略圖端點GET /api/review、GET /api/review/summary查詢審查片段及按時間線聚合的摘要參數定義見 frigate/api/defs/query/review_query_parameters.py實現見 frigate/api/review.py 與 frigate/api/review.pyGET /api/stats、GET /api/version、GET /api/config系統狀態、版本號與配置信息frigate/api/app.py、frigate/api/app.py。完整的 OpenAPI 規范文件位于 docs/static/frigate-api.yaml第三方開發者可直接以此為準生成客戶端倉庫內更詳盡的中文可讀說明見 docs/docs/integrations/api.md。MQTT事件與狀態的實時總線除 REST API 外Frigate 的 MQTT 總線是擴展接入的另一大入口。MQTT 客戶端實現在 frigate/comms/mqtt.py其publish方法會自動為所有主題加上topic_prefix前綴def publish(self, topic: str, payload: Any, retain: bool False) - None: ... self._mqtt_client.publish( f{self.mqtt_config.topic_prefix}/{topic}, ... )topic_prefix的默認值是frigate見 frigate/config/mqtt.py并可在配置中修改。也就是說默認情況下所有主題都以frigate/開頭。倉庫內 docs/docs/integrations/mqtt.md 對主題體系做了完整說明第三方擴展最常訂閱/監聽的主題包括frigate/events每個被跟蹤對象狀態變化時發布一條消息type為new/update/end包含before與after兩段完整事件快照字段覆蓋label、sub_label、score、box、zones、has_clip、has_snapshot、速度與車牌識別結果等frigate/reviews審查片段相關消息frigate/stats周期性發布的系統統計frigate/available可用性主題online/stopped/offline常用于 Home Assistant 的 availability 配置frigate/camera_name/object_name/snapshot對象快照相關主題frigate/camera_name/ptz、frigate/camera_name/detect/set、frigate/camera_name/recordings/set等命令/狀態主題可用于下發 PTZ 控制與開關檢測等指令。正是REST API 取數據 MQTT 收事件 寫回控制指令這一組合讓第三方項目可以在不改動 Frigate 內核的前提下實現從通知推送到智能查詢的豐富能力。數據模型事件、審查、子標簽與快照理解擴展功能前還需掌握 Frigate 的幾個核心數據概念事件Event一次被跟蹤對象person、car 等的完整生命周期包含start_time、end_time、label、sub_label、score、zones、has_snapshot、has_clip等字段審查片段Review Segment按時間段聚合的審查條目/api/review即返回此類數據子標簽sub_label事件的二級標注典型用途是寫入識別出的具體是誰例如人臉識別結果John Smith。事件查詢 API 支持按sub_label過濾實現中甚至針對逗號分隔的多個子標簽做了LOWER與通配匹配處理見 frigate/api/event.py并提供了set_sub_label寫接口見 frigate/api/event.py快照snapshot與片段clip事件觸發時保存的靜態圖與錄像片段has_snapshot/has_clip布爾字段即是其標記/api/events/{event_id}/thumbnail.{extension}等端點負責取回媒體內容。掌握了這套模型再回頭看各個擴展就能清晰理解它們各自掛在 Frigate 的哪個接口上。家庭自動化面板Advanced Camera CardAdvanced Camera Card原名 Frigate Card是Home Assistant 的儀表盤卡片與 Frigate 深度集成。它利用 Frigate 的事件/審查 API 與 MQTT 數據在 Home Assistant 的 Lovelace 界面中直接展示攝像頭畫面、事件時間線、審查片段與對象檢測結果讓家庭自動化中樞與NVR在界面上融為一體。對已在使用 Home Assistant 的用戶來說這是體驗 Frigate 能力的最直接入口其與 Frigate 的交互方式同樣是走 REST API拉取事件與媒體 MQTT實時狀態具體可參考倉庫內 docs/docs/integrations/home-assistant.md。自然語言交互cctvQLcctvQL 是一個面向 Frigate 及其他 CCTV 系統的自然語言查詢層。它的工作方式如下連接 Frigate 的REST API與MQTT broker允許用戶用會話式問句查詢相機與事件例如昨晚前門有沒有動靜Was there motion at the front door last night?支持實時事件流借助 MQTT 的frigate/events等主題、異常檢測、PTZ 控制、告警規則額外提供 Home Assistant 自定義組件。從架構上看cctvQL 正是REST API 負責查歷史、MQTT 負責收實時這一集成范式的典型代表歷史問題通過/api/events等查詢接口回答實時告警與流式事件則依賴 MQTT 推送。人臉識別訓練與自動打標Double TakeDouble Take 為人臉識別的圖像處理與訓練提供統一的 UI 和 API。它最實用的能力是識別出某個人后自動在 Frigate 中為對應 person 事件設置 sub_label。這正是前面提到的sub_label機制的實戰場景Double Take 在后臺完成人臉比對與身份確認后調用 Frigate 的set_sub_label接口見 frigate/api/event.py把事件標記為John Smith用戶隨后就能在 Frigate 的界面與/api/events?sub_labelsJohn%20Smith查詢中按人名檢索事件同時 MQTT 的frigate/events消息中也會帶出sub_label字段供自動化系統消費。需要說明的是當前倉庫收錄的 Double Take 是原項目作者已停止維護的一個修復了錯誤并增加了新特性的 fork選用時請自行確認維護狀態與適配版本。通知推送三件套Frigate Notify、Frigate Notify Alert、Frigate telegram通知是第三方擴展中數量最多的一類三個項目側重點各不相同Frigate NotifyFrigate Notify 是一個面向獨立 Frigate 安裝的通知應用把 Frigate 事件推送到你偏好的平臺。它的定位要點是適用于獨立standaloneFrigate 安裝不依賴 Home AssistantMQTT 可選但推薦——有 MQTT 時可訂閱frigate/events等主題實現實時推送無 MQTT 時則通過 REST API 輪詢。Frigate Notify AlertFrigate Notify Alert 專注于把 Frigate 事件以照片 視頻媒體組的形式發送到 Telegram。其特性包括支持多個相機分組每個分組各自通知自己的聊天會話支持可選的區域zone過濾——只有對象進入指定區域時才通知支持在聊天內通過按鈕暫停通知一段時間。它是典型的MQTT 訂閱 媒體 API 拉取組合通過 MQTT 收到事件后再調用/api/events/{event_id}/thumbnail等端點拉取快照與視頻片段組裝媒體組。官方文檔同樣說明它適配獨立 Frigate、無需 Home Assistant。Frigate telegramFrigate telegram 的目標更為直接把 Frigate 事件發送到 Telegram每條消息包含文本描述、視頻和縮略圖。它適合想要輕量、只發 Telegram的用戶與 Frigate Notify Alert 相比功能更簡潔。三個項目功能有重疊選型時主要考量推送平臺范圍Frigate Notify 多平臺 vs 后兩者僅 Telegram、是否需要區域過濾/暫停按鈕等高級特性、以及你對MQTT 可選 / 必須的偏好。媒體同步與備份Frigate Snap-SyncFrigate Snap-Sync 是一個與 Frigate 協同工作的媒體同步程序當 Frigate 生成快照snapshot或審查片段review時官方說明未來可擴展更多事件類型它會響應并上傳到一臺或多臺你指定的遠程服務器適合需要異地備份關鍵證據、或在多站點間同步錄像/截圖的中高級用戶。從 Frigate 側看snapshot 與 review 分別對應事件模型的has_snapshot字段與/api/review返回的審查條目Snap-Sync 可通過這些接口發現新生成的媒體文件再執行傳輸。遠程同步的安全傳輸加密、目標服務器鑒權需用戶自行保障。展示終端kiosk-monitor 與 Periscopekiosk-monitor樹莓派看板看門狗kiosk-monitor 是一個Raspberry Pi 看門狗程序用于把樹莓派變成永續運行的 Frigate 看板終端以全屏 Chromium打開 Frigate 儀表盤可選在第二塊顯示器上用 VLC 播放一路 RTSP 攝像頭流屏幕凍結或 URL 不可達時自動重啟瀏覽器/應用附帶一個Birdseye 感知的 Chromium 助手可根據顯示器尺寸自動調整網格布局。這里的 Birdseye 對應 Frigate 內置的鳥瞰視圖功能多相機網格聚合畫面配置文檔見 docs/docs/configuration/birdseye.mdkiosk-monitor 專門針對它做了布局適配。Periscope舊手機變身實時查看器Periscope 是一個輕量級 Android 應用把閑置的舊設備變成 Frigate 的實時查看器支持Android 2.2 及以上版本包括 Android TV支持認證與 HTTPS可安全訪問遠程部署的 Frigate。它適合手頭有舊 Android 手機/電視盒子的用戶低成本獲得一塊專用的監控屏。流媒體與生態橋接Scrypted Frigate BridgeScrypted - Frigate bridge 是 Scrypted智能家居視頻平臺的插件負責在兩個系統間搭建橋梁將 Frigate 的檢測結果、運動事件、視頻片段接入 Scrypted統一納入 Scrypted 的智能家居視頻體系提供模板可導出/生成 Frigate 側的rebroadcast轉播配置方便在 Frigate 中配置流重播。對于已經把大量攝像頭接入 Scrypted、又想疊加 Frigate 本地檢測能力的用戶這個插件是典型的生態互操作方案。攝像頭配置自動發現StrixStrix 解決的是 Frigate 上手階段最頭疼的問題——我的攝像頭流地址到底是什么。它的能力包括自動探測IP 相機的可用流 URL對相機測試成千上萬種 URL 模式支持沒有 RTSP 或 ONVIF 協議的相機直接生成開箱即用的 Frigate 配置相機流地址、探測參數等官方宣稱覆蓋6.7 萬 相機型號、3600 品牌。對剛接觸 Frigate、被廠商私有協議和畸形流地址困擾的新用戶這類配置生成器可以大幅縮短部署時間。11 個擴展一覽擴展類別核心集成點適用場景Advanced Camera Card儀表盤Home Assistant 卡片 REST/MQTTHA 用戶直接在 Lovelace 中看監控cctvQL查詢/自動化REST API MQTT自然語言問昨晚發生了什么、異常檢測Double Take人臉識別REST APIsub_label 打標識別誰出現在鏡頭前并自動標注Frigate Notify通知REST/MQTTMQTT 可選獨立 Frigate 的多平臺通知Frigate Notify Alert通知MQTT Telegram 媒體組Telegram 照片視頻組、區域過濾、暫停按鈕Frigate telegram通知Telegram輕量文本視頻縮略圖推送Frigate Snap-Sync備份同步snapshot / review 事件快照與審查片段上傳到遠程服務器kiosk-monitor展示終端Frigate 儀表盤 Birdseye樹莓派看板、異常自動恢復Periscope展示終端Frigate 實時流舊 Android 設備變監控屏含 Android TVScrypted Frigate Bridge生態橋接detections/motion/clip 接入 Scrypted與 Scrypted 視頻體系互操作Strix配置工具攝像頭流探測 配置生成快速獲得可用的 Frigate 相機配置接入前的安全與選型提示官方文檔在列出這些項目時特意給出了兩條重要提醒這里必須原樣強調本文檔以及本文不對任何擴展進行推薦或評級。每個項目的代碼質量、維護活躍度、權限模型各不相同安裝到系統前請用自己的知識充分評估與審查審代碼、看 issue、確認是否開源可審計。擴展清單不是窮盡的社區可以通過向 Frigate 文檔提交 PR 持續擴充——這意味著生態仍在演進也意味著流行不代表安全。在安全層面結合前文的機制分析可以給出幾條通用原則內部端口 5000 的免認證特性只應存在于可信網絡內如 docker 內網。該信任模型依賴 nginx 設置的x-server-port頭frigate/api/auth.py若把 5000 端口直接暴露到公網等于把 admin 權限拱手讓人必須避免需要外部訪問的擴展應通過外部端口 8971 走完整認證JWT/密碼或自行架設帶鑒權的反向代理使用 MQTT 時建議為 Frigate 配置獨立的 broker 賬號與topic_prefix并限制訂閱/發布權限避免擴展程序獲得過大的控制面如frigate/camera/ptz這類控制主題對自動同步、自動上傳類擴展如 Snap-Sync確認傳輸加密與目標端權限隔離后再啟用。小結Frigate 之所以能長出這樣一片第三方生態根源在于其雙重開放接口以 5000 端口內部 API 為代表、覆蓋事件/審查/媒體/統計的完整 REST 面以及以frigate/為前綴、貫穿檢測、事件、審查、狀態的 MQTT 總線。11 個擴展分別落在通知、人臉識別、自然語言查詢、展示終端、媒體備份與生態橋接等不同象限幾乎覆蓋了家庭 NVR 的全部周邊需求。如果你準備動手接入建議的探索路徑是先用 docs/static/frigate-api.yaml 了解 API 全貌再閱讀 docs/docs/integrations/api.md 與 docs/docs/integrations/mqtt.md 掌握調用細節最后對照上表挑選符合你場景的擴展——并在安裝前完成對它的獨立安全審查。【免費下載鏈接】frigateNVR with realtime local object detection for IP cameras項目地址: https://gitcode.com/GitHub_Trending/fr/frigate創作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考