ptz-onvif

Discover ONVIF cameras and retrieve RTSP stream URLs and PTZ endpoints.

15|4|Updated Apr 18, 2026
One-click install
npx skills add https://github.com/damionrashford/media-os --skill ptz-onvif
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ptz-onvif
Source: https://github.com/damionrashford/media-os/tree/main/skills/ptz-onvif
Command: npx skills add https://github.com/damionrashford/media-os --skill ptz-onvif

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve?

Discover and control ONVIF IP cameras via SOAP/XML with WS-Security UsernameToken digest: onvif-util (libonvif github.com/sr99622/libonvif), onvif-cli (github.com/gardere/onvif-cli), python-onvif-zeep (PyPI onvif-zeep), onvif_control (bash + WS-Security), gonvif (Go). WS-Discovery multicast to 239.255.255.250:3702 finds ProbeMatch responses. Services: Device Management, Media (RTSP URIs), PTZ, Imaging, Events, Recording/Search/Replay, Analytics. Profiles: S (deprecated 2027), T (H.264/H.265 + metadata), G (recording), M (analytics), A/C/D (access). Use when the user asks to discover ONVIF cameras, get an RTSP stream URL, move a PTZ via ONVIF (ContinuousMove/AbsoluteMove/GotoPreset), grab a snapshot, authenticate with UsernameToken digest, or query a camera's ONVIF capabilities.

Core Features & Use Cases

  • Discover ONVIF devices on the network and query capabilities
  • Retrieve device information (Manufacturer, Model, FirmwareVersion, SerialNumber, HardwareId)
  • Obtain RTSP stream URIs via GetProfiles/GetStreamUri (Media/Media2)
  • Grab snapshots via GetSnapshotUri
  • PTZ controls: ContinuousMove, AbsoluteMove, GotoPreset, SetPreset
  • WS-Security UsernameToken digest for SOAP authentication
  • Use cases: camera inventory, live UI control, automated ingest

Quick Start

Discover cameras on the network and fetch a stream URL and PTZ control using the onvifctl script.

Frequently Asked Questions about ptz-onvif

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I discover ONVIF cameras on a local network and get their RTSP stream URLs?

To control PTZ over ONVIF, use SOAP/XML requests implementing ContinuousMove for ongoing panning or tilting, AbsoluteMove for specific positioning, GotoPreset to recall saved views, and SetPreset to store new camera angles with optional timeouts.

How does WS-Security UsernameToken digest authentication work for ONVIF SOAP requests?

WS-Security UsernameToken digest authenticates ONVIF SOAP requests by hashing the username and password into a digest token sent in the SOAP header. This secures camera control commands without transmitting raw credentials across the local network.

Can I use ONVIF Profile T and Media2 for snapshot capture and device inventory?

Yes, ONVIF Profile T is supported via Media2 for H.264/H.265 streaming and metadata. You can capture snapshots using GetSnapshotUri and query device information like Manufacturer, Model, FirmwareVersion, and SerialNumber for camera inventory tasks.

What is the difference between ONVIF Profiles S, T, and M for camera automation?

Profile S handles streaming but deprecates in 2027, Profile T adds H.265 and metadata support, and Profile M enables analytics. Automating security workflows requires matching the camera's supported profiles to the desired PTZ, streaming, or analytics capabilities.

Do I need specific libraries to perform PTZ control and RTSP ingest via ONVIF?

You can use libraries like python-onvif-zeep, gonvif, or bash scripts with WS-Security to perform PTZ control and RTSP ingest. The Skill provides scripts and references to drive ONVIF cameras via SOAP without requiring external dependencies.