Protocol de flux de dades en temps real
El protocol de flux de dades en temps real o RTSP (de l'anglès Real Time Streaming Protocol) estableix i controla un o diversos fluxos de dades sincronitzats, ja siguin d'àudio o de vídeo. El RTSP actua com un comandament a distància mitjançant la xarxa per a servidors multimèdia.
Descripció
modificaEl RTSP és un protocol no orientat a connexió, en lloc d'això el servidor manté una sessió associada a un identificador, en la majoria dels casos RTSP fa servir TCP per dades de control del reproductor i UDP per les dades d'àudio i vídeo encara que també pot fer servir TCP en cas que sigui necessari. En el transcurs d'una sessió RTSP, un client pot obrir i tancar diverses connexions de transport cap al servidor per tal de satisfer les necessitats del protocol.
De forma intencionada el protocol és similar en sintaxi i operació al HTTP de forma que els mecanismes d'expansió afegits al HTTP poden en molts casos afegir-se al RTSP, en qualsevol cas RTSP difereix en un nombre significatiu d'aspectes del HTTP:
- RTSP introdueix nous mètodes i té un identificador de protocol diferent.
- Un servidor RTSP necessita mantenir l'estat de la connexió al contrari del HTTP
- Tant el servidor com el client poden llençar peticions.
- Les dades són transportades per un protocol diferent
El protocol suporta les següents operacions:
Recuperar continguts multimèdia del servidor: El client pot sol·licitar la descripció d'una presentació per HTTP o qualsevol altre mètode. Si la presentació és multicast, la descripció conté els ports i les adreces que seran fets servir. Si la presentació és unicast el client és el que proporciona el destí per motius de seguretat.
Invitació d'un servidor multimèdia a una conferència: Un servidor pot ser invitat a unir-se a una conferència existent en lloc de reproduir la presentació o gravar tot o una part del contingut. Aquest mode és útil per aplicacions d'ensenyament distribuït on diferents parts de la conferència van prenent part en la discussió.
Addició multimèdia a una presentació existent: Particularment per presentacions en viu, útil si el servidor pot avisar el client sobre els nous continguts disponibles.
Propietats
modificaRTSP té les següents propietats:
- Extensible: nous métodes i paràmetres poden ser fàcilment afegits al RTSP
- Segur: RTSP reutilitza mecanismes de seguretat web ja sigui als protocols de transport (TLS) o dins del mateix protocol. Totes les formes d'autentificació HTTP ja sigui bàsica o basada en resum són directament aplicables.
- Independent del protocol de transport: RTSP pot fer servir indistintament protocols de datagrama no fiables (UDP) o datagrames fiables (RDP, no gaire estès) o un protocol fiable orientat a connexió com el TCP.
- Capacitat multi-servidor: Cada fluxe multimedia dins d'una presentació pot residir en servidors diferents, el client automàticament estableix diverses sessions concurrents de control amb els diferents servidors, la sincronització la duu a terme el nivell de transport.
- Control de dispositius de gravació: El protocol pot controlar dispositius de gravació i reproducció.
Peticions RTSP
modificaLes peticions RTSP estan basades en peticions HTTP i generalment són enviades del client al servidor, les més tipiques són:
DESCRIBE
modificaAquest mètode obté una descripció d'una presentació o de l'objecte multimèdia apuntat per un URL RTSP situat en un servidor. El servidor respon a aquesta petició amb una descripció del recurs sol·licitat, entre altres dades la descripció conté una llista dels fluxos multimèdia que seran necessaris per la reproducció. Aquesta sol·licitud/resposta constitueix la fase d'inicialització del RTSP.
Exemple:
Client→Servidor:
DESCRIBE rtsp://unservidor.com/uncontingut[Enllaç no actiu] RTSP/1.0
Accept: application/sdp, application/rtsl, application/ mheg
Servidor→Client:
RTSP/1.0 200 OK Content-Type: application/sdp Content-Length: 376 i=Descripció del contingut¡ m=audio 3456 RTP/AVP 0 m=video 2232 RTP/AVP 31
SETUP
modificaEspecifica com serà transportat el flux de dades, la petició conté l'URL del flux multimèdia i una especificació de transport, aquesta especificació típicament inclou un port per rebre les dades (àudio o vídeo), i un altre per les dades RTCP (meta-informació).
El servidor respon confirmant els paràmetres escollits i omple les parts restants, com els ports escollits pel servidor. Cada flux de dades ha de ser configurat amb SETUP abans d'enviar una petició de PLAY.
Exemple:
Client→Servidor:
SETUP rtsp://example.com/foo/bar/baz.rm[Enllaç no actiu] RTSP/1.0
Transport: RTP/AVP;unicast;client_port=4588-4589
Servidor→Client:
RTSP/1.0 200 OK Session: 47112344 Transport: RTP/AVP;unicast; client_port=4588-4589;server_port=6256-6257
PLAY
modificaUna petició de PLAY provocarà que el servidor comenci a enviar dades dels fluxes especificats fent servir els ports configurats amb SETUP.
Exemple:
Client→Servidor:
PLAY rtsp://unservidor.com/audio[Enllaç no actiu] RTSP/1.0
Session: 12345678
PAUSE
modificaAtura temporalment un o tots els fluxos, de manera que puguin ser tornats a recuperar amb un PLAY posteriorment.
Exemple:
Client→Servidor:
PAUSE rtsp://unservidor.com/video1[Enllaç no actiu] RTSP/1.0
Session: 12345678
Servidor→Client:
RTSP/1.0 200 OK
TEARDOWN
modificaAtura l'entrega de dades per l'URL indicat alliberant els recursos associats.
Exemple:
Client→Servidor:
TEARDOWN rtsp://example.com/fizzle/foo[Enllaç no actiu] RTSP/1.0
Session: 12345678
Servidor→Client:
RTSP/1.0 200 OK
Sessió RTSP
modifica- El client accedeix a l'URL RTSP per tal d'obtenir el nom del servidor i el port.
- Si el nom del servidor no està en format IP, el client fa una consulta DNS per obtenir l'adreça corresponent.
- El client inicia una connexió TCP cap al servidor.
- Quan la connexió ha estat correctament establerta, el client envia al servidor una petició OPTIONS. EL servidor retorna informació que pot incloure la versió de RTSP, la data, el número de sessió, el nom del servidor i els mètodes suportats.
- El client envia una petició DESCRIBE per obtenir una descripció de la presentació. El servidor respon amb tots els valors d'inicialització necessaris per a la presentació.
- El client envia SETUP per cada flux de dades que es requereix reproduir. El SETUP especifica els protocols acceptats pel transport de les dades.
- El client inicialitza els programes adequats requerits per reproduir la presentació.
- El client envia una petició PLAY que informa al servidor que ara és el moment de començar a enviar dades.
- Durant la sessió, el client periòdicament fa ping al servidor fent servir peticions SET_PARAMETER. Encara que la resposta sigui errònia el client la ignora tot informant al client que el servidor encara és actiu.
- Quan la presentació termina o l'usuari la para, el client envia un SET_PARAMETER que conté les estadístiques de la sessió.
- El client envia TEARDOWN per donar per terminada la connexió amb el servidor.
Exemple
modificaA continuació un exemple de la utilització d'una sessió RTSP simple que controla múltiples streams.
Es tracta d'un client C que sol·licita una presentació a un servidor M. El vídeo s'emmagatzema en un contenidor d'arxius. El client ha obtingut un URL RTSP del contenidor d'arxius.
C→M: DESCRIBE rtsp://foo/twister[Enllaç no actiu] RTSP/1.0
CSeq: 1
M→C: RTSP/1.0 200 OK CSeq: 1 Content-Type: application/sdp Content-Length: 164 v=0 o=- 2890844256 2890842807 IN IP4 172.16.2.93 s=RTSP Session i=An Example of RTSP Session Usage a=control:rtsp://foo/twister[Enllaç no actiu] t=0 0 m=audio 0 RTP/AVP 0 a=control:rtsp://foo/twister/audio[Enllaç no actiu] m=video 0 RTP/AVP 26 a=control:rtsp://foo/twister/video[Enllaç no actiu]
C→M: SETUP rtsp://foo/twister/audio[Enllaç no actiu] RTSP/1.0
CSeq: 2
Transport: RTP/AVP;unicast;client_port=8000-8001
M→C: RTSP/1.0 200 OK CSeq: 2 Transport: RTP/AVP;unicast;client_port=8000-8001; server_port=9000-9001 Session: 12345678
C→M: SETUP rtsp://foo/twister/video[Enllaç no actiu] RTSP/1.0
CSeq: 3
Transport: RTP/AVP;unicast;client_port=8002-8003
Session: 12345678
M→C: RTSP/1.0 200 OK CSeq: 3 Transport: RTP/AVP;unicast;client_port=8002-8003; server_port=9004-9005 Session: 12345678
C→M: PLAY rtsp://foo/twister[Enllaç no actiu] RTSP/1.0
CSeq: 4
Range: npt=0-
Session: 12345678
M→C: RTSP/1.0 200 OK
CSeq: 4
Session: 12345678
RTP-Info: url=rtsp://foo/twister/video[Enllaç no actiu];
seq=9810092;rtptime=3450012
C→M: PAUSE rtsp://foo/twister/video[Enllaç no actiu] RTSP/1.0
CSeq: 5
Session: 12345678
M→C: RTSP/1.0 460 Only aggregate operation allowed CSeq: 5
C→M: PAUSE rtsp://foo/twister[Enllaç no actiu] RTSP/1.0
CSeq: 6
Session: 12345678
M→C: RTSP/1.0 200 OK CSeq: 6 Session: 12345678
C→M: SETUP rtsp://foo/twister[Enllaç no actiu] RTSP/1.0
CSeq: 7
Transport: RTP/AVP;unicast;client_port=10000
M→C: RTSP/1.0 459 Aggregate operation not allowed CSeq: 7