FLUTTER ECOSYSTEM

cdavis-code/easy_onvif_workspace

此套件支援多種ONVIF相容裝置,讓IP攝影機與NVR(網路影片錄放機)能整合至Dart與Flutter應用程式中。

easy_onvif_workspace 專案封面
Stars
47
Forks
30
最近推送(UTC)
2026年8月1日
專案狀態
未封存
cdavis-code GitHub avatar
GITHUB User

cdavis-code ↗

語言DartJavaScriptC++CMakeShellRubyCHTMLSwiftKotlinObjective-C

技術主題

使用的依賴

依賴清單 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.