Principios básicos de recopilación, compresión y transmisión de vídeos de cámaras
Recopilación, compresión y transmisión de videos de la cámara
Introducción:
La función básica de la cámara es la transmisión de video, entonces, ¿en qué principio se basa para lograrlo? ? La llamada transmisión de video:
Consiste en transferir imágenes a la pantalla una por una. Debido a que la velocidad de transmisión es muy rápida, todos pueden ver imágenes dinámicas continuas, como reproducir una película. Generalmente, cuando el número de transmisiones de imágenes alcanza los 24 fotogramas por segundo, la imagen tendrá continuidad.
A continuación presentaremos todo el proceso de recopilación, compresión y transmisión de vídeo de la cámara.
1. El principio de funcionamiento de la cámara (obtención de datos de video)
El principio de funcionamiento de la cámara es aproximadamente el siguiente: la imagen óptica generada por la escena a través de la lente (LENTE) se proyecta sobre la superficie de la imagen. sensor, y luego se convierte en una señal eléctrica y pasa a través del A/D (conversión analógica a digital). Después de la conversión, se convierte en una señal de imagen digital, que luego se envía al chip de procesamiento de señal digital (DSP) para su procesamiento. y luego se transmite a la computadora para su procesamiento a través de la interfaz USB. La imagen se puede ver a través del monitor. La siguiente figura es un diagrama de flujo del funcionamiento de la cámara:
Nota 1: El sensor de imagen (SENSOR) es un chip semiconductor cuya superficie contiene de cientos de miles a millones de fotodiodos. Cuando un fotodiodo se ilumina con luz, genera una carga eléctrica.
Nota 2: Función DSP (PROCESAMIENTO DE SEÑAL DIGITAL) del chip de procesamiento de señal digital: principalmente a través de una serie de operaciones de algoritmos matemáticos complejos, optimiza los parámetros de la señal de imagen digital y envía la señal procesada a través de USB Espere la interfaz para ser transmitido a PC y otros dispositivos.
1. ISP (procesador de señal de imagen) (procesador de señal de imagen)
2. Codificador JPEG (decodificador de imagen JPEG)
3. Controlador de dispositivo USB (USB controlador del dispositivo)
El vídeo requiere que la imagen de vídeo adquirida se transmita a una computadora remota para su visualización a través de Internet, lo que implica la transmisión de la imagen de vídeo adquirida.
Al transmitir este tipo de imagen, la imagen debe comprimirse. Generalmente, los métodos de compresión incluyen H.261, JPEG, MPEG, etc.; de lo contrario, el ancho de banda requerido para la transmisión será muy grande. Todos los que usan RealPlayer han notado que al reproducir una película, habrá una velocidad de transmisión de 250 kbps, 400 kbps, 1000 kbps debajo del reproductor... Cuanto mayor sea la calidad de la imagen, mayor será la velocidad. El mismo principio se aplica a la transmisión de video por parte de la cámara. Si la resolución de la cámara se ajusta a 640 × 480 y el tamaño de cada imagen capturada es de aproximadamente 50 kb y 30 cuadros por segundo, entonces la velocidad requerida para que la cámara transmita video es. 50×30/s=1500kbps=1,5Mbps. En la vida real, la resolución que la gente suele utilizar para los chats de vídeo en línea es de 320×240 o incluso inferior, y el número de fotogramas transmitidos es de 24 fotogramas por segundo. En otras palabras, en este momento la velocidad de transmisión de video será inferior a 300 kbps y las personas podrán tener chats de transmisión de video más fluidos. Si se utiliza un método de vídeo de mayor compresión, como MPEG-1, etc., la velocidad de transmisión se puede reducir a menos de 200 kbps. Esta es la velocidad de transmisión de red requerida por la cámara durante el chat de video general.
2. Parte de compresión de video
La compresión de video es el núcleo del procesamiento de video. Se puede dividir en compresión no en tiempo real y compresión en tiempo real según sea en tiempo real. La transmisión de video (como el chat instantáneo de video QQ) requiere que la compresión de video sea en tiempo real.
A continuación se explica por qué se puede comprimir el vídeo.
La compresión de video es una compresión con pérdida. En términos generales, la tasa de compresión de video es muy alta. Se puede lograr una tasa de compresión tan alta porque las imágenes de video tienen una gran redundancia de tiempo y espacio.
La llamada redundancia temporal se refiere a que los valores de píxeles de dos cuadros adyacentes en la misma posición son relativamente similares y tienen una gran correlación, especialmente para imágenes fijas, o incluso dos cuadros de imágenes que son exactamente iguales para imágenes en movimiento. , a través de algún tipo de operación (estimación de movimiento), se debe decir que también tienen una alta correlación; la correlación espacial se refiere a la misma imagen de cuadro, y dos píxeles adyacentes también tienen una cierta correlación. Estas correlaciones son los supuestos iniciales del algoritmo de compresión de video. En otras palabras, si no se cumplen estas dos condiciones (imágenes con ruido blanco completo, imágenes con cambio frecuente de escenas, etc.), el efecto de compresión de video será muy pobre.
El algoritmo clave para eliminar la correlación temporal es la estimación de movimiento, que encuentra la mejor posición coincidente del macrobloque de la imagen actual en la imagen del cuadro anterior. En muchos casos, solo necesitamos registrar estas coordenadas relativas. esto ahorra muchas palabras de código y mejora la tasa de compresión. En los algoritmos de compresión de vídeo, la estimación del movimiento es siempre la parte más crítica y central. La eliminación de la correlación espacial se logra mediante la transformación DCT, que asigna los datos en el dominio del tiempo al dominio de la frecuencia y luego cuantifica los coeficientes DCT. Básicamente, todas las compresiones con pérdida tendrán cuantificación, lo que mejora más la tasa de compresión.
El archivo original de la imagen es relativamente grande y debe comprimirse para una transmisión rápida y una reproducción fluida. La relación de compresión es un parámetro que mide el tamaño de la compresión de la imagen. En términos generales, la relación de compresión de las cámaras es mayoritariamente de 5:1. En otras palabras, si la capacidad de la imagen de 30 segundos antes de la descompresión es de 30 MB, luego de comprimir la imagen de acuerdo con la relación de compresión de 5:1 de la cámara, su tamaño será de 6 MB.
Los principales algoritmos de compresión de vídeo incluyen: M-JPEG, Mpeg, H.264, Wavelet (compresión wavelet), JPEG 2000 y AVS.
Básicamente este es el núcleo de la compresión de vídeo.
3. Parte de transmisión de video
Para garantizar el rendimiento en tiempo real de la transmisión de la red de video digital y la calidad de las imágenes, la selección de protocolos de capa de transporte es la clave para todo el diseño e implementación. Internet utiliza dos protocolos de transmisión en la capa IP: uno es TCP (Protocolo de control de transmisión), que es un protocolo de red orientado a la conexión, y el otro es UDP (Protocolo de datagramas de usuario), que es un protocolo de red sin conexión.
Transporte TCP: TCP (Protocolo de control de transmisión) es un protocolo de transporte de red orientado a conexión. Admite la operación de flujos de datos múltiples, proporciona control de flujo y control de errores e incluso reordena los paquetes que llegan desordenados. Por lo tanto, la transmisión TCP proporciona servicios de transmisión de datos confiables.
El proceso general de uso de la transmisión TCP:
Después de que el cliente envía una solicitud de conexión al servidor, después de que el servidor la recibe, envía una confirmación de conexión al cliente. Se realiza la conexión, las dos partes proceden a la transferencia de datos.
Transporte UDP: UDP (User Datagram Protocol) es un protocolo de transporte de red sin conexión. Proporciona un servicio básico de transmisión de datagramas de baja latencia. No es necesario establecer una conexión por adelantado como la transmisión TCP. UDP no tiene ningún mecanismo de sincronización, control de flujo o mecanismo de gestión de congestión. Los datos perdidos no serán retransmitidos. Por lo tanto, se proporciona un servicio de transmisión de datos de aplicaciones poco fiable. Sin embargo, en un buen entorno de red, como una LAN, utilizar UDP para transmitir datos es relativamente confiable y muy eficiente.
Tecnología de multidifusión IP: la tecnología de multidifusión es una tecnología de red que permite a uno o más remitentes enviar paquetes de datos de uno o varios remitentes a múltiples receptores. La fuente de multidifusión envía datagramas a un grupo de multidifusión específico y solo los hosts que se unen al grupo de multidifusión pueden recibir estos datagramas. La multidifusión puede ahorrar mucho ancho de banda de la red porque no importa cuántas direcciones de destino haya, solo se envía un paquete de datos en cualquier enlace de toda la red.
1.Protocolo TCP/IP y transmisión en tiempo real
El protocolo TCP/IP fue diseñado originalmente para proporcionar servicios de datos no en tiempo real. El protocolo IP es responsable de la transmisión de datos entre hosts y no realiza detección ni corrección de errores. Por lo tanto, a menudo se produce pérdida o desorden de datos. Para garantizar una transmisión confiable de datos, las personas utilizan el protocolo TCP para la transmisión de datos IP para mejorar las capacidades de detección y corrección de errores del extremo receptor. Cuando se detecta una pérdida o un error en un paquete, el extremo emisor debe reenviarlo, lo que inevitablemente provoca retrasos en la transmisión y consume ancho de banda de la red.
Por lo tanto, el protocolo TCP/IP tradicional tiene poca capacidad para transmitir datos de audio y vídeo en tiempo real. Por supuesto, el protocolo TCP también es una opción a la hora de transmitir datos de vídeo y audio para su reproducción. Si hay un búfer lo suficientemente grande y un ancho de banda de red suficiente, también es posible la transmisión de vídeo y audio casi en tiempo real a través del protocolo TCP. Sin embargo, si la tasa de pérdida de paquetes es alta y el estado de la red es deficiente, es casi imposible utilizar el protocolo TCP para comunicaciones de vídeo o audio.
Las principales razones por las que TCP y otros protocolos confiables de capa de transporte como XTP no son adecuados para la transmisión de video y audio en tiempo real son las siguientes:
1. Mecanismo de retransmisión TCP p>
Sabemos que en el protocolo TCP/IP, cuando el remitente descubre una pérdida de datos, requerirá la retransmisión del paquete de datos perdido. Sin embargo, esto requerirá uno o más ciclos (según el mecanismo de retransmisión rápida de TCP/IP, esto requerirá tres retrasos de cuadros adicionales). Este tipo de retransmisión es casi imposible para las comunicaciones de datos de video y audio con altos requisitos de tiempo real. desastroso porque el receptor tiene que esperar a que llegue la retransmisión de datos, provocando retrasos y puntos de interrupción (discontinuidades en el audio o congelación del vídeo, etc.).
2. Mecanismo de control de congestión de TCP
Cuando el mecanismo de control de congestión de TCP detecta la pérdida de paquetes, reducirá su ventana de congestión. Por otro lado, bajo un método de codificación específico para audio y video, la cantidad de códigos producidos (es decir, la velocidad de bits) no puede cambiar repentinamente. El control de congestión correcto debe consistir en cambiar el método de codificación de la información de audio y video, ajustar la velocidad de fotogramas de la información de video o el tamaño del formato de la imagen, etc.
3. Tamaño del encabezado TCP
Otro inconveniente de TCP que no es adecuado para la transmisión de vídeo y audio en tiempo real es que su encabezado es más grande que el de UDP. El encabezado del mensaje TCP tiene 40 bytes, mientras que el encabezado del mensaje UDP tiene solo 12 bytes. Además, estos protocolos confiables de capa de transporte no pueden proporcionar marcas de tiempo (Time Stamp) e información de codificación y decodificación (Encoding Information), que es exactamente lo que necesita la aplicación receptora (es decir, cliente). Por lo tanto, TCP no es adecuado para la transmisión en tiempo real de información de vídeo y audio.
4. Velocidad de inicio lenta
Incluso cuando la red está funcionando bien y no hay pérdida de paquetes, dado que el inicio de TCP necesita establecer una conexión, durante el proceso de inicialización, es necesario a Un tiempo más largo, y en una aplicación de transmisión de audio y video en tiempo real, lo que esperamos es el menor retraso posible.
Se puede ver que el protocolo TCP no es adecuado para transmitir datos de audio y video en tiempo real. Para lograr la transmisión de datos de audio y video en tiempo real, necesitamos encontrar otras formas.
2. El protocolo RTP es adecuado para la transmisión de audio y vídeo en tiempo real.
RTP (Protocolo de transporte en tiempo real)/RTCP (Protocolo de control de transporte en tiempo real) es una aplicación. Protocolo de capa de transporte orientado, no proporciona ninguna garantía de confiabilidad de transmisión ni mecanismo de control de congestión de tráfico. Es un protocolo de transmisión diseñado por el IETF (Internet Engineering Task Force) para la transmisión de vídeo y audio en tiempo real. El protocolo RTP está ubicado encima del protocolo UDP. Es funcionalmente independiente de la capa de transporte subyacente (UDP) y de la capa de red, pero no puede existir como una capa separada. Generalmente utiliza el protocolo UDP de capa baja para realizar multidifusión en tiempo real. datos de video y audio (Multicast). O unicast (Unicast), realizando así la transmisión de datos de video y audio multipunto o de un solo punto.
UDP es un servicio de entrega de datagramas sin conexión. Aunque no es tan confiable como TCP y no puede garantizar la calidad de servicio (QoS) de los servicios de transmisión de audio y video en tiempo real, se requiere RTCP para monitorear la transmisión de datos. y calidad del servicio en tiempo real. Sin embargo, debido a que el retraso de transmisión de UDP es menor que el de TCP, puede coincidir bien con transmisiones de audio y video. Por lo tanto, en aplicaciones prácticas, RTP/RTCP/UDP se utiliza para medios de audio y vídeo, mientras que TCP se utiliza para la transmisión de datos y señalización de control.
Resumen: si el extremo receptor y el extremo emisor están en la misma LAN, debido a una garantía de ancho de banda suficiente, TCP también puede funcionar mejor para cumplir con la naturaleza en tiempo real de la transmisión de video basada en TCP y UDP. El rendimiento de transmisión de vídeo de RTP no es muy diferente. Dado que el ancho de banda no es el principal conflicto en la LAN, el retraso en la transmisión de datos de video en este momento se refleja principalmente en el retraso del procesamiento, que está determinado por la potencia de procesamiento del procesador y el mecanismo de procesamiento adoptado. Sin embargo, cuando los datos de video se transmiten a través de una red de área amplia, el rendimiento de la transmisión en este momento depende en gran medida del ancho de banda disponible. Dado que TCP es un protocolo de capa de transporte orientado a la conexión, su mecanismo de retransmisión y su mecanismo de control de congestión empeorarán aún más la condición de la red. , lo que provocó retrasos catastróficos. Al mismo tiempo, en este entorno de red, cuando los datos de video transmitidos a través de TCP se reconstruyen y reproducen en el extremo receptor, los puntos de interrupción son muy obvios y se manifiestan como una intermitencia obvia, y no se puede garantizar la transmisión en tiempo real ni la calidad de la transmisión. . En términos relativos, el rendimiento en tiempo real y la calidad de transmisión de los datos de vídeo transmitidos mediante RTP son mucho mejores.
4. Visualización remota de imágenes de vídeo
Cuando un vídeo comprimido se transmite a una ubicación remota a través de Internet, la información del vídeo transmitida desde Internet primero debe decodificarse y luego mostrarse. El chip decodificador tiene ciertos requisitos de rendimiento, que son más bajos que los del codificador, pero después de todo, se trata de procesamiento de datos de video, y un chip de uso general (que no admite instrucciones multimedia como MMX) puede ser más difícil. Los dispositivos de visualización incluyen principalmente televisores, monitores y pantallas. Sus interfaces de señal son diferentes. Los monitores de televisión utilizan señales eléctricas analógicas, mientras que la entrada de la pantalla debe ser señal digital.
Lo anterior es el proceso completo de cómo la cámara obtiene datos de imagen, dónde se almacenan los datos obtenidos, cómo comprimirlos y transmitirlos, y cómo liberarlos y reproducirlos en un lugar diferente.