Real Time Streaming Protocol
RTSP - Real Time Streaming Protocol - è un protocollo di rete utilizzato in sistemi informatici di comunicazione e di 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 Video registratore, come play o pause, in modo da controllare in tempo reale la riproduzione dei file Audio/Video distribuiti dal server.
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 [1]
Direttive
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.
- OPTIONS
- Una richiesta di tipo OPTIONS ritorna il tipo di richieste che il server accetterà.
- DESCRIBE
- Una richiesta di tipo DESCRIBE serve al client per ottenere informazioni sulla risorsa desiderata. Deve includere un RTSP URL (rtsp://...) e il tipo di dati di risposta che possono essere gestiti. La porta di default per il protocollo RTSP è 554 sia che si utilizzi TCP che UDP per il trasporto. La risposta include il presentation description, di solito utilizzando il formato SDP (Session Description Protocol).
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"
- SETUP
- La richiesta di tipo SETUP specifica come un singolo flusso multimediale deve essere trasportato. Deve essere effettuata prima che una richiesta PLAY sia inviata. La richiesta contiene l'URL del flusso multimediale e i parametri di trasporto accettabili dal client per la trasmissione di dati. Il server creerà una nuova sessione RTSP e la risposta conterrà l'identificatore di sessione e i parametri di trasporto scelti dal server tra quelli proposti dal client.
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
- PLAY
- Una richiesta di PLAY genererà la riproduzione di uno o più flussi multimediali utilizzando il meccanismo specificato nella richiesta di SETUP precedente. Le richieste di Play possono essere impilate inviando così richieste PLAY multiple. L'URL può essere di tipo aggregate (per riprodurre tutti i flussi multimediali disponibili), o di tipo singolo (per riprodurre solo uno specifico flusso). Può essere specificato un range di riproduzione. Se non viene specificato nessun range, lo stream viene riprodotto dall'inizio alla fine, o, nel caso in cui fosse stato messo in pausa, viene riprodotto dal punto che aveva raggiunto.
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
- Nel nostro caso di esempio il range indica che il video deve essere riprodotto a partire dal secondo 5 e fino al secondo 20.
- PAUSE
- Una richiesta di PAUSE blocca temporaneamente uno o tutti i flussi in corso, così possono essere ripresi in seguito con una richiesta di PLAY. La richiesta contiene l'URL del flusso che deve essere messo in pausa.
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
- RECORD
- La richiesta RECORD può essere usata per inviare uno stream al server in modo che lo memorizzi.
- TEARDOWN
- La richiesta di TEARDOWN viene usata per terminare la sessione. Ferma tutti i media stream e libera tutti i dati relativi alla sessione sul server.
C->S: TEARDOWN rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 6 Session: 12345678 S->C: RTSP/1.0 200 OK CSeq: 6
Applicazioni Client
- GStreamer
- Media Player Classic
- MPlayer
- QuickTime
- RealPlayer
- Skype
- Spotify
- VLC media player
- Winamp
- Windows Media Player
- Xine
- MythTV via Freebox
- FFmpeg
Note
Altri progetti
- Wikimedia Commons contiene immagini o altri file su Real Time Streaming Protocol
Collegamenti esterni
- RTSP.org, sito di riferimento per informazioni sul protocollo.
- RFC 3550, RTP: A Transport Protocol for Real-Time Applications, H. Schulzrinne e altri, memorandum.
- UA Server RTSP Communication - Media Fragments Working Group Wiki, su w3.org.