Le llevará a comprender RTMP
El protocolo RTMP es la abreviatura de Real Time Message Protocol (RTMP). Es un protocolo de capa de aplicación propuesto por Adobe para resolver el problema de multiplexación y empaquetado de flujos de datos multimedia. Con el desarrollo de la tecnología de realidad virtual, campos como la transmisión de video se han vuelto gradualmente más activos y los desarrolladores relevantes también han vuelto a enfatizar que RTMP es un protocolo ampliamente utilizado en la industria. El autor ha estado trabajando en esta área recientemente y ahora he registrado mi comprensión de RTMP. La mayor parte del contenido está traducido de documentos RTMP en inglés y reorganizado según mi propia comprensión. Espero que pueda ayudar a quienes quieran comprender RTMP. El acuerdo es útil para los demás y también es una referencia para mí en el futuro.
El protocolo RTMP es un protocolo de capa de aplicación que se basa en el protocolo de capa de transporte confiable subyacente (generalmente TCP) para garantizar la confiabilidad de la transmisión de información. El establecimiento del enlace se completa sobre la base del protocolo de la capa de transporte. El protocolo RTMP también debe establecer el cliente y el servidor sobre la base del enlace de la capa de transporte a través de un "apretón de manos". El enlace de conexión RTMP transmitirá algo de control. Enlace de conexión, como SetChunkSize, SetACKWindowSize, SetACKWindowSize, SetACKWindowSize, SetACKWindowSize, SetACKWindowSize, etc. El comando CreateStream crea un enlace Stream para transmitir datos de audio/vídeo específicos y comandos para controlar la transmisión de dicha información. En la transmisión real, para lograr mejor la multiplexación, la paquetización y la equidad de la información, el remitente dividirá la información en bloques de información con ID de información. Cada bloque de información puede ser una información separada o puede ser parte del mensaje. dividirá el mensaje en bloques de información según la longitud de los datos contenidos en el bloque de información, la identificación de la información y la longitud de la información.
Para establecer un enlace de conexión RTMP válido, primero se requiere un "apretón de enlace": el cliente envía tres fragmentos C0, C1, C2 (en orden) al servidor, y el servidor envía tres fragmentos S0 al cliente, S1, S2 (en orden). El protocolo RTMP en sí no estipula el orden de transmisión específico de estos seis mensajes, pero los implementadores del protocolo RTMP deben garantizar estos puntos:
En teoría, siempre que se cumplan las condiciones anteriores, no importa cómo organizar el orden de los seis mensajes, es posible, pero en aplicaciones reales, para garantizar la función de autenticación de protocolo de enlace, pero en aplicaciones reales, para minimizar la cantidad de comunicaciones basadas en la función de autenticación de protocolo de enlace, la secuencia de envío general es como esto, que puede ser capturado por Wireshark a través del flujo de inserción ffmpeg. Paquete de datos para verificar:
|cliente|Servidor |
|-- -CC1 -CC1-- -->|
|< --SS1+S2-- |
|--C2- --->|