Main stream, substream, codec, frame rate and audio.
Build an RTSP camera path you can trust
Choose the right camera profile, keep credentials out of shared URLs and prove decoded video, audio, timestamps and reconnect behavior before rollout.
Start with one representative camera and one failure rehearsal.
Credentials, firewall policy and transport are explicit.
Watch the decoded feed and verify recovery.
The camera is online. Now you need the exact RTSP feed that a recorder, gateway or production system can use without guesswork. Commission one camera all the way from discovery and decode through recovery and the final consuming job before copying its settings across the site.
Keep four boundaries visible
- Management and discovery: the camera's address, firmware, account, time source, and vendor or ONVIF configuration interface.
- Media profile: the selected video, audio, metadata, resolution, rate control, and frame cadence.
- RTSP/RTP session: the resource URI, authentication, presentation description, and TCP or UDP media path.
- Consuming job: preview, recording, restream, analysis, or browser bridge, each with its own codec and recovery requirements.
A camera may be healthy at the first two boundaries even when the UDP media path is blocked. It may also decode in a desktop player while the recorder rejects its audio format. Before changing the camera, identify the boundary that actually failed.
Discover the stream from the device contract
Begin with the current manual or API documentation for the installed firmware. Vendors define their own RTSP paths. One Axis VAPIX example uses rtsp://<servername>/axis-media/media.amp and lets a saved streamprofile select a defined set of parameters. That tells you something about Axis devices; it is not a universal camera URL.
If a device implements the relevant ONVIF Media Service, a client can enumerate its media profiles and request a stream URI for a chosen profile token. This is useful because the returned URI belongs to a configured profile. It does not guarantee that every downstream decoder will accept the profile's codecs, and an ONVIF label does not replace the vendor's firmware documentation.
Check the product's current ONVIF conformance instead of treating “ONVIF compatible” as a permanent, universal label. Profile S is being deprecated, with 31 March 2027 as the final date for new product-conformance submissions. Existing Profile S devices do not stop working on that date. For a new design, review the exact capabilities declared for the product and compare them with Profile T. Profile T can cover H.264/H.265 video, imaging settings, metadata and event features. Even so, the label does not prove that this particular codec, audio, metadata and receiver combination will pass the runbook.
Record these fields before testing
| Field | Evidence | Why it matters |
|---|---|---|
| Device identity | Model, serial or asset ID, firmware, management address | Prevents a result from being generalized to a different hardware or firmware branch. |
| Profile identity | Vendor profile name or ONVIF profile token | Distinguishes the main stream, substream, and any analytics or metadata profile. |
| Expected media | Video codec/profile, resolution, frame rate, bitrate mode, GOP; audio codec/rate/channels | Defines what the receiver must decode and what downstream jobs must preserve. |
| Session endpoint | Host, port if non-default, vendor path, required parameters | Separates a wrong resource from a network or credential failure. |
| Secret reference | Vault or credential-manager identifier | Keeps usernames and passwords out of tickets, screenshots, shell history, and analytics. |
Build the URL without turning it into a leaked secret
A runbook can safely show a structural placeholder such as rtsp://camera.example.invalid/<vendor-path>. Keep the real credential in an approved secret store and, where possible, inject it through the receiving application. Do not publish a URL in the form rtsp://user:password@host/.... Even if the client accepts it, that string is likely to end up in history, logs, screenshots or process output.
Give the media consumer its own account instead of reusing the camera administrator. Check the authentication mode the device actually supports; RTSP endpoints do not all handle authentication the same way. Axis, for example, recommends Digest authentication for RTSP clients in its current guidance.
Camera-to-receiver validation runbook
- Stabilize identity and time. Update through the vendor-approved firmware process, assign the intended network identity and verify the device clock. Time errors make logs, certificates, recordings and correlation with other cameras harder to trust.
- Select one explicit profile. Start with the codec and resolution the consuming job requires, which may not be the highest setting. Confirm whether audio and metadata are enabled, then save the profile name or token.
- Retrieve the URI through a supported path. Use the vendor UI/API or the ONVIF Media Service where available. Sanitize the result before it goes into a ticket or runbook.
- Inspect the presentation locally. From an approved host on the camera network, verify that
DESCRIBEreturns the expected video and audio tracks. Useffprobeor another supported inspector to capture the codec, dimensions, frame rate and audio details. - Exercise both documented transports. FFmpeg tools support explicit
-rtsp_transport udpand-rtsp_transport tcpmodes. Test only the modes documented by the camera. Record which one works, the media ports where applicable, startup time and behavior under loss or congestion. - Move the same profile to the real receiver. At the gateway or recorder, recheck decoded motion, audio, timestamps and source identity. A laptop-player result proves the camera profile, not the production receiver.
- Attach the consuming job. Create the required recording or output and inspect the artifact at its destination. Verify duration, seekability where required, audio, file segmentation or stream continuity and retention behavior.
- Run recovery and soak tests. Reboot the camera, interrupt the network, restart the receiver and rotate the service credential through the approved process. Run long enough to cover representative load, lighting-mode changes and the site's normal clock behavior.
Read the symptom before editing the profile
| Symptom | Likely boundary | Next evidence |
|---|---|---|
| Connection refused or timeout | Address, route, firewall, RTSP service, or port | Reachability from the receiver and the camera service state |
| Authentication or resource error | Account permissions, authentication mode, or vendor path | Sanitized RTSP status, current vendor path, and account role |
DESCRIBE succeeds; no UDP media | Negotiated RTP ports, ACL, NAT, or asymmetric route | SETUP transport response and packet capture at both sides |
| TCP works; UDP does not | Network policy, not automatically the codec | Allowed port range, return path, and packet loss counters |
| Packets arrive; picture is black or rejected | Track selection, codec/profile, parameter sets, decoder | SDP plus inspector and decoder logs |
| Preview works; recording or restream fails | Downstream job | Destination codec rules, timestamps, storage, and output logs |
| Failure appears after hours | Clock drift, network contention, firmware, thermal or scheduled camera behavior | Time-correlated camera, network, receiver, and output logs |
Remote access should not expose the camera
Axis's current hardening guide recommends limiting Internet exposure, isolating devices and related infrastructure on a segregated network, disabling unused services and keeping device time accurate. These are sound architecture checks for any camera estate. When the hardware comes from another vendor, use that vendor's hardening guide for the actual controls.
Prefer a private route, site-to-site VPN or an on-site gateway that pulls the camera locally instead of exposing the device directly. Restrict management more tightly than media consumption, allow only named receivers and identify the teams responsible for firmware, credentials, certificates, network policy and incident response. Being able to reach RTSP is not authorization to expose the camera UI.
Validate one camera recording in Callaba
After proving the exact camera profile, use Callaba's Recordings API to create one job with INPUT_TYPE_RTSP_URL and the verified input_stream_url. Keep the profile identity visible to operators. While the job is active, inspect POST /api/recording/getStat for bitrate, fps, out_time_ms, speed and progress. Stop the job, call POST /api/recording/getById and confirm that recordedFiles[] contains the expected file. The evidence applies only to that recording path and the camera profile you tested.
For site topology and retention responsibilities, continue with video surveillance streaming. For the protocol mechanics, return to RTSP. Camera purchasing is outside this page; use the camera selection guidance for that job.
References
- Axis VAPIX video-streaming documentation
- Axis VAPIX authentication guidance
- AXIS OS hardening guide
- ONVIF Media Service: profiles and GetStreamUri
- Current ONVIF Streaming Specification
- ONVIF Profile S and deprecation timeline
- ONVIF Profile T
- IETF RFC 7826: RTSP 2.0
- FFmpeg RTSP protocol documentation

