Nx Witness VMS 客製化開發指南:SDK、API 整合與跨平台部署完整實踐

50 分鐘閱讀

    Nx Witness VMS 客製化開發指南:SDK、API 整合與跨平台部署完整實踐
    Made with Nano Banana Pro by Gemini 3

    琳 avatar

    Our company plans to develop its own VMS based on NX. Please research and provide a comprehensive guide for developing or extending the Nx Witness VMS open-source project.

    ChatGPT avatar
    ChatGPT

    To help you best, could you please clarify a few points about your project:

    1. What specific functionality are you aiming to develop or extend in the Nx Witness VMS? (e.g., custom analytics, UI plugins, device integration)
    2. What is your development team's preferred programming language or stack?
    3. Are you targeting specific operating systems or deployment environments?
    4. Do you need guidance on licensing, SDKs, APIs, or build systems as well?

    With this info, I can tailor the guide to your specific goals.

    琳 avatar
    1. UI plugins and new feature on client side or server side
    2. Python or whatever
    3. Windows or Linux
    4. Yes
    ChatGPT avatar
    ChatGPT

    了解,我將為你整理一份完整的指南,說明如何基於 Nx Witness VMS 開發或擴充用戶端與伺服器端功能,包括 UI 外掛、功能模組開發流程、SDK 和 API 使用方式,以及在 Windows 與 Linux 環境下的建構與部署方法。

    架構概述 (Nx Witness VMS 平台架構)

    架構概述資訊圖表
    Nx Witness VMS 採用 Client-Server Hive 架構,允許多伺服器與用戶端協同工作。

    Nx Witness VMS 採用獨特的 Client-Server Hive 架構,由伺服器端與多種用戶端組成1。核心是 Nx Media Server 伺服器應用程式,負責裝置探索、影片錄製與資料管理;而桌面用戶端、行動裝置 app、Web 管理介面以及 Nx Cloud 雲端入口則提供直觀的 GUI 供操作人員存取與管理系統。一個 Nx 系統 (System) 可以包含多部伺服器(預設每部伺服器建議最多連接 128 路攝影機),各伺服器共同同步管理裝置清單、用戶和設定資料,形成 叢集 (Hive) 架構。伺服器主要任務包括:接收網路攝影機串流、錄影存檔、執行事件偵測與影片分析(如移動偵測)、維護用戶權限、處理事件及與硬體裝置(I/O 模組、門禁等)互動。用戶端則負責即時預覽、回放錄影,以及系統和攝影機管理。此外 Nx 提供 Nx Cloud 平臺(可選),用於遠端存取及多系統集中管理。整體而言,Nx Witness VMS 架構簡潔可擴充,允許開發人員透過伺服器外掛模組或開放 API 進行深度整合。

    平臺組成元件:

    開發人員可針對上述架構的伺服器與用戶端部分進行擴充。 伺服器端 允許透過 SDK 外掛模組 增加新功能(例如接入新類型視訊源、自訂分析事件處理等), 用戶端 則能透過 開放原始碼 介面或嵌入式網頁來擴充 UI 與互動。下文將詳細說明各種擴充方法與工具。

    用戶端 UI 擴充與外掛程式開發

    用戶端 UI 擴充與外掛程式開發資訊圖表
    用戶端 UI 擴充可以避免修改伺服器核心,加快開發速度,同時保持與官方用戶端版本的相容。

    Nx 提供多種方式擴充其 桌面用戶端 UI ,開發團隊可依需求選擇:

    用戶端外掛程式部署 方面,如果是 修改版 Nx Desktop ,需按照 Nx 開源專案提供的流程自行編譯,將生成的用戶端應用發給客戶安裝使用。若採用 嵌入式網頁 方案,只需將網頁伺服於用戶可存取的位置(本機或遠端),在 Nx Desktop 中新增對應的網頁部件即可;JavaScript API 透過 Nx Desktop 內建機制自動可用。對於 Metadata 外掛程式設定面板 ,則外掛程式程式碼中定義配置 UI,部署外掛程式後 Nx Desktop 會自動識別並載入界面5。整體而言,用戶端 UI 擴充可以避免修改伺服器核心,加快開發速度,同時保持與官方用戶端版本的相容。

    伺服器端自訂模組開發 (事件、分析與整合)

    伺服器端自訂模組開發資訊圖表
    伺服器端自訂模組開發可透過 Nx 提供的多種 SDK 實現,滿足不同整合需求。

    為實現後端自訂功能,Nx 提供伺服器外掛程式 SDK(主要以 C++ 開發)。開發人員可以撰寫 動態連結庫 (.dll/.so) 外掛,放置於 Nx 伺服器的外掛程式目錄,即可在啟動時被載入執行6。根據應用場景,官方提供三大類 C++ SDK

    這些外掛程式均以 C++ 編寫,需繼承 Nx SDK 提供的抽象類別並實現所需介面函式8。每個外掛程式編譯後是一個獨立的 .dll(Windows)或 .so(Linux)庫,放入 Nx 伺服器安裝目錄下的 /mediaserver/bin/plugins/ 等指定資料夾中6。Nx 伺服器啟動時會掃描並載入外掛程式,調用其初始化流程。 外掛程式的生命週期 通常包括:伺服器啟動載入 → 外掛程式執行(持續處理視訊或事件) → 伺服器關閉或外掛程式停用時卸載。開發時應遵循 Nx 提供的範例和框架,確保執行緒安全及異常處理,以避免影響伺服器穩定性

    除了上述 SDK 方案,有些情況開發者可能選擇不直接寫 C++ 外掛程式,而使用 Nx 的 外部 API 實現 鬆耦合整合 。例如,如果只需將 外部系統事件 通知 Nx,可利用 HTTP Generic Event API 由第三方系統透過簡單的 HTTP POST 產生 Nx 內建的「Generic 事件」,再由 Nx 規則引擎觸發錄影或警報9。又或者,開發者可撰寫獨立的 Python/Node.js 中介服務 ,通過輪詢或長連接監聽 Nx 事件(如 WebSocket 或周期查詢 API),並與外部系統交換資訊。這種方式無需在 Nx 內部執行程式碼,降低部署風險,但實時性和整合深度略遜於原生外掛程式。

    小提示:Network Optix 提供許多 開源示例 展示如何開發外掛程式與整合。官方的 nx_open_integrations GitHub 儲存庫中涵蓋多種 C++ 外掛程式範例(如 OpenCV 物件偵測分析外掛程式)、模擬攝影機外掛程式,以及使用 Python/Node.js 調用 API 的腳本範例10。建議參考對應 Nx 版本的分支(如 vms_5.0、vms_5.1)取得相容的程式碼。這些範例對理解外掛程式架構、執行緒模型以及與 Nx 互動流程大有裨益。

    Nx Meta SDK 與相關 API 的應用

    Nx Meta SDK 與相關 API 的應用資訊圖表
    Nx Meta SDK 與相關 API 可實現高度自訂的系統整合與自動化功能。

    除了 C++ 外掛程式,Nx 平台還提供多樣的 API工具庫 ,供開發人員以 Python 或其他語言 建置自訂功能。以下重點介紹 Nx Meta Server HTTP API 及相關開發工具:

    綜上,Nx Meta SDK/API 為開發者提供 全方位的整合手段 。無論是內嵌在 Nx 內部的高性能外掛程式,還是藉由 HTTP API 與 Nx 互聯的外部服務,都能達成對攝影機串流、事件、用戶管理等方面的定製。開發團隊應根據功能需求和技術特長,選擇適合的 SDK 或 API 路徑,在擴充功能的同時保持系統的穩定與安全。

    開發環境與工作流程 (Windows / Linux)

    開發環境與工作流程資訊圖表
    Nx 開發涉及 C++ 原生模組與跨平台建置,因此需要準備適當的工具鏈。

    Nx 開發 涉及 C++ 原生模組與跨平台建置,因此需要準備適當的工具鏈。以下是 Windows 與 Linux 下的環境配置與開發工作流程指南:

    建置與部署流程

    建置與部署流程資訊圖表
    建置與部署流程涵蓋從開發、測試到最終上線的各個階段。

    無論是用戶端 UI 擴充還是伺服器外掛程式,都需要考慮 最終部署 在目標系統上的步驟:

    總而言之,Nx 的建置與部署遵循標準軟體流程。透過嚴謹的版本管理與充分的測試,可以確保自訂功能順利融入 Nx 平台,在 Windows 與 Linux 系統上可靠運行。

    授權模式與擴充發行考量

    授權模式與擴充發行考量資訊圖表
    了解 Nx Witness 的授權模式與相容性政策,有助於順利發行擴充功能。

    在擴充 Nx Witness 系統時,需了解其 授權機制 與相容性政策,以確保遵循軟體使用條款並滿足商業部署需求:

    總的來說,在 Nx Witness 平臺上開發擴充功能既要創新也要合規。理解授權模型能幫助您合理評估成本、設定商業模式;遵守開源與 EULA 規範則確保您的產品長遠穩健發展。透過正確運用 Nx 提供的開放資源並遵循其授權政策,您將能順利打造出自有特色且與 Nx 生態無縫銜接的影像管理解決方案。

    Nx 擴充開發工具一覽表

    下表總結了 Nx Witness 平臺可用的 SDK、API 與其特性,方便開發團隊快速參照各項工具的語言、用途及支持平臺:

    工具 / SDK / API用途與功能開發語言運行環境
    Metadata SDK (中繼資料 SDK)開發伺服器端分析外掛程式:處理視訊流、產生物件中繼資料與事件5。適用 AI 視覺分析、客製事件。C++ (Qt)Nx Media Server 外掛程式
    Video Source SDK (視訊源 SDK)整合自訂攝影機/串流:實現新協議設備、自定發現與錄影流程5C++Nx Media Server 外掛程式
    Storage SDK (存儲 SDK)擴充存儲介質:對接 NAS、雲存儲或特殊硬體5。實現自定錄影存取。C++Nx Media Server 外掛程式
    Nx Server REST API控制與查詢 Nx 系統:管理資源、用戶、觸發事件、擷取影音3。標準 HTTP 介面,語言無關。任意外部應用或腳本透過 HTTP 調用
    Nx Web JS API (JavaScript)嵌入式網頁與桌面端互動:在 Nx Desktop 開啟網頁並使用 JS 控制用戶端(如切換鏡頭)。需要 Nx Desktop 5.0+ 內建瀏覽器支持4JavaScriptNx Desktop 內嵌網頁
    Node.js Integration Library官方提供的 Node.js 框架:快速建置中間件,調用 Nx REST API 與 Nx Cloud API11。適合在獨立服務器上跑整合邏輯。JavaScript (Node.js)外部服務 (中間層或雲端)
    Nx Cloud API (OAuth2)Nx 雲端介面:透過 Nx Cloud 訪問系統清單、用戶、以及使用 Cloud Relay 呼叫現場 API13。用於多站點管理與遠端訪問。任意 (通過 HTTP/OAuth)外部應用 (需 Nx Cloud 帳號)
    Nx Desktop Open Source桌面用戶端完整原始碼:可自訂 UI/功能並重編譯發布自有用戶端2。遵循 MPL 授權開源。C++/Qt (QML)獨立 Desktop 應用
    Nx Open Integration Examples開源範例合集:涵蓋 C++ 外掛程式(分析、設備模擬)、Python 腳本(事件、認證)等10。用作開發參考模板。C++, Python, JS-

    表:Nx Witness 開放 SDK 與 API 摘要。53

    上述表格列出各種開發選項,團隊可依據自身技能與項目需求選擇使用。例如,需要深度影像分析且高效處理,可選擇 C++ Metadata SDK 外掛程式;若只是簡單將現有系統事件連接 Nx,或做一個監控板,或許透過 REST API 搭配 Python 腳本即可實現。透過這份指南和工具對照,開發團隊將能有效地在 Nx Witness 平臺上打造出定制的功能與外掛程式,滿足用戶端與伺服端雙方面的擴充需求。

    參考資料:

    以上連結內容詳載了本文提及的技術要點,可供延伸閱讀與實作參考。透過充分利用這些資源,您的團隊將能順利地為 Nx Witness VMS 開發出功能強大且量身定制的外掛程式與 UI 擴充。祝開發過程順利!

    下一步: 在 Nx Meta 開發者入口網站 註冊帳號,探索官方開發者資源!

    1. Wisenet WAVE User Manual ↩2 ↩3 ↩4

    2. Nx Desktop is now Open Source. ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8

    3. The HTTP REST API - Network Optix ↩2 ↩3 ↩4 ↩5

    4. Introduction to the JavaScript API - Nx Meta ↩2

    5. Nx Toolkit | Network Optix ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10

    6. 2. Integration Architecture - Understanding Plugins - Nx Meta ↩2 ↩3 ↩4

    7. The Server Plugin SDK (C++) - Network Optix ↩2 ↩3

    8. 2. Integration Architecture - Understanding Plugins - Nx Meta

    9. Integration with Nx Meta for Metadata Event Transmission - Network Optix ↩2 ↩3 ↩4

    10. GitHub - networkoptix/nx_open_integrations: Network Optix Meta Video Management Platform open source integration examples - the source code and specifications which show how to integrate a third-party solution with the Nx Meta Video Management Platform (VMP) and thus all Powered-By-Nx products, including Nx Video Management System (VMS). ↩2 ↩3

    11. Overview of Supported Programming Languages - Network Optix ↩2 ↩3 ↩4

    12. How NxWitness generate the auth key? - Network Optix ↩2 ↩3

    13. Route API Calls via Nx Cloud - Network Optix ↩2 ↩3

    14. How are Server RTSP Streams processed? - Network Optix

    15. How to Play back videos using WebRTC - Network Optix

    16. Generic Events Generator in the Nx Server API - Nx Developer Tools

    17. GitHub - networkoptix/nx_open: NetworkOptix open-source components used to build Powered-by-Nx products including Desktop Client for Network Optix Video Management Platform. ↩2 ↩3 ↩4 ↩5 ↩6

    18. Request for Detailed Guidance on Developing and Deploying a Plugin for Nx Witness Client on Windows - Network Optix

    19. Wisenet WAVE User Manual ↩2

    20. Get a License for Developers - Nx Meta

    21. Link a Meta installation to NX Witness - Network Optix ↩2