Simple contribution from OBS, vMix and hardware encoders.
RTMP or RTSP? Choose at the workflow boundary
RTMP is a practical push ingest from encoders. RTSP is session-oriented access to cameras and media servers. The right answer often uses both—at different edges.
Choose by source behavior and receiver contract, not by a blanket latency claim.
Discover, negotiate and control an available source.
Package or convert for the actual playback surface.
The choice is for one boundary: an encoder or camera needs to hand live media to a server, recorder or gateway. In the common ingest model, RTMP lets a publisher open an outbound connection and send a named stream. RTSP lets a client request and control a presentation exposed by a source. Decide from who can initiate the session and what the receiver must control—not from a generic latency ranking.
RTMP vs RTSP: the operating model
| Boundary question | RTMP in live ingest | RTSP |
|---|---|---|
| Who normally initiates? | The publisher—an encoder or production application—connects to a server. | The client—player, recorder, or gateway—connects to a camera or media server. |
| What names the media? | Server/application plus a stream name or publishing key. | A resource URI and presentation description with one or more controlled tracks. |
| How are control and media carried? | Commands and media messages share the RTMP connection over TCP. | RTSP controls the session; media commonly travels as RTP over negotiated UDP or TCP transport. |
| Common source | OBS, hardware encoder, switcher, or application that publishes. | IP camera or media server that exposes a live or stored presentation. |
| First network test | Can the publisher reach and authenticate to the ingest service? | Can the client reach the resource, then receive the negotiated media path? |
| First media test | Did the ingest receive the named stream with the expected codecs and timestamps? | Did DESCRIBE identify the right tracks, and can the client receive and decode them? |
| Viewer delivery | Treat separately. Neither ingest choice is a complete browser or app playback architecture. | |
This compares workflows; it does not mean RTMP can only publish. The protocol defines playback behavior as well. For an operator, the useful distinction is the usual live-ingest connection model: an RTMP publisher connects to ingest, while an RTSP client connects to an exposed presentation.
Choose from the source outward
An encoder sends a programme to a public or cloud ingest
When the encoder already publishes RTMPS, it is usually the cleaner fit. The source opens one outbound TLS-protected connection to a documented server address and stream key. Check the service's codec, audio, bitrate and keyframe requirements. RTMP compatibility does not mean that every RTMP endpoint will accept every encoded programme.
A recorder or gateway pulls a camera on a controlled LAN
RTSP usually fits because the receiver can request the intended camera profile and negotiate the media path. A successful login is only the start. Validate the SDP, selected tracks, UDP or interleaved TCP behavior, decode, timestamps and reconnect. The RTSP camera runbook covers discovery and commissioning.
A remote camera must cross an unmanaged WAN
Do not expose the camera or choose RTSP simply because it works on the local network. A local gateway can pull RTSP inside the site, then hand the feed to a more appropriate contribution protocol across the WAN. This preserves the camera's supported output while making security, retry and monitoring an explicit boundary.
Viewers need browser playback
Treat ingest and playback as separate decisions. Receive RTMP or RTSP where it suits the source, then produce the protocol and packaging the player requires. Forcing the camera or encoder to speak the final viewer protocol can push transcoding, security and scale into the least observable device.
Transport and codec are separate compatibility tests
The FFmpeg RTMP documentation describes RTMP as multimedia streaming over TCP/IP and RTMPS as its TLS-protected variant. RTSP 2.0 control uses TCP or TCP/TLS, but the media may travel as RTP over UDP, multicast UDP, TCP or the RTSP connection. “Both use TCP” is therefore not a network design.
Codec assumptions become outdated even faster. Legacy RTMP/FLV workflows commonly use H.264 video and AAC audio, while the industry E-RTMP specification adds signaling for newer codecs. RTSP can describe many RTP payload formats, but a camera exposes only the codecs and profiles implemented in its firmware. Read the contract at both endpoints and test the decoded output. The protocol name alone does not guarantee codec support.
Network and security boundaries
- RTMP/RTMPS: an outbound publisher connection often aligns with cloud firewall policy. Protect the publishing key, restrict the ingest where the service allows it, and prefer RTMPS when both endpoints support it.
- RTSP with RTP/UDP: the control connection may work while the negotiated media ports fail. Document address translation, return routes, ACLs, and the permitted port range.
- RTSP interleaved over TCP: fewer network openings can simplify a restricted path, but ordered delivery changes loss and congestion behavior. Test it under the real load.
- Camera security: avoid direct Internet exposure. Use a private route, VPN, segmentation, least-privilege media account, and a gateway where remote contribution is required.
RTMP, RTMPS, RTSP, RTSPS, RTP and SRTP are not interchangeable labels. Confirm the exact security and transport combination implemented at each endpoint.
A decision and validation runbook
- Name the boundary. Write down the source, receiver, team responsible for the network and consuming job. Do not choose one protocol for the entire architecture.
- List the source's documented outputs. Record the exact firmware or software version, protocol mode, codecs, authentication and which side initiates the connection.
- List the receiver's acceptance contract. Include the URI structure, credentials, codec/profile limits, audio, keyframe or timestamp expectations and allowed transports.
- Eliminate unreachable models. If neither side can accept an inbound connection, an RTSP pull or privately hosted ingest may require a gateway or a network change. If the camera cannot publish RTMP, do not design as though it can.
- Build the smallest end-to-end path. Use one source, one ingest and one visible output. Confirm decoded motion and audio, not just a connected status.
- Test each failure boundary. Restart the source and receiver, interrupt the network, rotate credentials and fail the consuming job separately. Record the recovery time and any manual actions.
- Measure the whole path. Compare startup, end-to-end delay, frame cadence, audio sync, stability and downstream compatibility. The protocol choice alone does not determine latency.
If you replace one with the other, preserve a rollback
Before migration, capture a baseline: source identity, video and audio formats, average and peak bitrate, keyframe cadence, measured delay, reconnect time and every dependent output. Run the new path in parallel through a source restart and representative network impairment. Compare decoded outputs, recordings and viewer delivery—not just connection dashboards.
Keep the old route available until the new boundary satisfies the same acceptance criteria. Lower delay is not an operational improvement if the change drops audio, makes recovery manual or hides the selected camera profile.
Verify the RTSP recording boundary in Callaba
For an RTSP source, Callaba's Recordings API offers a narrow, testable product path. Create one job with INPUT_TYPE_RTSP_URL and the verified input_stream_url. While it runs, check POST /api/recording/getStat. Then stop the job and call POST /api/recording/getById to confirm that recordedFiles[] is populated. This proves the recording boundary only; evaluate RTMP ingest against its own receiver contract.
For RTMP ingest architecture, see What is an RTMP server? For application setup, use sending and receiving RTMP with OBS Studio. The canonical RTSP guide explains the session and transport mechanics.
References
- IETF RFC 7826: Real-Time Streaming Protocol Version 2.0
- IETF RFC 3550: RTP—A Transport Protocol for Real-Time Applications
- FFmpeg RTMP protocol documentation
- FFmpeg RTSP protocol documentation
- Veovera legacy RTMP/FLV normative references
- Veovera E-RTMP specification
- OBS Studio developer documentation: streaming outputs

