cdavis-code/easy_onvif_workspace
此套件支援多種ONVIF相容裝置,讓IP攝影機與NVR(網路影片錄放機)能整合至Dart與Flutter應用程式中。
- Stars
- 47
- Forks
- 30
- 最近推送(UTC)
- 2026年8月1日
- 專案狀態
- 未封存
技術主題
使用的依賴
依賴清單 2 項
- melos開發依賴
^7.5.1 - publish_tools開發依賴
^1.0.0+11
原始 README
以下為英文專案原文快照,最新內容請造訪 GitHub。
展開 / 收合專案 README
Dart Implementation of ONVIF IP Camera Client
https://github.com/faithoflifedev/easy_onvif_workspace/blob/main/logo/easy_onvif_logo_640.png?raw=true
This is the repository for three related Dart packages and two companion npm packages compiled from them via dart2wasm:
Dart packages
easy_onvif - This package works with a variety of ONVIF compatible devices allowing for IP Cameras and NVRs (network video recorders) to be integrated into Dart and Flutter applications. The package includes the ability to control the PTZ (pan-tilt-zoom) movements of a device along with managing presets as well as controlling how video and audio is being streamed from the device. Review the documentation below to get more details on available features.
easy_onvif_cli - A command line interface application (onvif executable) for controlling an Onvif device through terminal commands. This tool allows you to use O/S features like cron to automate Onvif device functionality.
easy_onvif_js - JavaScript / WASM interop layer for easy_onvif. Not published to pub.dev; it is the build harness that emits the two npm artifacts below via dart compile wasm, using dart:js_interop for Node-specific transports (node:dgram for WS-Discovery).
npm packages
| npm package | Target | WS-Discovery | Notes |
|---|---|---|---|
easy-onvif-node |
Node.js ≥ 20 | ✅ via node:dgram |
CLI / server workloads. |
easy-onvif-web |
Browsers (WasmGC: Chromium 119+, Firefox 120+, Safari 18.2+) | ❌ rejects with UnsupportedError |
SOAP over fetch; a CORS-friendly proxy is required in front of the camera. |
Both npm packages expose the same loadEasyOnvif() ESM entry point and ship full TypeScript declarations (index.d.ts).
Build & release
The repo uses Melos for orchestration. Common scripts:
# One-time
dart pub get
# Build both npm artifacts via dart2wasm (node then web)
melos run build:npm
# Or target one side
melos run build:npm:node
melos run build:npm:web
# Smoke-test the compiled Node bundle (no device required)
melos run smoke:npm:node
# Static analysis across all Dart packages
melos run analyze
The build scripts live at
packages/easy_onvif_js/tool/ and stage the
compiled .wasm + .mjs loader into npm/easy-onvif-node/dist/ and
npm/easy-onvif-web/dist/, ready for npm publish.