Self-contained executables - no runtime required
| Command | Description |
|---|---|
discover |
Find cameras via WS-Discovery multicast |
scan |
Actively scan IP ranges for cameras |
probe |
Get RTSP URLs from a specific camera |
guess |
Guess RTSP URLs using manufacturer patterns |
recordings |
List recordings stored on camera |
download |
Get replay URI and download recordings |
test |
Batch test cameras from JSON file |
Find ONVIF cameras on the local network using WS-Discovery (UDP multicast on port 3702).
WINK_OnvifProbe discover [options]
| Option | Description | Default |
|---|---|---|
-t, --timeout <seconds> | Discovery timeout | 5 |
-o, --output <file> | Save results to JSON file | - |
--format <format> | Output format: text, json | text |
-q, --quiet | Suppress output (for scripting) | false |
-v, --verbose | Enable debug logging | false |
# Basic discovery WINK_OnvifProbe discover # Extended timeout for slow networks WINK_OnvifProbe discover -t 15 # JSON output for scripting WINK_OnvifProbe discover --format json # Save to file WINK_OnvifProbe discover -o cameras.json
Actively scan IP ranges for ONVIF cameras. Supports CIDR notation.
WINK_OnvifProbe scan -n <network> [options]
| Option | Description | Default |
|---|---|---|
-n, --network <cidr> | Network range in CIDR notation (required) | - |
-u, --username <user> | ONVIF username | - |
-p, --password <pass> | ONVIF password | - |
--port <port> | Specific port to scan | auto |
--parallel <n> | Parallel scan threads | 10 |
-o, --output <file> | Save results to JSON | - |
| CIDR | Range | Count |
|---|---|---|
192.168.1.0/24 | 192.168.1.0 - 192.168.1.255 | 256 |
192.168.1.0/28 | 192.168.1.0 - 192.168.1.15 | 16 |
10.0.0.0/16 | 10.0.0.0 - 10.0.255.255 | 65,536 |
# Scan local subnet WINK_OnvifProbe scan -n 192.168.1.0/24 # Multiple subnets WINK_OnvifProbe scan -n 192.168.1.0/24,192.168.8.0/24 # With credentials WINK_OnvifProbe scan -n 192.168.1.0/24 -u admin -p password # Fast scan with more threads WINK_OnvifProbe scan -n 10.0.0.0/16 --parallel 50
Get RTSP URLs and stream details from a specific camera using ONVIF.
WINK_OnvifProbe probe -h <host> -u <username> -p <password> [options]
| Option | Description | Default |
|---|---|---|
-h, --host <host> | Camera hostname or IP (required) | - |
-u, --username <user> | ONVIF username (required) | - |
-p, --password <pass> | ONVIF password (required) | - |
--port <port> | Specific ONVIF port | auto |
--format <format> | Output format: text, json | text |
# Basic probe WINK_OnvifProbe probe -h 192.168.1.100 -u admin -p password # JSON output WINK_OnvifProbe probe -h 192.168.1.100 -u admin -p password --format json # Save to file WINK_OnvifProbe probe -h 192.168.1.100 -u admin -p password -o camera.json
Guess RTSP stream URLs using manufacturer-specific patterns. Useful when ONVIF is not available or credentials differ for RTSP.
WINK_OnvifProbe guess -h <host> [options]
| Option | Description | Default |
|---|---|---|
-h, --host <host> | Camera hostname or IP (required) | - |
-u, --username <user> | RTSP username | - |
-p, --password <pass> | RTSP password | - |
--rtsp-port <port> | RTSP port | 554 |
-m, --manufacturer <name> | Camera manufacturer | Auto |
--all | Try all manufacturer patterns | false |
--stop-first | Stop after first working URL | false |
--ffprobe | Use ffprobe for testing | false |
| Manufacturer | Example Models |
|---|---|
| Hikvision | DS-2CD series |
| Dahua | IPC-HFW series |
| Amcrest | IP2M, IP4M, IP8M series |
| Axis | M, P, Q series |
| Reolink | RLC series |
| Uniview | IPC series |
| Bosch | FLEXIDOME, DINION |
| Hanwha | Wisenet, Samsung |
| Vivotek | FD, IB series |
| Foscam | FI series |
| Panasonic | WV series |
| Sony | SNC series |
| + 5 more | Geovision, ACTi, Mobotix, Pelco, Generic |
# Auto-detect manufacturer WINK_OnvifProbe guess -h 192.168.1.100 -u admin -p password # Specify manufacturer WINK_OnvifProbe guess -h 192.168.1.100 -u admin -p password -m Hikvision # Try all manufacturers WINK_OnvifProbe guess -h 192.168.1.100 -u admin -p password --all # Stop after first working URL WINK_OnvifProbe guess -h 192.168.1.100 -u admin -p password --stop-first
List recordings stored on an ONVIF camera (Profile G).
WINK_OnvifProbe recordings -h <host> -u <username> -p <password> [options]
# List recordings WINK_OnvifProbe recordings -h 192.168.1.100 -u admin -p password # JSON output WINK_OnvifProbe recordings -h 192.168.1.100 -u admin -p password --format json
Get replay URI for a recording and optionally download it using ffmpeg.
WINK_OnvifProbe download -h <host> -u <user> -p <pass> -t <token> [options]
| Option | Description | Default |
|---|---|---|
-t, --token <token> | Recording token (from recordings command) | - |
-o, --output <file> | Output video file path | - |
-d, --duration <seconds> | Recording duration to download | 60 |
# Get replay URL only WINK_OnvifProbe download -h 192.168.1.100 -u admin -p password -t recording_001 # Download 60 seconds to file WINK_OnvifProbe download -h 192.168.1.100 -u admin -p password -t recording_001 -o clip.mp4 # Download 5 minutes WINK_OnvifProbe download -h 192.168.1.100 -u admin -p password -t recording_001 -o clip.mp4 -d 300
Batch test multiple cameras from a JSON file.
WINK_OnvifProbe test -i <input.json> [-o <output.json>]
{
"cameras": [
{
"host": "192.168.1.100",
"username": "admin",
"password": "password",
"port": 80
},
{
"host": "192.168.1.101",
"username": "admin",
"password": "password"
}
]
}
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | General error (connection failed, auth failed, etc.) |
| 2 | Invalid arguments |
| 3 | No cameras found |
| 4 | Partial success (some cameras failed) |
The tool automatically tries these ports when --port is not specified:
| Port | Protocol | Common Use |
|---|---|---|
| 80 | HTTP | Default ONVIF |
| 443 | HTTPS | Secure ONVIF |
| 8080 | HTTP | Alternative |
| 8000 | HTTP | Hikvision default |
| 554 | RTSP | Sometimes used |
#!/bin/bash
# Discover cameras and probe each one
WINK_OnvifProbe discover --format json -o /tmp/cameras.json
jq -r '.cameras[].host' /tmp/cameras.json | while read host; do
echo "Probing $host..."
WINK_OnvifProbe probe -h "$host" -u admin -p password --format json
done
#!/bin/bash
if WINK_OnvifProbe probe -h 192.168.1.100 -u admin -p password -q; then
echo "Camera is online"
else
echo "Camera is offline"
fi
import subprocess
import json
result = subprocess.run(
['WINK_OnvifProbe', 'probe', '-h', '192.168.1.100',
'-u', 'admin', '-p', 'password', '--format', 'json'],
capture_output=True, text=True
)
data = json.loads(result.stdout)
for profile in data['profiles']:
print(f"Stream: {profile['rtspUrl']}")
# Scan network and export to CSV $result = WINK_OnvifProbe scan -n 192.168.1.0/24 --format json | ConvertFrom-Json $result.cameras | Export-Csv -Path cameras.csv -NoTypeInformation
| Variable | Description |
|---|---|
WINK_ONVIF_TIMEOUT | Default timeout in seconds |
WINK_ONVIF_USERNAME | Default username |
WINK_ONVIF_PASSWORD | Default password |
NO_COLOR | Disable colored output |
scan command insteadguess command with --ffprobe flagWINK Camera Studio - Professional camera management with GUI
Download the full application for visual camera management, PTZ control, and live video preview.
WINK OnvifProbe is licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0). ONVIF is a registered trademark of ONVIF, Inc.