L'RTSP, acronimo di Real Time Streaming Protocol, è un protocollo di rete utilizzato in sistemi informatici di comunicazione ed intrattenimento rivolto al controllo di server per lo streaming multimediale. Il protocollo serve a stabilire e gestire sessioni di streaming tra server e client. I client inviano al media server comandi simili ad un videoregistratore, come play o pause, in modo da controllare in tempo reale la riproduzione dei file audio/video distribuiti dal server multimediale.
Di per sé la trasmissione dei dati di streaming non è un compito definito nel protocollo RTSP. La maggior parte dei server RTSP si affida per la distribuzione di flussi multimediali al Real-time Transport Protocol (RTP) in unione al Real-time Control Protocol (RTCP), anche se alcuni fornitori preferiscono implementare protocolli di trasporto brevettati: ad esempio, i server RTSP di RealNetworks utilizzano il Real Data Transport (RDT), di proprietà della RealNetworks stessa.
Il protocollo RTSP è stato sviluppato dal Multiparty Multimedia Session Control Working Group (MMUSIC WG) della Internet Engineering Task Force (IETF), ed è stato pubblicato nel 1998 come RFC 2326
La porta di comunicazione standard è la 554. Il protocollo prevede l'esistenza di un session identifier che viene utilizzato per tener traccia delle sessioni quando è necessario. In questo modo non è richiesta una connessione permanente di tipo TCP.
Qui sotto abbiamo le richieste RTSP di base. Alcune come ad esempio Options sono condivise con lo standard HTTP.
C->S: DESCRIBE rtsp://example.com/media.mp4 RTSP/1.0
CSeq: 1
S->C: RTSP/1.0 200 OK
CSeq: 1
Content-Base: rtsp://example.com/media.mp4
Content-Type: application/sdp
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: 2
Transport: RTP/AVP;unicast;client_port=8000-8001
S->C: RTSP/1.0 200 OK
CSeq: 2
Transport: RTP/AVP;unicast;client_port=8000-8001;server_port=9000-9001
Session: 12345678
C->S: PLAY rtsp://example.com/media.mp4 RTSP/1.0
CSeq: 4
Range: npt=5-20
Session: 12345678
S->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: 12345678
S->C: RTSP/1.0 200 OK
CSeq: 5
Session: 12345678
C->S: TEARDOWN rtsp://example.com/media.mp4 RTSP/1.0
CSeq: 6
Session: 12345678
S->C: RTSP/1.0 200 OK
CSeq: 6