# Real Time Streaming Protocol

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

## 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).

### 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.

### 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.
    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.

### 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.

## Applicazioni Client

* GStreamer
* Media Player Classic
* MPlayer
* QuickTime
* RealPlayer
* Skype
* Spotify
* VLC media player
* Winamp
* Windows Media Player
* Xine
* MythTV via Freebox
* FFmpeg