Skip to content

About this article

  • Audience: VMS integrators and operators wiring standard IP-camera clients to a shadow device
  • Goal: After reading, you can discover the device, read or set H.265 encoding, open the live RTSP stream, and subscribe to person-detection events
  • Type: Reference

Summary

Each shadow exposes a minimal ONVIF sidecar aligned with ONVIF Profile S (video) and Profile T (metadata/events). Standard tools discover the camera over WS-Discovery, configure H.265 encoding, play RTSP from the existing encoder pipeline, and pull person events sourced from on-device RF-DETR precomp detections.

Prerequisites

  • Shadow deployed and healthy — see Quickstart
  • LAN access to <device-ip> (UDP 3702, TCP 8080, RTSP 8554)
  • Optional: ONVIF Device Manager, VLC, or a VMS that supports Profile S/T (Milestone, Genetec, and similar)

Ports and services

PortProtocolService
3702UDPWS-Discovery — Probe / ProbeMatch
8080HTTPONVIF SOAP — Device, Media2, Events
8554RTSPLive H.265 preview via go2rtc

Discovery scopes: Profile/T, video_encoder, NetworkVideoTransmitter

SOAP endpoints (replace <device-ip>):

PathProfilePurpose
/onvif/device_serviceDeviceIdentity and capabilities
/onvif/media2SProfiles, encoder config, stream URI
/onvif/eventsTPull-point subscriptions and messages

Device service

OperationResponse
GetDeviceInformationManufacturer, model, firmware, serial, hardware ID
GetCapabilitiesXAddr URLs for Device, Media2, Events on <device-ip>:8080

Media2 (Profile S)

GetProfiles / GetVideoEncoderConfiguration

Active H265_MAIN profile (defaults when unset):

FieldDefault
Resolution3840 × 2160
Frame rate30 fps
Bitrate12 000 kbps
Keyframe interval2 s

GetVideoEncoderConfigurationOptions

Returns supported H.265 resolution and rate-control bounds (320–3840 wide, 240–2160 tall, 5–30 fps, 1 000–20 000 kbps).

SetVideoEncoderConfiguration

Maps SOAP encoder fields to H265_* settings on the device. A configuration change is signaled to the encoder process; clients may need to reconnect the RTSP session after a set.

Writable fields: Encoding (H265), Width, Height, FrameRateLimit, BitrateLimit.

GetStreamUri

Returns the live preview URI:

text
rtsp://<device-ip>:8554/preview

The stream reuses the existing H.265 encoder and go2rtc relay — no separate encoder is started for ONVIF.

Events (Profile T)

CreatePullPointSubscription / PullMessages

Person detections from RF-DETR class 0 (precomp, confidence ≥ 0.35). PullMessages returns up to three of the eight most recent person detections.

Motion topic (tns1:RuleEngine/CellMotionDetector/Motion):

FieldSource
Personc=0 conf=<score> track=<track_id>
VideoSource0

Configuration topic (tns1:Device/Configuration/ConfigurationChanged): emitted after encoder sets and on each pull for client compatibility.

Pull-point termination window: 120 seconds from the current time.

Client quick checks

VLC — live preview

bash
vlc rtsp://<device-ip>:8554/preview

ONVIF Device Manager

  1. Run network scan (UDP 3702).
  2. Open device → Live video → confirm H.265 stream.
  3. Video encoder → change resolution or bitrate → verify encoder log shows H265_MAIN active.
  4. Events → PullPoint → confirm person motion messages with c=0.

Proxy — latest detections (parallel check without ONVIF)

bash
curl -s -X POST "http://PHANTOM_PROXY:8788/tools/call?target=<device-ip>" \
  -H "Content-Type: application/json" \
  -d '{"tool":"get_latest_dets","arguments":{}}'

Expect dets entries with c: 0 (person) at ~10 Hz when RF-DETR is engaged.

Architecture

Limitations (MVP)

  • Auth: Minimal digest; most clients tolerate open discovery on the LAN.
  • Profiles: Single main profile token (Profile_1 / Enc_1); no full WSDL catalog.
  • Events: Pull-point only; no WS-Notification push in this MVP.
  • Detections: Person class (c=0) only; weapon and other classes stay on MQTT/MCP surfaces.
  • Recording: Justified 60 s chunks and cloud escalation are outside ONVIF — see API reference.

Next steps

  • Verify post-deploy ONVIF and RTSP during your soak gate in Quickstart
  • Wire VMS event rules on person motion topics
  • Read MQTT reference for fleet-wide detection telemetry at ~10 Hz

Operator depth

Live fleet state and harness evidence live in private operator handoff (not published) (private).