Protocolo de mensajería en tiempo real


El Protocolo de mensajería en tiempo real ( RTMP ) es un protocolo de comunicación para transmitir audio, video y datos a través de Internet. Desarrollado originalmente como un protocolo patentado por Macromedia para la transmisión entre Flash Player y un servidor, Adobe (que adquirió Macromedia) ha publicado una versión incompleta de la especificación del protocolo para uso público.

Si bien la motivación principal para RTMP era ser un protocolo para reproducir video Flash , también se usa en algunas otras aplicaciones, como Adobe LiveCycle Data Services ES .

RTMP es un protocolo basado en TCP que mantiene conexiones persistentes y permite la comunicación de baja latencia. Para entregar flujos sin problemas y transmitir la mayor cantidad de información posible, divide los flujos en fragmentos y su tamaño se negocia dinámicamente entre el cliente y el servidor. A veces, se mantiene sin cambios; los tamaños de fragmento predeterminados son 64 bytes para datos de audio y 128 bytes para datos de video y la mayoría de los demás tipos de datos. A continuación, los fragmentos de diferentes flujos pueden intercalarse y multiplexarse a través de una única conexión. Con fragmentos de datos más largos, el protocolo lleva solo un encabezado de un byte por fragmento, por lo que incurre en muy poca sobrecarga .. Sin embargo, en la práctica, los fragmentos individuales normalmente no se intercalan. En cambio, el intercalado y la multiplexación se realizan a nivel de paquete, con paquetes RTMP a través de varios canales activos diferentes que se intercalan de tal manera que se garantice que cada canal cumpla con su ancho de banda, latencia y otros requisitos de calidad de servicio. Los paquetes intercalados de esta manera se tratan como indivisibles y no se intercalan a nivel de fragmento.

El RTMP define varios canales virtuales en los que se pueden enviar y recibir paquetes, y que funcionan independientemente unos de otros. Por ejemplo, hay un canal para manejar solicitudes y respuestas RPC, un canal para datos de transmisión de video, un canal para datos de transmisión de audio, un canal para mensajes de control fuera de banda (negociación de tamaño de fragmento, etc.), etc. . Durante una sesión típica de RTMP, varios canales pueden estar activos simultáneamente en un momento dado. Cuando se codifican datos RTMP, se genera un encabezado de paquete. El encabezado del paquete especifica, entre otras cosas, la ID del canal en el que se enviará, una marca de tiempo de cuándo se generó (si es necesario) y el tamaño de la carga útil del paquete. A este encabezado le sigue el contenido real de la carga útil del paquete,que se fragmenta de acuerdo con el tamaño de fragmento acordado actualmente antes de enviarse a través de la conexión. El encabezado del paquete nunca se fragmenta y su tamaño no cuenta para los datos del primer fragmento del paquete. En otras palabras, solo la carga útil real del paquete (los datos de los medios) está sujeta a fragmentación.

En un nivel superior, el RTMP encapsula flujos multimedia de audio MP3 o AAC y video FLV1 , y puede realizar llamadas de procedimiento remoto (RPC) utilizando el formato de mensaje de acción . Todos los servicios de RPC requeridos se realizan de forma asincrónica, utilizando un único modelo de solicitud/respuesta de cliente/servidor, de modo que no se requiere comunicación en tiempo real. [ aclaración necesaria ] [2] [3]

En RTMP Tunneled (RTMPT), los datos RTMP se encapsulan y se intercambian a través de HTTP , y los mensajes del cliente (el reproductor multimedia, en este caso) se envían al puerto 80 (el predeterminado para HTTP) en el servidor.


Diagrama de paquetes RTMP
Diagrama de protocolo de enlace RTMP