Real Time Streaming Protocol Akshat Sikarwar - Columbia University Traduzione e adattamento di Massimo De Santo, Università di Salerno
Sommario Introduzione Proprietà del protocollo messaggi di RTSP Messaggi importanti 2
Introduzione RTSP è l equivalente di un telecomando via rete per il controllo dei server multimediali RTSP stabilisce e controlla flussi (stream)multimediali di tipo continuo I dati in streaming sono trasportati fuori banda (à la FTP) è possibile effettuare interleaving 3
Propietà del Protocollo RTSP è text based e somiglia all HTTP E indipendente dal livello Trasporto (può utilizzare UDP o TCP) A differenza dell HTTP, i comandi possono essere inviati in maniera bidirezionale RTSP è un protocollo con stato. Il Server mantiene lo stato di una sessione. 4
Connessioni RTSP I messaggi RTSP possono essere inviati su: Una connessione persistente per diverse transazioni request-response Una connessione per transazione In maniera Connectionless Quindi: connessione trasporto!= session Il Server può inviare messaggi al client solo su connessioni persistenti 5
Affidabilità del RTSP Se l RTSP usa un trasporto affidabile invia un messaggio solo una volta. Se usa un trasporto inaffidabile, l RTSP ritrasmette il messaggio se non riceve un ACK Il Timeout è inizialmente posto a 500 ms Il timeout può essere ricalcolato in base alla stima dell RTT come il TCP Se viene effettuata una ritrasmissione CSeq non viene incrementato Si usano i Timestamp per risolvere eventuali ambiguità legate alle ritrasmissioni 6
RTSP URI rtsp://media.example.com:554/twister/audio rtsp identifica l uso di un protocollo affidabile rtspu u sta per inaffidabile Default port = 554 Presentation: twister Stream: audio 7
Messaggio RTSP Text based usa il set di caratteri Unicode (ISO 10646) codificato usando UTF-8 Una linea termina con CRLF Un messaggio può essere di request o response sia da parte del client che del server La struttura dei messaggi è simile a quella dell HTTP 8
Request Message Method URI Version CRLF Header1:Value CRLF Header2:Value CRLF CRLF Body La prima linea è la Request line URI è sempre assoluta (diversamente da HTTP) URI può essere * Esempio OPTIONS * RTSP/1.0 9
Response Message Version Status-Code Reason-Phrase CRLF Gli Status-Codes sono simili a quelli HTTP 1xx: Informational 2xx: Success 3xx: Redirection 4xx: Client error 5xx: Server error Reason-Phrase è la descrizione testuale 10
Esempio di attività RTSP HTTP GET Session description Web server PLAY Client RTP RTCP PAUSE Media server CLOSE http://www.cs.columbia.edu/~hgs/teaching/ais/slides/2003/rtsp.pdf 11
Metodi RTSP DESCRIBE ottieni una descrizione (low level) del media OPTIONS ottieni i metodi disponibili SETUP stabilisci il tipo di trasporto PLAY inizia riproduzione, riposiziona PAUSE ferma lo stream, mantieni lo stato RECORD Inizia registrazione ANNOUNCE Cambia la descrizione del media REDIRECT Redirigi il client a un nuovo server GET_PARAMETER Ottieni valore parametro della presentazione SET_PARAMETER Assegna valore parametro della presentazione TEARDOWN Rimuovi lo stato From http://www.cs.columbia.edu/~hgs/teaching/ais/slides/2003/rtsp.pdf 12
Method Summary Method Direction Object DESCRIBE C->S P, S ANNOUNCE C->S, S->C P, S GET_PARAMETER C->S, S->C P, S OPTIONS C->S, S->C P, S PAUSE C->S P, S PLAY C->S P, S RECORD C->S P, S REDIRECT S->C P, S SETUP C->S S SET_PARAMETER C->S, S->C P, S TEARDOWN C->S P, S From RFC 2326 13
Principali Messaggi Questi sono i messaggi che giocano un ruolo fondamentale: SETUP PLAY PAUSE TEARDOWN 14
SETUP Specifica il meccanismo di trasporto che verrà usato per lo stream L header Transport specifica i parametri di trasporto accettabili per il client Il Response message contiene i parametri di trasporto scelti dal server Il Server genera gli identificatori di sessione in risposta alla richiesta di SETUP Il Client può usare SETUP per cambiare i parametri di un media già in streaming 15
Messaggio di SETUP Client -> Server: SETUP rtsp://example.com/foo/bar/baz.rm RTSP/1.0 CSeq: 302 Transport: RTP/AVP;unicast;client_port=4588-4589 Server -> Client: RTSP/1.0 200 OK Cseq: 302 Date: 23 Jan 1997 15:35:06 GMT Session: 47112344 Transport: RTP/AVP;unicast; client_port=4588-4589;server_port=6256-6257 From RFC 2326 16
PLAY Indica al server di iniziare l invio del media con i parametri specificati nel SETUP Esegue dall inizio alla fine di un intervallo specificato Si mette in pausa alla fine se è stata indicato PAUSE Le Richieste possono essere in pipeline L header Range può avere dei parametri temporali Si può avere un PLAY senza header Range C è un header Scale che può essere usato per cambiare la velocità di riproduzione fast forward o rewind 17
PLAY Message Client -> Server: PLAY rtsp://audio.example.com/twister.en RTSP/1.0 CSeq: 833 Session: 12345678 Range: smpte=0:10:20-;time=19970123t153600z Server -> Client: RTSP/1.0 200 OK CSeq: 833 Date: 23 Jan 1997 15:35:06 GMT Range: smpte=0:10:22-;time=19970123t153600z From RFC 2326 18
PAUSE Causa l halt dello stream Si può metter ein pausa l intera presentazione o uno stream selezionato Il Server rimane impegnato Il Server termina la session allo scadere di un timeout (specificato in SETUP) Può contenere un header Range header con un valore che specifica quando andare in Pause Deve cadere in un range di PLAY 19
TEARDOWN Termina lo stream Libera il server Si può terminare uno stream o un intera presentazione Example Client -> Server: TEARDOWN rtsp://example.com/fizzle/foo RTSP/1.0 CSeq: 892 Session: 12345678 Server -> Client: RTSP/1.0 200 OK CSeq: 892 20
Riferimenti RFC 2326 Internet Media on Demand : The Real Time Streaming Protocol: http://www.cs.columbia.edu/~hgs/teaching/ ais/slides/2003/rtsp.pdf RTSP: FAQ http://www.cs.columbia.edu/~hgs/rtsp/ faq.html 21