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 propietario por Macromedia para la transmisión entre Flash Player y un servidor, Adobe (que adquirió Macromedia) ha lanzado una versión incompleta de la especificación del protocolo para uso público.

Si bien la motivación principal de 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 fragmentos predeterminados son 64 bytes para datos de audio y 128 bytes para datos de video y la mayoría de los otros tipos de datos. Los fragmentos de diferentes flujos se pueden intercalar y multiplexar a través de una sola 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 no suelen estar intercalados. En cambio, el entrelazado y la multiplexación se realiza a nivel de paquete, con paquetes RTMP a través de varios canales activos diferentes que se entrelazan de tal manera que se asegure que cada canal cumple 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 fragmentos.

El RTMP define varios canales virtuales en los que se pueden enviar y recibir paquetes, y que funcionan de forma independiente entre sí. Por ejemplo, hay un canal para manejar solicitudes y respuestas de 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 del tamaño de los fragmentos, etc.), etc. . Durante una sesión RTMP típica, varios canales pueden estar activos simultáneamente en cualquier momento. Cuando se codifican datos RTMP, se genera un encabezado de paquete. El encabezado del paquete especifica, entre otras cuestiones, el 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. Este encabezado es seguido por el contenido de carga útil real del paquete,que se fragmenta según el tamaño de fragmento acordado actualmente antes de enviarse a través de la conexión. El encabezado del paquete en sí 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 transmisiones 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 necesarios se realizan de forma asincrónica, utilizando un modelo de solicitud / respuesta de cliente / servidor único, 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 e intercambian a través de HTTP , y los mensajes del cliente (el reproductor multimedia, en este caso) se dirigen al puerto 80 (el predeterminado para HTTP) en el servidor.


Diagrama de paquetes RTMP
Diagrama de apretón de manos de RTMP