Introducción al audio y al vídeo: un breve análisis de la codificación H.264 (cuadro de corte de macrobloque)
(1) Información redundante de imagen: redundancia espacial, redundancia de tiempo
(2) Puntos clave de codificación de video: relación de compresión, complejidad del algoritmo, grado de reducción
( 3) Los dos componentes principales de H.264: capa de codificación de video VCL y capa de abstracción de red NAL Capa abstracta de red,
(1) macrobloque MB macrobloque
(2) segmento p>
(3) fotograma
(4) fotograma I, fotograma B, fotograma P
(5) Velocidad de fotogramas fps
(6) Pixel-gt; Macroblock-gt; Slice-gt; Frame-gt; Secuencia de código
Entendemos qué es macrokuai y macrokuai como video comprimido. La parte más pequeña debe organizarse y luego transferirse. entre redes.
H264 es más profundo: "El bloque macro es demasiado superficial
Si simplemente usa la macro para enviar datos, será complicado, como si antes no hubiera contenedores, las mercancías se transportarse siempre aleatoriamente apilados a bordo.
La carga (codificación) y descarga es muy dolorosa. Cuando aparecieron los contenedores todo cambió y la eficiencia de la transmisión aumentó considerablemente.
Los contenedores pueden entenderse como el estándar de codificación H264, que formula un formato para la transmisión mutua, formando una serie de flujos de código de manera organizada, estructurada y secuencial. Este flujo de código se puede transmitir a través de los datos del flujo de red InputStream o se puede encapsular en un archivo y guardar.
H264: H264/AVC es un método de codificación ampliamente utilizado. La función principal es transmitir
La estructura que conforma el flujo de código H264 contiene las siguientes partes, ordenadas de mayor a menor:
Capa NAL: (Capa de abstracción de red, datos de video capa de abstracción de red): su función es que, siempre que se transmita H264 en la red, cada paquete Ethernet durante el proceso de transmisión tiene 1500 bytes y las tramas H264 suelen tener más de 1500 bytes, por lo que es necesario descomprimir una trama para dividirla en múltiples. Los paquetes se transmiten y todo el desempaquetado o agrupación se procesa a través de la capa NAL.
Capa VCL: (Capa de codificación de video, capa de codificación de datos de video): comprime los datos de video originales.
H264 es un flujo de código similar a un flujo de código sin principio ni fin. un río. ¿Cómo obtener los datos que desea de la secuencia?
En el estándar H264, existe un formato de encapsulación llamado formato de secuencia de bytes "Anexo-B". Es el formato de flujo de bytes principal para la codificación H264.
Casi todos los codificadores del mercado salen en este formato. El código de inicio 0x 00 00 00 01 o 0x 00 00 01 se utiliza como separador.
Los datos de bytes entre dos 0x 00 00 00 01 representan una unidad NAL.
Encabezado de segmento: contiene un conjunto de información de segmento, como el número de segmentos, el orden, etc., etc. .
En H264, el macrobloque de 16x16 es la unidad de codificación mínima. Un macrobloque se puede dividir en múltiples bloques de 4x4 u 8x8.
Dentro del mismo macrobloque, los píxeles son similares. será relativamente alto si los píxeles en el macrobloque de 16x16 son muy diferentes, entonces debe continuar subdividiendo.
Por supuesto, cuanto más pequeño sea el bloque de píxeles, la complejidad de la codificación también aumentará y la codificación. la eficiencia naturalmente aumentará. Pero vale la pena, porque la eficiencia de compresión de la imagen se ha mejorado significativamente, es decir, para la misma calidad de imagen obtenida después de la codificación, H.264 tiene una relación de compresión mayor y ocupa menos espacio y ancho de banda.
El bloqueo irrazonable causará un efecto de bloqueo, es decir, la diferencia de color entre los bloques es obvia.
HiSilicon tiene una interfaz de desbloqueo después de 3559 para lidiar con el efecto de bloqueo, que se usa en 3519 Muchos
En los fotogramas I, todos los macrobloques utilizan predicción intracuadro, por lo que la imagen completa se puede reconstruir utilizando solo los datos del fotograma I durante la decodificación sin referencia a otras imágenes. web
H.264 especifica dos tipos de tramas I: tramas I normales (Iframes normales) y tramas IDR (InstantaneousDecoding Refresh, actualización de decodificación instantánea). Los fotogramas IDR son esencialmente fotogramas I y utilizan predicción intracuadro. La función de los fotogramas IDR es actualizar inmediatamente, lo que hará que se borre la DPB (lista de fotogramas de referencia del búfer de imagen decodificada), pero los fotogramas I no. Por lo tanto, el cuadro IDR asume la función de acceso aleatorio A partir de un nuevo cuadro IDR, la codificación se puede iniciar desde un nuevo Gop. El reproductor siempre puede reproducir desde un cuadro IDR porque ningún cuadro posterior hace referencia al cuadro anterior. Si no hay fotogramas IDR en un vídeo, no se puede acceder al vídeo de forma aleatoria. Todos los fotogramas B y P ubicados después del fotograma IDR no pueden hacer referencia a los fotogramas anteriores al fotograma IDR, mientras que los fotogramas B y P después del fotograma I ordinario aún pueden hacer referencia a los otros fotogramas anteriores al fotograma I. Los marcos IDR bloquean la acumulación de desviaciones, mientras que los marcos I no bloquean la acumulación de desviaciones. Algoritmo
La primera imagen de una secuencia GOP se llama imagen IDR (las imágenes IDR son todas imágenes de fotograma I, pero los fotogramas I no son necesariamente fotogramas IDR). La secuencia es un cuadro I es un cuadro IDR. Caché
Pregunta: Según la explicación de GOP, marco IDR y marco I, si hay un marco I excepto el primer marco IDR en un GOP, no existe. Marco I no IDR, pero ¿por qué necesitamos explicar el marco I no IDR? svg
Respuesta: Existen múltiples métodos de codificación para la codificación H264, como CBR, VBR, CVBR, ABR, etc. Cuando el contenido de la imagen cambia mucho en el modo de codificación VBR, la cantidad de fotogramas I será dinámica ajustado, por lo que el número de GOP El concepto debe modificarse: la distancia entre dos cuadros IDR es un grupo de GOP, y los cuadros que no son IDR I pueden aparecer en un grupo de GOP. Codificación
Cuadro P: cuadro codificado de predicción directa. El cuadro P representa la diferencia entre este cuadro y un cuadro clave anterior (o cuadro P). Al decodificar, es necesario superponer la diferencia definida en este cuadro con la imagen previamente almacenada en caché para generar la imagen final. tiene datos de imagen completos, solo datos que difieren del cuadro anterior. La tasa de compresión del cuadro P es de 20 códigos
Cuadro B: cuadro codificado por interpolación predictiva bidireccional. El cuadro B es un cuadro de diferencia bidireccional, es decir, el cuadro B registra la diferencia entre este cuadro y el cuadro anterior. Para decodificar el cuadro B, no solo se debe obtener la imagen almacenada en caché anterior, sino también la imagen posterior. , a través de los datos de la imagen anterior y el cuadro actual La superposición obtiene la imagen final. La tasa de compresión del cuadro B es alta, alrededor de 50, pero la CPU se cansará al decodificar. orm
Las cámaras USB que normalmente pueden generar cuadros H264 usan BP-Baseline Profile, que solo tiene cuadros I y P. Vídeo
Y el corte también es una división de bloques macro
Este artículo describe brevemente los bloques macro, cuadros y cortes en codificación H264 en audio y video. También hay un estudio más profundo de audio y video. El alcance del conocimiento es muy amplio y requiere un conjunto muy detallado de materiales y rutas de aprendizaje. Recomiendo el conjunto de materiales anterior tanto para principiantes como para maestros.