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.