Red de conocimiento informático - Problemas con los teléfonos móviles - Formato de datos de vídeo RTMP

Formato de datos de vídeo RTMP

El formato de transmisión de video RTMP es muy similar a FLV y, al consultar la documentación de formato de FLV, comprenderá cómo se deben unir los datos de video RTMP.

Los datos en RTMP constan del área de datos en el TAG del FLV.

En términos generales, el RTMPPacket ensamblado (estructura en RTMPDump) es:

NALU es NAL UNIT, nal unit.NAL significa Network Abstract Layer, que es la capa de abstracción de la red. Estructura de transmisión H.264 a través de la red. Una trama se codifica en uno o más fragmentos después de pasar por el codificador H.264, y el portador que transporta estos fragmentos es NALU.

? Obtenemos uno o más conjuntos de x264_nal_t ​​mediante codificación x264. Combinado con RTMP, debemos distinguir entre SPS, PPS, fotogramas clave y fotogramas normales:

Un vídeo h264 consta de N grupos de imágenes (GOP se refiere a grupos de imágenes y un GOP). es un grupo de marco continuo. Por investigaciones anteriores, sabemos que los fotogramas I se pueden decodificar de forma independiente, mientras que P y B deben hacer referencia a otros fotogramas.

Como subconjunto de fotogramas I, existe un fotograma I especial llamado fotograma IDR, que se utiliza para la actualización instantánea.

La figura anterior describe 2 grupos de GOP. La diferencia entre otros marcos I y marcos IDR es: actualizar. Cuando el decodificador decodifica el cuadro 5, puede hacer referencia al cuadro 3 a través del cuadro 4, y un cuadro I normal no provocará que se vacíen los datos de información de decodificación del decodificador. Los fotogramas IDR eliminan los datos SPS y PPS necesarios para la decodificación, por lo que el fotograma 8 no se puede decodificar con una referencia al fotograma 7.

Lo que se completa en los paquetes RTMP son datos H.264, no datos codificados directamente desde x264.

Un segmento contiene N imágenes de datos desnudos H.264, cada NAL segmentada por: 00 00 00 01 o 00 00 01.

El primer byte después del delimitador es el tipo de este NAL.

Esto es lo mismo que arriba.

Al agregar datos al RTMPPacket, es necesario eliminar los delimitadores.