A TypeScript implementation of the ONVIF Client protocol supporting Profile S (Live Streaming) and Profile G (Replay). This is a stable, typed fork of the original onvif package.
This library provides a wrapper for the ONVIF protocol, allowing you to:
- Get information about your NVT (Network Video Transmitter) devices
- Access media sources
- Control PTZ (Pan-Tilt-Zoom) movements
- Manage presets
- Detect devices in your network
- Control device events
- Get information about NVR (Network Video Recorder) Profile G devices
- Obtain recordings lists
npm install @2bad/onvif
- Full TypeScript support with interfaces describing ONVIF data structures
- Stable npm package with regular maintenance
- Improved error handling and stability fixes
- Maintained type definitions
- Compatible with the original API structure
import { Onvif } from '@2bad/onvif';
// Connect to a device
const device = new Onvif({
hostname: '192.168.1.123',
username: 'admin',
password: 'password',
port: 80
});
await device.connect()
// Get snapshot URI
const snapshotUri = await device.media.getSnapshotUri({ profileToken: 'profile1' })
This package maintains compatibility with code written for the original onvif package (v0.6.x) through a compatibility layer. If you're migrating from the original package, your existing code should work with minimal changes.
For detailed API documentation and supported ONVIF commands, please visit our GitHub repository.
This package is based on the excellent work done by agsh and the ONVIF community. We've built upon their foundation to provide a stable, typed implementation for the Node.js ecosystem.
Contributions are welcome! Feel free to submit issues and pull requests.
This project is licensed under the MIT License - see the LICENSE file for details.