https://github.com/snow-tree/camera-probe
A realtime camera network device discovery tool.
https://github.com/snow-tree/camera-probe
camera camera-probe discovery networked-cameras node onvif onvif-camera onvif-client rxjs typescript udp upnp ws-discovery
Last synced: over 1 year ago
JSON representation
A realtime camera network device discovery tool.
- Host: GitHub
- URL: https://github.com/snow-tree/camera-probe
- Owner: snow-tree
- License: mit
- Created: 2019-01-03T04:03:32.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-03-04T03:04:06.000Z (over 3 years ago)
- Last Synced: 2024-10-09T09:48:18.731Z (over 1 year ago)
- Topics: camera, camera-probe, discovery, networked-cameras, node, onvif, onvif-camera, onvif-client, rxjs, typescript, udp, upnp, ws-discovery
- Language: TypeScript
- Homepage:
- Size: 840 KB
- Stars: 57
- Watchers: 5
- Forks: 12
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
camera-probe
Realtime scanning and discovery of networked cameras.
## Installation
This package is designed to be run in Node. For the best developer experience use Typescript.
```sh
$ npm i @snow-tree/camera-probe
```
## CLI Usage
For CLI usage its easier to install globally like so:
```sh
$ npm i -g @snow-tree/camera-probe
// starting listening
$ camera-probe
// This table will update as cameras come online and offline.
┌─────────┬───────────┬─────────────┬─────────────────┬──────────────────────────────────────────┬────────────────────────────────────────────────┐
│ (index) │ Name │ Model │ IP │ URN │ Endpoint │
├─────────┼───────────┼─────────────┼─────────────────┼──────────────────────────────────────────┼────────────────────────────────────────────────┤
│ 0 │ 'Amcrest' │ 'IP2M-841B' │ '192.168.1.1' │ '38b4eeff-f5bd-46b9-92e4-30e6acffee73' │ 'http://192.168.1.1/onvif/device_service' │
│ 1 │ 'IPCAM' │ '631GA' │ '192.168.1.2' │ '4f5dcb4f-eea6-4cda-b290-f2b2b7d2f14f' │ 'http://192.168.1.2:80/onvif/device_service' │
└─────────┴───────────┴─────────────┴─────────────────┴──────────────────────────────────────────┴────────────────────────────────────────────────┘
```
## Programmatic Usage
```js
import { onvifDevices$ } from 'camera-probe'
import { takeUntil } from 'rxjs/operators'
const subscription = onvifDevices$().subscribe(console.log)
// be sure to close the socket connection when complete with your query
// by unsubscribing from the observable.
subscription.unsubscribe()
// or using an rxjs operator like take
onvifDevices$().pipe(takeUntil(someObservaleFires)).subscribe(console.log)
// results
[ { name: 'Amcrest',
hardware: 'IP2M-8200',
location: 'china',
deviceServiceUri: 'http://192.168.5.191/onvif/device_service',
ip: '192.168.5.191',
metadataVersion: '1',
urn: 'fae40e7f-91e2-489a-afe6-66e19b667952',
scopes:
[ 'onvif://www.onvif.org/location/country/china',
'onvif://www.onvif.org/name/Amcrest',
'onvif://www.onvif.org/hardware/IP2M-8200',
'onvif://www.onvif.org/Profile/Streaming',
'onvif://www.onvif.org/type/Network_Video_Transmitter',
'onvif://www.onvif.org/extension/unique_identifier',
'onvif://www.onvif.org/Profile/G' ],
profiles: [ 'Streaming', 'G' ],
xaddrs: [ 'http://192.168.5.191/onvif/device_service' ] },
{ name: 'IPCAM',
hardware: '421FZ',
location: 'china',
deviceServiceUri: 'http://192.168.5.13:80/onvif/device_service',
ip: '192.168.5.13',
metadataVersion: '1',
urn: '0cbc0d5b-a7a1-47c7-bb60-85c878bb540e',
scopes:
[ 'onvif://www.onvif.org/Profile/Streaming',
'onvif://www.onvif.org/Model/421FZ',
'onvif://www.onvif.org/Name/IPCAM',
'onvif://www.onvif.org/location/country/china' ],
profiles: [ 'Streaming' ],
xaddrs: [ 'http://192.168.5.13:80/onvif/device_service' ] } ]
```