Protocolo RTP de FFMPEG (protocolo de transporte en tiempo real) 01

Protocolo RTP de FFMPEG (protocolo de transporte en tiempo real) 01

1 Protocolo de control RTP y RTCP
1) Función de protocolo RTP:
un formato de paquete de datos estándar que se utiliza para la transmisión en tiempo real de datos de audio y video en la red, como transmisión de medios, videoconferencia, servicios de TV, etc.

2) Por qué es necesario utilizar RTP junto con RTCP:
RTP puede proporcionar servicios de transmisión de datos de baja latencia, pero no puede garantizar que los paquetes de datos sigan manteniendo el orden cuando llegan al cliente, por lo que se debe utilizar RTCP para completar el control de flujo y la supervisión de la congestión.

3) ¿Por qué RTP necesita un número de serie?
En el modelo OSI de siete capas, el protocolo RTP se ejecuta en la capa de transporte y otros protocolos subyacentes también pueden funcionar con RTP. El paquete de datos RTP se pasa por UDP a través del encabezado de encapsulación para formar un paquete UDP.
El propio RTP no contiene ningún mecanismo de garantía de calidad de servicio, por lo que RTP no puede mantener la misma secuencia de transmisión de los campos de datos recibidos, ni verifica si los servicios proporcionados por la red subyacente son fiables. RTP agrega un número de secuencia al paquete de datos, para que el receptor pueda reordenar el paquete de datos detectando el número de secuencia después de recibir el paquete de datos para lograr el orden.

4) ¿Por qué RTP necesita una marca de tiempo?
En la transmisión de datos de medios de transmisión por secuencias, las personas generalmente se enfrentan al mismo problema grave, es decir, el momento de la transmisión de datos al cliente es impredecible, pero la transmisión de medios de transmisión por secuencias debe garantizar que los datos se puedan entregar al destino en el momento adecuado. Reproducción correcta de datos.
Por lo tanto, para controlar la transmisión de flujos de datos en tiempo real, el protocolo RTP incluye estructuras como marcas de tiempo y números de serie. La marca de tiempo juega un papel importante en el proceso de transmisión de medios de transmisión y proporciona datos importantes para el cliente. Al enviar un mensaje RTP, el remitente coloca los datos utilizados para registrar el tiempo de muestreo en el paquete de datos, llamado sello de tiempo. Una vez que el paquete de datos llega al extremo receptor a través de la red, el extremo receptor necesita extraer el extremo de datos del paquete de datos , Según él para restaurar la secuencia de datos original. RTP es solo un protocolo de capa de transporte y no es responsable de la sincronización. RTP deja esta parte de la función a la capa de aplicación para que la complete, y ha logrado el propósito de simplificar el procesamiento de datos y mejorar la eficiencia operativa.
Las unidades de datos RTP son transportadas por paquetes UDP. Por supuesto, no se trata simplemente de encapsular una unidad de datos RTP en paquetes UDP, sino de dividir una trama de datos en varios paquetes UDP para su transmisión, que pertenecen a la misma trama de datos. Los paquetes UDP tendrán exactamente la misma marca de tiempo.

5) Por qué utilizar RTCP:
durante la sesión RTP, la función del protocolo RTCP es principalmente transmitir información de control de intercambio que supervisa la velocidad correcta de transmisión de datos. Durante la sesión, los participantes enviarán información estadística relevante a otros usuarios, como el número de paquetes de datos enviados y el número de paquetes de datos que no se pueden entregar, el envío de esta información se suele realizar en el mismo intervalo de tiempo. Se completa periódicamente durante la sesión.
El servidor analizará los datos y aumentará o disminuirá la velocidad de envío de los datos en consecuencia.También es posible cambiar a otros tipos de cargas útiles. Estos cambios se realizarán de forma dinámica. RTP trabaja en conjunto con RTCP para mejorar la eficiencia de la transmisión devolviendo información de control y reduciendo el consumo de ancho de banda, asegurando así el retraso mínimo en la transmisión de datos.

6) Las cuatro funciones principales de
RTCP : RTCP tiene principalmente cuatro funciones: control de congestión, monitoreo de red y diagnóstico de problemas en la red al retroalimentar la calidad de transmisión de los datos distribuidos; porque el SSRC (Identificación de la fuente de sincronización) no es estático, cuando Cuando se produce una congestión en la red o cuando cambia el programa del participante, el SSRC se actualizará. Necesitamos proporcionar indicadores de capa de transporte adicionales para la fuente RTP; ajustar la velocidad de envío del paquete RTCP para garantizar que el paquete de datos pueda llegar al extremo receptor sin problemas, por lo que debe basarse en Datos del participante para realizar ajustes; transferir información de control de sesión.

2 Formato de encabezado de archivo RTP El
mensaje RTP consta de dos partes: el encabezado y la carga útil El encabezado tiene un total de 12 bytes.

Inserte la descripción de la imagen aquí
Número de versión (V): 2 bits, utilizado para marcar la versión RTP utilizada.
Bit de relleno (P): 1 bit, si este bit está establecido, el final del paquete RTP contiene bytes de relleno adicionales.
Bit extendido (X): 1 bit, si este bit está establecido, hay un encabezado extendido después del encabezado fijo RTP.
Contador CSRC (CC): 4 bits, el número de CSRC después de SSRC.
Marcar bit (M): 1 bit, la interpretación de este bit está a cargo del archivo de configuración (Perfil).
PayloadType: 7 bits, que identifica el tipo de carga útil RTP. Los detalles estarán suscritos.
Número de serie (SN): 16 bits, cada vez que se envía un paquete RTP, el número de serie aumenta en 1. El extremo receptor puede detectar la pérdida de paquetes y reconstruir la secuencia de paquetes en consecuencia.
Marca de tiempo (marca de tiempo): 4byte, que registra el tiempo de muestreo del primer byte de datos en el paquete. Al comienzo de una sesión, la marca de tiempo se inicializa a un valor inicial. Incluso cuando no hay señal para enviar, el valor de la marca de tiempo seguirá aumentando con el tiempo. La frecuencia del reloj depende del formato de datos de carga y se describe en el perfil.

Identificador de fuente de sincronización (SSRC): 32 bits, la fuente de sincronización se refiere a la fuente del flujo de paquetes RTP. No puede haber dos valores SSRC idénticos en la misma sesión RTP. El identificador se selecciona aleatoriamente y RFC1889 recomienda el algoritmo aleatorio MD5.

Lista de fuentes de contribución (CSRC): 0-15 elementos, cada uno con 32 bits, que se utilizan para marcar la fuente de todos los paquetes RTP que contribuyen a un nuevo paquete generado por un mezclador RTP. El mezclador inserta estos identificadores SSRC contribuyentes en la tabla. Todos los identificadores SSRC se enumeran para que el extremo receptor pueda indicar correctamente la identidad de las dos partes en la conversación.

Los tipos de carga útil de 7 bits son los siguientes:
RFC3551:
Inserte la descripción de la imagen aquí

3 Código para implementar el formato de encabezado RTP


#pragma pack(1)//1位字节对齐

//变量:数字表示位与操作,结构体字节的大小按照平时的方法计算即可
typedef struct RTP_FIXED_HEADER{
    
    
	/* byte 0 */
	unsigned char csrc_len:4;       /* expect 0 */
	unsigned char extension:1;      /* expect 1 */
	unsigned char padding:1;        /* expect 0 */
	unsigned char version:2;        /* expect 2 */
	/* byte 1 */
	unsigned char payload:7;
	unsigned char marker:1;        /* expect 1 */
	/* bytes 2, 3 */
	unsigned short seq_no;            
	/* bytes 4-7 */
	unsigned  long timestamp;        
	/* bytes 8-11 */
	unsigned long ssrc;            /* stream number is used here. */
} RTP_FIXED_HEADER;

Supongo que te gusta

Origin blog.csdn.net/weixin_44517656/article/details/108228019
Recomendado
Clasificación