
Al leer sobre la calidad del video, descubrí que depende de la resolución, los cuadros por segundo y la tasa de bits, lo que decide el tamaño del video.
Mi pregunta es cómo se calcula la tasa de bits y en qué puede diferir.
Digamos que un vídeo tiene una resolución de 360x240. Se necesitan 86400 píxeles por cuadro. La velocidad de fotogramas es de 30 Hz. Entonces el video toma 86400 × 30 = 2592000 píxeles por segundo.
Entonces, digamos que 1 píxel son 3 bytes (24 bits) de datos: tenemos un video de 2592000 × 24 bits por segundo (62208000 bits), es decir, 62208 kBits (esto no suena bien, tal vez haya algún problema en mi cálculo).
Pero, ¿en qué puede diferir y en qué se diferencia la calidad?
Respuesta1
Lo que has calculado es la tasa de bits de un vídeo sin formato y sin comprimir. Por lo general, no los encontrará excepto en investigaciones u otras aplicaciones especializadas. Incluso las emisoras utilizan vídeo comprimido, aunque a una tasa de bits mucho más alta que el típico vídeo de YouTube.
Entonces, la calidad del video tiene mucho que ver con cómo se comprimió el video. Cuanto más lo comprimas, menos bits se necesitarán por cuadro. Además, cuanto más comprimas, peor será la calidad. Ahora bien, algunos vídeos son mucho más fáciles de comprimir que otros; en esencia, es por eso que tienen una tasa de bits más baja aunque tengan la misma resolución y velocidad de fotogramas.
Para comprender por qué ocurre esto, debe conocer los dos principios fundamentales de uso de la compresión de video. Estos se denominan "redundancia espacial" y "temporal".
Redundancia espacial
La redundancia espacial existe en imágenes que muestran contenido natural. Esta es la razónJPEGFunciona muy bien: comprime los datos de la imagen porque los bloques de píxeles se pueden codificar juntos. Se trata de 8 × 8 píxeles, por ejemplo. Se denominan "macrobloques".
Los códecs de vídeo modernos hacen lo mismo: básicamente utilizan algoritmos similares a JPEG para comprimir un cuadro, bloque por bloque. Así que ya no almacenas bits por píxel, sino bits por macrobloque, porque "resumes" los píxeles en grupos más grandes. Al resumirlos, el algoritmo también descartará información que no es visible para el ojo humano; aquí es donde se puede reducir la mayor parte de la tasa de bits. Funciona porcuantificarlos datos. Esto retendrá las frecuencias que son más perceptibles y "desechará" aquellas que no podemos ver. El factor de cuantificación se expresa como "QP" en la mayoría de los códecs y es el principal control de calidad.
Ahora puedes incluso seguir adelante ypredecirmacrobloques a partir de macrobloques que han sido previamente codificados en la misma imagen. Se llamapredicción intra. Por ejemplo, una parte de una pared gris ya estaba codificada en la esquina superior izquierda del cuadro, por lo que podemos usar ese macrobloque en el mismo cuadro nuevamente, por ejemplo para el macrobloque que está justo al lado. Simplemente almacenaremos la diferencia que tenía con el anterior y guardaremos los datos. De esta forma, no tenemos que codificar dos macrobloques que sean muy similares entre sí.
¿Por qué cambia la tasa de bits para el mismo tamaño de imagen? Bueno, algunas imágenes son más fáciles de codificar que otras. Cuanto mayor sea la actividad espacial, más tendrás que codificar. Las texturas suaves ocupan menos trozos que las detalladas. Lo mismo ocurre con la intra predicción: un marco de una pared gris le permitirá usar un macrobloque para predecir todos los demás, mientras que un marco de agua que fluye puede no funcionar tan bien.
Redundancia temporal
Esto existe porque un cuadro que sigue a otro probablemente sea muy similar a su predecesor. En su mayoría, solo hay pequeños cambios y no tendría sentido codificarlos por completo. Lo que hacen los codificadores de vídeo es simplemente codificar eldiferenciaentre dos fotogramas posteriores, tal como pueden hacer con los macrobloques.
Tomando un ejemplo del artículo de Wikipedia sobrecompensación de movimiento, digamos que este es tu marco original:
Entonces la diferencia con el siguiente cuadro es solo esta:
El codificador ahora sólo almacena elactualdiferencias, no los valores píxel por píxel. Esta es la razón por la que los bits utilizados para cada cuadro no son los mismos siempre. Estos cuadros de "diferencia" dependen de un cuadro completamente codificado, y es por eso que existen al menos dos tipos de cuadros para los códecs modernos:
- marcos I(también conocidos como fotogramas clave): estos son los completamente codificados
- marcos P— estos son los que simplemente almacenan la diferencia
Ocasionalmente necesitarás insertar fotogramas I en un vídeo. La tasa de bits real depende también del número de fotogramas I utilizados. Además, cuanto mayor sea la diferencia de movimiento entre dos cuadros posteriores, más tendrá que almacenar el codificador. Un vídeo de "nada" en movimiento será más fácil de codificar que un vídeo de deportes y utilizará menos bits por fotograma.
Respuesta2
Creo que tus cálculos son correctos, pero hay un poco más; La compresión es el eslabón que falta aquí.
Calculó la velocidad de bits sin comprimir y descubrió la razón por la que existe la compresión. Las velocidades de bits se vuelven increíblemente altas con vídeo sin comprimir. Entonces, comprimen el vídeo en la fuente y lo descomprimen en el receptor, y luego la velocidad de bits se vuelve manejable. Sólo necesitas un descompresor lo suficientemente rápido, que puede ser hardware o software.
Entonces, el problema es cuánta compresión se puede tolerar: generalmente no es sin pérdidas, por lo que se pierde información, pero intentan hacerla lo suficientemente inteligente como para perder los datos menos importantes que no serán tan notorios. Por lo general, es bastante fácil hasta que hay mucho movimiento y luego se vuelve más complicado.
Editar: Olvidé agregar, pero las partes que implementan el método de compresión es el códec; Noté que usaste esto como etiqueta en tu publicación.