This article has multiple issues. Please helpimprove it or discuss these issues on thetalk page.(Learn how and when to remove these messages) (Learn how and when to remove this message)
|
| Communication protocol | |
| Abbreviation | RTSP |
|---|---|
| Purpose | Internet streaming |
| Developer(s) | RealNetworks,Netscape,Columbia University |
| Introduction | April 1998; 27 years ago (1998-04) |
| OSI layer | Application layer (7) |
| Port(s) |
|
| RFC(s) | RFC 2326,7826 |
TheReal-Time Streaming Protocol (RTSP) is anapplication-level networkprotocol designed formultiplexing andpacketizingmultimedia transport streams (such asinteractive media,video andaudio) over a suitabletransport protocol.RTSP is used in entertainment and communications systems to controlstreaming mediaservers.The protocol is used for establishing and controlling media sessions between endpoints.Clients of media servers issue commands such asplay,record andpause to facilitate real-time control of the media streaming from the server to a client (video on demand) or from a client to the server (voice recording).
RTSP was developed byRealNetworks,Netscape andColumbia University.[1][2]The first draft was submitted to IETF in October 1996 byNetscape andProgressive Networks, after whichHenning Schulzrinne fromColumbia University submitted "RTSP՚" ("RTSP prime") in December 1996.[3][4]The two drafts were merged for standardization by the Multiparty Multimedia Session Control Working Group (MMUSIC WG) of theInternet Engineering Task Force (IETF) and further drafts were published by the working group.[5][6]TheProposed Standard for RTSP was published as RFC 2326 in 1998.[7]
RTSP 2.0 was published as RFC 7826 in 2016 as a replacement of RTSP 1.0.Version 2.0 is based on version 1.0 but is not backwards compatible other than in the basic version negotiation mechanism, and remains a Proposed Standard.[8]
| Internet protocol suite |
|---|
| Application layer |
| Transport layer |
| Internet layer |
| Link layer |
The transmission of streaming data itself is not a task of RTSP. Most RTSP servers use theReal-time Transport Protocol (RTP) in conjunction withReal-time Control Protocol (RTCP) for media stream delivery. However, some vendors implement proprietary transport protocols. The RTSP server software fromRealNetworks, for example, also used RealNetworks' proprietaryReal Data Transport (RDT).
While similar in some ways toHTTP, RTSP defines control sequences useful in controlling multimedia playback. While HTTP isstateless, RTSP has a state; an identifier is used when needed to track concurrent sessions. Like HTTP, RTSP uses TCP to maintain an end-to-end connection and, while most RTSP control messages are sent by the client to the server, some commands travel in the other direction (i.e., from server to client).
Presented here are the basic RTSP requests. Some typicalHTTP requests, like the OPTIONS request, are also available. The default transport layerport number is 554[7] for bothTCP andUDP, the latter being rarely used for the control requests.
C->S: OPTIONS rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 1 Require: implicit-play Proxy-Require: gzipped-messagesS->C: RTSP/1.0 200 OK CSeq: 1 Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE
rtsp://URL, and the type of reply data that can be handled. This reply includes the presentation description, typically inSession Description Protocol (SDP) format. Among other things, the presentation description lists the media streams controlled with the aggregate URL. In the typical case, there is one media stream each for audio and video streams. The media stream URLs are either obtained directly from the SDP control fields or are obtained by appending the SDP control field to the aggregate URL.C->S: DESCRIBE rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 2S->C: RTSP/1.0 200 OK CSeq: 2 Content-Base: rtsp://example.com/media.mp4 Content-Type: application/sdp Content-Length: 460 m=video 0 RTP/AVP 96 a=control:streamid=0 a=range:npt=0-7.741000 a=length:npt=7.741000 a=rtpmap:96 MP4V-ES/5544 a=mimetype:string;"video/MP4V-ES" a=AvgBitRate:integer;304018 a=StreamName:string;"hinted video track" m=audio 0 RTP/AVP 97 a=control:streamid=1 a=range:npt=0-7.712000 a=length:npt=7.712000 a=rtpmap:97 mpeg4-generic/32000/2 a=mimetype:string;"audio/mpeg4-generic" a=AvgBitRate:integer;65790 a=StreamName:string;"hinted audio track"
C->S: SETUP rtsp://example.com/media.mp4/streamid=0 RTSP/1.0 CSeq: 3 Transport: RTP/AVP;unicast;client_port=8000-8001S->C: RTSP/1.0 200 OK CSeq: 3 Transport: RTP/AVP;unicast;client_port=8000-8001;server_port=9000-9001;ssrc=1234ABCD Session: 12345678C->S: SETUP rtsp://example.com/media.mp4/streamid=1 RTSP/1.0 CSeq: 3 Transport: RTP/AVP;unicast;client_port=8002-8003 Session: 12345678S->C: RTSP/1.0 200 OK CSeq: 3 Transport: RTP/AVP;unicast;client_port=8002-8003;server_port=9002-9003;ssrc=1234ABCD Session: 12345678
C->S: PLAY rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 4 Range: npt=5-20 Session: 12345678S->C: RTSP/1.0 200 OK CSeq: 4 Session: 12345678 RTP-Info: url=rtsp://example.com/media.mp4/streamid=0;seq=9810092;rtptime=3450012
C->S: PAUSE rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 5 Session: 12345678S->C: RTSP/1.0 200 OK CSeq: 5 Session: 12345678
C->S: RECORD rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 6 Session: 12345678S->C: RTSP/1.0 200 OK CSeq: 6 Session: 12345678
The ANNOUNCE method serves two purposes:
C->S: ANNOUNCE rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 7 Date: 23 Jan 1997 15:35:06 GMT Session: 12345678 Content-Type: application/sdp Content-Length: 332 v=0 o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4 s=SDP Seminar i=A Seminar on the session description protocol u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps e=mjh@isi.edu (Mark Handley) c=IN IP4 224.2.17.12/127 t=2873397496 2873404696 a=recvonly m=audio 3456 RTP/AVP 0 m=video 2232 RTP/AVP 31S->C: RTSP/1.0 200 OK CSeq: 7C->S: TEARDOWN rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 8 Session: 12345678S->C: RTSP/1.0 200 OK CSeq: 8
S->C: GET_PARAMETER rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 9 Content-Type: text/parameters Session: 12345678 Content-Length: 15 packets_received jitterC->S: RTSP/1.0 200 OK CSeq: 9 Content-Length: 46 Content-Type: text/parameters packets_received: 10 jitter: 0.3838
C->S: SET_PARAMETER rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 10 Content-length: 20 Content-type: text/parameters barparam: barstuffS->C: RTSP/1.0 451 Invalid Parameter CSeq: 10 Content-length: 10 Content-type: text/parameters barparam
S->C: REDIRECT rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 11 Location: rtsp://bigserver.com:8001 Range: clock=19960213T143205Z-
C->S: SETUP rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 3 Transport: RTP/AVP/TCP;interleaved=0-1S->C: RTSP/1.0 200 OK CSeq: 3 Date: 05 Jun 1997 18:57:18 GMT Transport: RTP/AVP/TCP;interleaved=0-1 Session: 12345678C->S: PLAY rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 4 Session: 12345678S->C: RTSP/1.0 200 OK CSeq: 4 Session: 12345678 Date: 05 Jun 1997 18:59:15 GMT RTP-Info: url=rtsp://example.com/media.mp4;seq=232433;rtptime=972948234S->C: $\000{2 byte length}{"length" bytes data, w/RTP header}S->C: $\000{2 byte length}{"length" bytes data, w/RTP header}S->C: $\001{2 byte length}{"length" bytes RTCP packet}RTSP over HTTP was defined by Apple in 1999[9] It interleaves the RTP Video and Audio data into the RTSP Command Connection (as defined in RFC2326), and then sends the RTSP Command Connection via a pair of HTTP connections. One is a long running GET connection, and the other is a long running POST connection.
This method is also used in theONVIF IP Camera standard and can be combined with HTTPS for secure and encrypted video and audio.
There are several different methods for encrypting RTSP command messages and the RTP Video and Audio data.
RTSP 2.0 (RFC7826) defines several methods for encryption and introduces a newrtsps:// URL and many of these have been incorporated into RFC2326 RTSP 1.0 Clients and Servers.
rtsps:// URL) - This method uses aTLS Socket (default of Port 322) to establish an encrypted connection between the RTSP client and the RTSP Server.IANA have reserved thertsps:// URL prefix and Port 322 for RTSPS.[10] As of September 2024, RTSP over HTTPS has been implemented in several ONVIF IP Cameras and RTSPS (using thertsps:// URL) has been implemented by Axis and Bosch CCTV Cameras,[11]FFmpeg,GStreamer, MediaMTX,[12] Ant Media Server[13] and SharpRTSP.[14]
RTSP using RTP and RTCP allows for the implementation of rate adaptation.[15]
ManyCCTV / Security cameras, often calledIP cameras, support RTSP streaming too, especially those withONVIF profiles G, S, T.