Articulo de referencia

Protocolo de transmisión en tiempo real

El Protocolo de Transmisión en Tiempo Real ( RTSP ) es un protocolo de red de nivel de aplicación diseñado para multiplexar y empaquetar flujos de transporte multimedia (como me...

El Protocolo de Transmisión en Tiempo Real ( RTSP ) es un protocolo de red de nivel de aplicación diseñado para multiplexar y empaquetar flujos de transporte multimedia (como medios interactivos , vídeo y audio ) sobre un protocolo de transporte adecuado .

RTSP se utiliza en sistemas de entretenimiento y comunicaciones para controlar servidores de transmisión de contenido multimedia .

El protocolo se utiliza para establecer y controlar sesiones multimedia entre puntos finales.

Los clientes de los servidores multimedia emiten comandos como reproducir , grabar y pausar para facilitar el control en tiempo real de la transmisión de contenido multimedia desde el servidor a un cliente ( vídeo bajo demanda ) o desde un cliente al servidor ( grabación de voz ).

Historia

RTSP fue desarrollado por RealNetworks , Netscape y la Universidad de Columbia . [ 1 ] [ 2 ] El primer borrador del protocolo fue presentado a la IETF en octubre de 1996 por Netscape y Progressive Networks , después de lo cual Henning Schulzrinne de la Universidad de Columbia presentó "RTSP՚" ("RTSP prime") en diciembre de 1996. [ 3 ] [ 4 ] Los dos borradores fueron fusionados para su estandarización por el Grupo de Trabajo de Control de Sesiones Multimedia Multipartitas (MMUSIC WG) del Grupo de Trabajo de Ingeniería de Internet (IETF), y el grupo de trabajo publicó borradores adicionales. [ 5 ] [ 6 ] RTSP fue publicado como RFC 2326 en 1998. [ 7 ]

RTSP 2.0 se publicó como RFC 7826 en 2016 como reemplazo de RTSP 1.0. La versión 2.0 se basa en la versión 1.0, pero no es compatible con versiones anteriores (excepto en el mecanismo básico de negociación de versiones). [ 8 ]

RTP

La transmisión de datos en tiempo real no es una tarea de RTSP. La mayoría de los servidores RTSP utilizan el Protocolo de Transporte en Tiempo Real (RTP) junto con el Protocolo de Control en Tiempo Real (RTCP) para la entrega de flujos multimedia. Sin embargo, algunos proveedores implementan protocolos de transporte propietarios. El software de servidor RTSP de RealNetworks , por ejemplo, también utilizaba el protocolo propietario Real Data Transport (RDT) de RealNetworks .

Directivas de protocolo

Aunque similar en algunos aspectos a HTTP , RTSP define secuencias de control útiles para la reproducción multimedia. Mientras que HTTP no tiene estado , RTSP sí lo tiene; se utiliza un identificador para rastrear las sesiones concurrentes cuando sea necesario. Al igual que HTTP, RTSP utiliza TCP para mantener una conexión de extremo a extremo. Si bien la mayoría de los mensajes de control RTSP se envían del cliente al servidor, algunos comandos viajan en sentido contrario (es decir, del servidor al cliente).

A continuación se presentan las solicitudes RTSP básicas. También están disponibles algunas solicitudes HTTP típicas , como la solicitud OPTIONS. El número de puerto de la capa de transporte predeterminado es 554 [ 7 ] tanto para TCP como para UDP , pero este último rara vez se utiliza para solicitudes de control.

OPCIONES

Una solicitud OPTIONS devuelve los tipos de solicitud que el servidor aceptará.
C->S: OPCIONES rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 1 Requerido: juego implícito Requiere proxy: mensajes comprimidos con gzip S->C: RTSP/1.0 200 OK CSeq: 1 Público: DESCRIBIR, CONFIGURAR, DESMONTAR, REPRODUCIR, PAUSAR 

DESCRIBIR

Una solicitud DESCRIBE incluye una rtsp://URL RTSP y el tipo de datos de respuesta que se pueden procesar. Esta respuesta incluye la descripción de la presentación, generalmente en formato SDP ( Protocolo de Descripción de Sesión ). Entre otras cosas, la descripción de la presentación enumera las secuencias multimedia controladas con la URL agregada. Normalmente, hay una secuencia multimedia para audio y otra para vídeo. Las URL de las secuencias multimedia se obtienen directamente de los campos de control SDP o añadiendo el campo de control SDP a la URL agregada.
C->S: DESCRIBE rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 2 S->C: RTSP/1.0 200 OK CSeq: 2 Content-Base: rtsp://example.com/media.mp4 Tipo de contenido: aplicación/sdp Longitud del contenido: 460 m=video 0 RTP/AVP 96 a=control:streamid=0 a=rango:npt=0-7.741000 a=longitud:npt=7.741000 a=rtpmap:96 MP4V-ES/5544 a=mimetype:string;"video/MP4V-ES" a=Tasa de bits promedio:entero;304018 a=StreamName:string;"pista de vídeo sugerida" m=audio 0 RTP/AVP 97 a=control:streamid=1 a=rango:npt=0-7.712000 a=longitud:npt=7.712000 a=rtpmap:97 mpeg4-generic/32000/2 a=mimetype:string;"audio/mpeg4-generic" a=Tasa de bits promedio:entero;65790 a=StreamName:string;"pista de audio sugerida" 

CONFIGURACIÓN

Una solicitud SETUP especifica cómo se transportará una única transmisión multimedia. Esto debe hacerse antes de enviar una solicitud PLAY. La solicitud contiene la URL de la transmisión multimedia y un especificador de transporte. Este especificador suele incluir un puerto local para recibir datos RTP (audio o vídeo) y otro para datos RTCP (metadatos). La respuesta del servidor generalmente confirma los parámetros elegidos y completa la información faltante, como los puertos seleccionados por el servidor. Cada transmisión multimedia debe configurarse mediante SETUP antes de poder enviar una solicitud de reproducción agregada.
C->S: CONFIGURACIÓN rtsp://example.com/media.mp4/streamid=0 RTSP/1.0 CSeq: 3 Transporte: RTP/AVP;unicast;puerto_cliente=8000-8001 S->C: RTSP/1.0 200 OK CSeq: 3 Transporte: RTP/AVP;unicast;puerto_cliente=8000-8001;puerto_servidor=9000-9001;ssrc=1234ABCD Sesión: 12345678 C->S: CONFIGURACIÓN rtsp://example.com/media.mp4/streamid=1 RTSP/1.0 CSeq: 3 Transporte: RTP/AVP;unicast;puerto_cliente=8002-8003 Sesión: 12345678 S->C: RTSP/1.0 200 OK CSeq: 3 Transporte: RTP/AVP;unicast;puerto_cliente=8002-8003;puerto_servidor=9002-9003;ssrc=1234ABCD Sesión: 12345678 

JUGAR

Una solicitud de reproducción activará la reproducción de una o todas las transmisiones multimedia. Se pueden encadenar varias solicitudes de reproducción. La URL puede ser la URL global (para reproducir todas las transmisiones multimedia) o la URL de una sola transmisión (para reproducir solo esa transmisión). Se puede especificar un rango. Si no se especifica ningún rango, la transmisión se reproduce desde el principio hasta el final; si se pausa, se reanuda desde el punto en que se interrumpió.
C->S: REPRODUCIR rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 4 Rango: npt=5-20 Sesión: 12345678 S->C: RTSP/1.0 200 OK CSeq: 4 Sesión: 12345678 Información RTP: url=rtsp://example.com/media.mp4/streamid=0;seq=9810092;rtptime=3450012 

PAUSA

Una solicitud PAUSE detiene temporalmente una o todas las transmisiones multimedia, para reanudarlas posteriormente mediante una solicitud PLAY. La solicitud contiene una URL de transmisión o agregada. Un parámetro de rango en una solicitud PAUSE especifica cuándo se debe pausar. Si se omite el parámetro de rango, la pausa se produce de forma inmediata e indefinida.
C->S: PAUSA rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 5 Sesión: 12345678 S->C: RTSP/1.0 200 OK CSeq: 5 Sesión: 12345678 

REGISTRO

Este método inicia la grabación de un rango de datos multimedia según la descripción de la presentación. La marca de tiempo refleja la hora de inicio y finalización (en UTC). Si no se especifica un rango de tiempo, se utilizará la hora de inicio o finalización indicada en la descripción de la presentación. Si la sesión ya ha comenzado, la grabación se inicia inmediatamente. El servidor decide si almacenar los datos grabados bajo la URI de la solicitud u otra URI. Si el servidor no utiliza la URI de la solicitud, la respuesta debe ser 201 y contener una entidad que describa el estado de la solicitud y haga referencia al nuevo recurso, además de incluir un encabezado Location.
C->S: REGISTRO rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 6 Sesión: 12345678 S->C: RTSP/1.0 200 OK CSeq: 6 Sesión: 12345678 

ANUNCIAR

El método ANUNCIAR cumple dos propósitos:

Cuando se envía del cliente al servidor, ANNOUNCE publica la descripción de una presentación u objeto multimedia identificado por la URL de la solicitud en el servidor. Cuando se envía del servidor al cliente, ANNOUNCE actualiza la descripción de la sesión en tiempo real. Si se agrega una nueva transmisión multimedia a una presentación (por ejemplo, durante una presentación en vivo), se debe enviar nuevamente la descripción completa de la presentación, en lugar de solo los componentes adicionales, para que estos últimos puedan eliminarse.
 C->S: ANUNCIO rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 7 Fecha: 23 de enero de 1997 15:35:06 GMT Sesión: 12345678 Tipo de contenido: aplicación/sdp Longitud del contenido: 332 v=0 o=mhandley 2890844526 2890845468 EN IP4 126.16.64.4 Seminario SDP i=Un seminario sobre el protocolo de descripción de sesiones tu = http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps e=mjh@isi.edu (Mark Handley) c=IN IP4 224.2.17.12/127 t=2873397496 2873404696 a=recvonly m=audio 3456 RTP/AVP 0 m=video 2232 RTP/AVP 31 S->C: RTSP/1.0 200 OK CSeq: 7 

DEMOLER

Una solicitud TEARDOWN se utiliza para finalizar la sesión. Detiene todas las transmisiones multimedia y libera todos los datos relacionados con la sesión en el servidor.
C->S: DESMONTAJE rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 8 Sesión: 12345678 S->C: RTSP/1.0 200 OK CSeq: 8 

OBTENER_PARÁMETRO

La solicitud GET_PARAMETER recupera el valor de un parámetro de una presentación o flujo especificado en la URI. El contenido de la respuesta queda a criterio de la implementación. GET_PARAMETER sin cuerpo de entidad puede utilizarse para comprobar la disponibilidad del cliente o del servidor ("ping").
S->C: GET_PARAMETER rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 9 Tipo de contenido: texto/parámetros Sesión: 12345678 Longitud del contenido: 15 paquetes_recibidos estar nervioso C->S: RTSP/1.0 200 OK CSeq: 9 Longitud del contenido: 46 Tipo de contenido: texto/parámetros paquetes_recibidos: 10 fluctuación: 0,3838 

ESTABLECER_PARÁMETRO

Este método solicita establecer el valor de un parámetro para una presentación o flujo especificado por la URI.
C->S: SET_PARAMETER rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 10 Longitud del contenido: 20 Tipo de contenido: texto/parámetros barparam: barstuff S->C: RTSP/1.0 451 Parámetro no válido CSeq: 10 Longitud del contenido: 10 Tipo de contenido: texto/parámetros barparam 

REDIRECCIÓN

Una solicitud REDIRECT informa al cliente que debe conectarse a otra ubicación de servidor. Contiene el encabezado obligatorio Location, que indica que el cliente debe realizar solicitudes para esa URL. Puede contener el parámetro Range, que indica cuándo se aplica la redirección. Si el cliente desea continuar enviando o recibiendo contenido multimedia para esta URI, DEBE realizar una solicitud TEARDOWN para la sesión actual y una SETUP para la nueva sesión en el host designado.
S->C: REDIRECCIÓN rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 11 Ubicación: rtsp://bigserver.com:8001 Rango: reloj=19960213T143205Z- 

Datos binarios incrustados (entrelazados)

Ciertos diseños de cortafuegos u otras circunstancias pueden obligar a un servidor a intercalar métodos RTSP y datos de transmisión. Esta intercalación generalmente debe evitarse a menos que sea necesaria, ya que complica el funcionamiento del cliente y del servidor e impone una sobrecarga adicional. Los datos binarios intercalados solo deben usarse si RTSP se transmite a través de TCP.

Los datos de transmisión, como los paquetes RTP, se encapsulan mediante un signo de dólar ASCII (24 en hexadecimal), seguido de un identificador de canal de un byte y, a continuación, la longitud de los datos binarios encapsulados como un entero binario de dos bytes en el orden de bytes de la red. Los datos de transmisión se presentan inmediatamente después, sin CRLF, pero incluyendo las cabeceras del protocolo de capa superior. Cada bloque $ contiene exactamente una unidad de datos del protocolo de capa superior, por ejemplo, un paquete RTP.

C->S: CONFIGURACIÓN rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 3 Transporte: RTP/AVP/TCP; intercalado=0-1 S->C: RTSP/1.0 200 OK CSeq: 3 Fecha: 05 de junio de 1997 18:57:18 GMT Transporte: RTP/AVP/TCP; intercalado=0-1 Sesión: 12345678 C->S: REPRODUCIR rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 4 Sesión: 12345678 S->C: RTSP/1.0 200 OK CSeq: 4 Sesión: 12345678 Fecha: 05 de junio de 1997 18:59:15 GMT Información RTP: url=rtsp://example.com/media.mp4;seq=232433;rtptime=972948234 S->C: $\000{2 bytes de longitud}{"longitud" bytes de datos, con encabezado RTP} S->C: $\000{2 bytes de longitud}{"longitud" bytes de datos, con encabezado RTP} S->C: $\001{2 bytes de longitud}{"longitud" bytes del paquete RTCP} 

RTSP sobre HTTP

El protocolo RTSP sobre HTTP fue definido por Apple en 1999. [ 9 ] Intercala los datos de audio y vídeo RTP en la conexión de comandos RTSP (tal como se define en RFC2326) y, a continuación, envía dicha conexión mediante un par de conexiones HTTP. Una de ellas es una conexión GET de larga duración y la otra es una conexión POST de larga duración.

Este método también se utiliza en el estándar ONVIF para cámaras IP y se puede combinar con HTTPS para obtener vídeo y audio seguros y cifrados.

Cifrado RTSP y RTSPS

Existen varios métodos diferentes para cifrar los mensajes de comandos RTSP y los datos de audio y vídeo RTP.

RTSP 2.0 (RFC7826) define varios métodos de cifrado e introduce una nueva rtsps://URL. Muchos de ellos se han incorporado a los clientes y servidores RTSP 1.0 (RFC2326).

  • URL RTSP (usando la rtsps://URL) : este método utiliza un socket TLS (puerto predeterminado 322) para establecer una conexión cifrada entre el cliente RTSP y el servidor RTSP. El vídeo y el audio se pueden enviar de dos maneras:
    • Vídeo/Audio TCP : El vídeo y el audio RTP se envían intercalados con los comandos RTSP a través de la conexión TLS ya cifrada .
    • Vídeo/audio UDP y Multicast-UDP : el vídeo y el audio RTP se cifran mediante el protocolo RTP seguro (SRTP) y se envían en paralelo a la conexión TLS RTSPS .
  • RTSP sobre HTTPS : este método intercala los datos de vídeo y audio RTP en la conexión de comandos RTSP (según se define en RFC2326) y, a continuación, envía dicha conexión a través de un par de conexiones HTTPS cifradas. Utiliza el puerto 443 de forma predeterminada.

IANA ha reservado el rtsps://prefijo URL y el puerto 322 para RTSPS. [ 10 ] A partir de septiembre de 2024, RTSP sobre HTTPS se ha implementado en varias cámaras IP ONVIF y RTSPS (usando la rtsps://URL) se ha implementado en cámaras CCTV de Axis y Bosch, [ 11 ] FFmpeg , GStreamer , MediaMTX, [ 12 ] Ant Media Server [ 13 ] y SharpRTSP. [ 14 ]

Adaptación de la tasa

RTSP, que utiliza RTP y RTCP, permite la implementación de la adaptación de velocidad. [ 15 ]

Implementaciones

Servidor

Muchas cámaras de videovigilancia /seguridad, a menudo llamadas cámaras IP , también admiten la transmisión RTSP, especialmente aquellas con perfiles ONVIF G, S y T.

Cliente

Referencias

  1. InfoWorld Media Group, Inc. (2 de marzo de 1998). InfoWorld . InfoWorld Media Group, Inc. pág. 18. ISSN 0199-6649 .  
  2. Rafael Osso (1999). Manual de tecnologías de comunicación emergentes: La próxima década . CRC Press. pág. 42. ISBN  978-1-4200-4962-6.
  3. Rao, Anup; Lanphier, Rob. "Protocolo de transmisión en tiempo real (RTSP)" . Ietf Datatracker . Consultado el 23 de febrero de 2021 .
  4. Henning Schulzrinne (diciembre de 1996). "RTSP prime" . Universidad de Columbia .
  5. Schulzrinne, Henning ; Rao, Anup; Lanphier, Rob (1997-02-24). "Protocolo de transmisión en tiempo real (RTSP) (draft-ietf-mmusic-rtsp-01.txt)" . Ietf Datatracker . Recuperado el 23 de febrero de 2021 .
  6. Schulzrinne, Henning ; Rao, Anup; Lanphier, Rob (1998-01-15). "Protocolo de transmisión en tiempo real (RTSP) (draft-ietf-mmusic-rtsp-08.txt)" . Ietf Datatracker . Recuperado el 23 de febrero de 2021 .
  7. 1 2 H. Schulzrinne ; A. Rao; R. Lanphier (abril de 1998). Protocolo de transmisión en tiempo real (RTSP) . Grupo de trabajo de redes. doi : 10.17487/RFC2326 . RFC 2326 .Obsoleto. Obsoleto según RFC 7826 . 
  8. H. Schulzrinne ; A. Rao; R. Lanphier; M. Westerlund (diciembre de 2016). M. Stiemerling (ed.). Protocolo de transmisión en tiempo real versión 2.0 . Grupo de trabajo de ingeniería de Internet . doi : 10.17487/RFC7826 . ISSN 2070-1721 . RFC 7826 . Norma propuesta. Sustituye a RFC 2326 . 
  9. "Desarrollador - QuickTime - Cartas desde el témpano de hielo" . 1 de mayo de 2013. Archivado del original el 1 de mayo de 2013. Consultado el 22 de septiembre de 2024 .Túnelización de QuickTime RTSP y RTP sobre HTTP en Wayback Machine (archivado el 15/02/2024)
  10. "Registro de nombres de servicio y números de puerto de protocolo de transporte" .
  11. "Transmisión RTSP segura - SRTP/RTSPS" .
  12. MediaMTX
  13. Comunidad de servidores multimedia Ant
  14. "Ngraziano/SharpRTSP" . GitHub .
  15. Santos, Hugo; Cruz, Rui Santos; Nunes, Mário Serafim (2010), "Rate Adaptation Techniques for WebTV", User Centric Media , Apuntes de conferencias del Instituto de Ciencias de la Computación, Informática Social e Ingeniería de Telecomunicaciones, vol. 40, págs. 161–168 , doi : 10.1007/978-3-642-12630-7_19 , ISBN   978-3-642-12629-1
  16. ant-media/Ant-Media-Server , Ant Media, 12/12/2024 , consultado el 13/12/2024
  17. "¡YouTube Mobile, un fracaso! (Cómo hacer funcionar 3GP/RTSP en WM5)" . Chris Duke . 23 de junio de 2007. Consultado el 29 de mayo de 2021 .
  18. cURL — Cambios
  19. "Documentación de FFmpeg" . El proyecto FFmpeg. 11 de septiembre de 2012. Sección 20.19 . Consultado el 11 de septiembre de 2012 .
  • "Información y actualizaciones del protocolo de transmisión en tiempo real" . Archivado del original el 6 de marzo de 2007., un repositorio central de información sobre RTSP.
  • "Tunelización de RTSP y RTP a través de HTTP" . Archivado del original el 1 de mayo de 2013.Una solución estándar para ayudar a que RTSP funcione a través de cortafuegos y proxies web.
  • " Agregación de medios gestionada mediante RTSP y RTP ": Guía al desarrollador a través de la implementación de un RtspClient y un RtspServer que cumplen con los estándares.