Protocol de flux de dades en temps real

De Viquipèdia
Dreceres ràpides: navegació, cerca

El protocol de flux de dades en temps real (de l'anglès Real Time Streaming Protocol) estableix i controla un o molts fluxes sincrontizats de dades, ja siguin d'audio o de video. El RTSP actua com un comandament a distància mitjançant la xarxa per a servidors multimedia.

Descripció[modifica | modifica el codi]

El 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 al client sobre els nous continguts disponibles.

Fluxos del protocol

Propietats[modifica | modifica el codi]

RTSP 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ó.
  • Adequat per a aplicacions professionals: RTSP suporta resolució a nivell de frame mitjançant marques temporals SMPTE per permetre edició digital.

Peticions RTSP[modifica | modifica el codi]

Les peticions RTSP estan basades en peticions HTTP i generalment són enviades del client al servidor, les mes tipiques són;

DESCRIBE[modifica | modifica el codi]

Aquest mètode obté una descripció d'una presentació o del objecte multimèdia apuntat per una 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 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[modifica | modifica el codi]

Especifica com serà transportat el flux de dades, la petició conté la 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 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[modifica | modifica el codi]

Una 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 RTSP/1.0
Session: 12345678


PAUSE[modifica | modifica el codi]

Atura 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 RTSP/1.0
Session: 12345678

Servidor→Client:

RTSP/1.0 200 OK

TEARDOWN[modifica | modifica el codi]

Atura l'entrega de dades per la URL indicada alliberant els recursos associats.

Exemple:

Client→Servidor:

TEARDOWN rtsp://example.com/fizzle/foo RTSP/1.0
Session: 12345678

Servidor→Client:

RTSP/1.0 200 OK


Sessió RTSP[modifica | modifica el codi]

  • El client accedeix a la 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 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.

Control de connexió RTSP mitjançant TCP

Exemple[modifica | modifica el codi]

A 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 una URL RTSP del contenidor d'arxius.

C→M: DESCRIBE rtsp://foo/twister 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
t=0 0
m=audio 0 RTP/AVP 0
a=control:rtsp://foo/twister/audio
m=video 0 RTP/AVP 26
a=control:rtsp://foo/twister/video
C→M: SETUP rtsp://foo/twister/audio 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 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 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;
seq=9810092;rtptime=3450012
C→M: PAUSE rtsp://foo/twister/video 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 RTSP/1.0
CSeq: 6
Session: 12345678
M→C: RTSP/1.0 200 OK
CSeq: 6
Session: 12345678
C→M: SETUP rtsp://foo/twister RTSP/1.0
CSeq: 7
Transport: RTP/AVP;unicast;client_port=10000
M→C: RTSP/1.0 459 Aggregate operation not allowed
CSeq: 7


Enllaços externs[modifica | modifica el codi]