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
- Ant Media Server : La versión Community [ 16 ] admite la extracción de fuentes RTSP/S y puede transmitir en directo mediante HLS o grabar en MP4. La versión Enterprise puede convertir RTSP a WebRTC con una latencia de extremo a extremo de aproximadamente 200-500 ms.
- Darwin Streaming Server es una versión de código abierto de QuickTime Streaming Server mantenida por Apple.
- Servidor y cliente RTSP basados en GStreamer .
- Helix DNA Server es el servidor de streaming de RealNetworks , que está disponible en versiones de código abierto y propietarias.
- Helix Universal Server es el servidor de transmisión comercial de RealNetworks para clientes de transmisión de medios RTSP, RTMP, iOS, Silverlight y HTTP.
- LIVE555 liveMedia / openRTSP son bibliotecas de servidor y cliente de código abierto en C++ utilizadas en clientes conocidos como VLC y mplayer .
- Motion es una aplicación de software gratuita para sistemas de videovigilancia (CCTV) para Linux.
- Nimble Streamer admite entrada RTSP pull y anuncio, con salida de reproducción intercalada TCP.
- OvenMediaEngine es un servidor de streaming de código abierto y baja latencia que admite entrada RTSP push.
- pvServer : Anteriormente llamado PacketVideo Streaming Server, este es el producto de servidor de streaming de Alcatel-Lucent.
- QuickTime Streaming Server es el servidor de streaming de código cerrado de Apple que viene incluido con Mac OS X Server.
- VideoLAN es un reproductor multimedia y servidor de streaming de código abierto.
- Windows Media Services es un servidor de transmisión de Microsoft que anteriormente se incluía con Windows Server y que utiliza RTSP modificado con extensiones de Windows Media .
- Wowza Streaming Engine es un servidor de transmisión multiformato para RTSP/RTP, RTMP , MPEG-TS , ICY, HTTP ( HTTP Live Streaming , HTTP Dynamic Streaming , Smooth Streaming , MPEG-DASH ) y WebRTC .
- YouTube implementó una interfaz web móvil en junio de 2007, que sirve videos a través de este protocolo. [ 17 ]
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
- Astra
- cURL (a partir de la versión 7.20.0—9 de febrero de 2010 [ 18 ] )
- FFmpeg [ 19 ]
- GStreamer
- JetAudio
- LIVE555 liveMedia / openRTSP : Bibliotecas de servidor y cliente de código abierto en C++ utilizadas en clientes conocidos como VLC y mplayer .
- Reproductor multimedia clásico
- Reproductor MP
- MythTV a través de Freebox
- QuickTime
- RealPlayer
- Skype
- Spotify
- Reproductor multimedia VLC
- Winamp
- Reproductor multimedia de Windows
- xine
- ZoneMinder
- Motion (software de vigilancia)
Referencias
- ↑ InfoWorld Media Group, Inc. (2 de marzo de 1998). InfoWorld . InfoWorld Media Group, Inc. pág. 18. ISSN 0199-6649 .
- ↑ 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.
- ↑ Rao, Anup; Lanphier, Rob. "Protocolo de transmisión en tiempo real (RTSP)" . Ietf Datatracker . Consultado el 23 de febrero de 2021 .
- ↑ Henning Schulzrinne (diciembre de 1996). "RTSP prime" . Universidad de Columbia .
- ↑ 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 .
- ↑ 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 .
- 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 .
- ↑ 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 .
- ↑ "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)
- ↑ "Registro de nombres de servicio y números de puerto de protocolo de transporte" .
- ↑ "Transmisión RTSP segura - SRTP/RTSPS" .
- ↑ MediaMTX
- ↑ Comunidad de servidores multimedia Ant
- ↑ "Ngraziano/SharpRTSP" . GitHub .
- ↑ 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
- ↑ ant-media/Ant-Media-Server , Ant Media, 12/12/2024 , consultado el 13/12/2024
- ↑ "¡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 .
- ↑ cURL — Cambios
- ↑ "Documentación de FFmpeg" . El proyecto FFmpeg. 11 de septiembre de 2012. Sección 20.19 . Consultado el 11 de septiembre de 2012 .
Enlaces externos
- "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.
- protocolos de la capa de aplicación
- Video