Al leer sobre la calidad del video, descubrí que depende de la resolución, fotogramas por segundo y tasa de bits, que determina el tamaño del video.
Mi pregunta es cómo se calcula la tasa de bits y cómo puede diferir.
Digamos que un video tiene una resolución de 360x240. Se necesitan 86400 píxeles por cuadro. La velocidad de fotogramas es de 30 Hz. Así que el video toma 86400 × 30 = 2592000 píxeles por segundo.
Así que digamos que 1 píxel es 3 bytes (24 bits) de datos: tenemos 2592000 × 24 bits por segundo (62208000 bits), es decir 62208 kBits (Esto no suena bien, quizás haya algún problema en mi cálculo).
Pero, ¿cómo puede diferir y cómo hace la diferencia en calidad?
video
codec
video-conversion
vincent mathew
fuente
fuente
Respuestas:
Lo que has calculado es la tasa de bits para un video sin comprimir sin procesar. Por lo general, no encontrará esto, excepto en investigación u otras aplicaciones especializadas. Incluso las emisoras utilizan video comprimido, aunque a una tasa de bits mucho más alta que su video típico de YouTube.
Entonces, la calidad del video tiene mucho que ver con la forma en que se comprimió el video. Cuanto más lo compres, menos bits tomará por trama. Además, cuanto más se comprime, peor es la calidad. Ahora, algunos videos son mucho más fáciles de comprimir que otros; en esencia, es por eso que tienen una tasa de bits más baja a pesar de que tienen la misma resolución y tasa de fotogramas.
Para comprender por qué esto es así, debe conocer los dos principios principales que utiliza la compresión de video. Estos se denominan "espacial" y "redundancia temporal".
Redundancia espacial
La redundancia espacial existe en imágenes que muestran contenido natural. Esta es la razón JPEG Funciona muy bien: comprime los datos de la imagen porque los bloques de píxeles se pueden codificar juntos. Estos son 8 × 8 píxeles, por ejemplo. Estos se llaman "macrobloques".
Los códecs de video modernos hacen lo mismo: básicamente usan algoritmos similares a JPEG para comprimir un cuadro, bloque por bloque. Así que ya no almacena bits por píxel, sino bits por macrobloque, porque "resume" los píxeles en grupos más grandes. Al resumirlos, el algoritmo también descartará la información que no es visible para el ojo humano: aquí es donde puede reducir la mayor parte de la tasa de bits. Funciona por cuantización los datos. Esto retendrá las frecuencias que son más perceptibles y "tirará" aquellas que no podemos ver. El factor de cuantizació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 y predecir macrobloques de macrobloques que han sido codificados previamente en la misma imagen. Se llama predicción intra . Por ejemplo, una parte de una pared gris ya estaba codificada en la esquina superior izquierda del marco, por lo que podemos usar ese macrobloque nuevamente en el mismo marco, por ejemplo, para el macrobloque justo al lado. Solo almacenaremos la diferencia que tenía con la anterior y guardaremos los datos. De esta manera, 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á que codificar. Las texturas suaves ocupan menos bits que las detalladas. Lo mismo ocurre con la predicción intra: un marco de una pared gris le permitirá utilizar un macrobloque para predecir todos los demás, mientras que un marco de agua que fluye no puede funcionar tan bien.
Redundancia temporal
Esto existe porque un cuadro que sigue a otro es probablemente muy similar a su predecesor. En su mayoría, solo un poquito cambia, y no tendría sentido codificarlo completamente. Lo que hacen los codificadores de video es simplemente codificar el diferencia entre dos cuadros posteriores, al igual que pueden hacer para los macrobloques.
Tomando un ejemplo del artículo de Wikipedia en compensación de movimiento , digamos que este es tu marco original:
Entonces la diferencia con el siguiente cuadro es solo esto:
El codificador ahora solo almacena el real Diferencias, no los valores píxel por píxel. Por esta razón, los bits utilizados para cada trama no son los mismos cada vez. Estas tramas de "diferencia" dependen de una trama totalmente codificada, y esta es la razón por la que existen al menos dos tipos de tramas para los códecs modernos:
Ocasionalmente necesitas insertar fotogramas en un video. La tasa de bits real también depende de la cantidad de cuadros I utilizados. Además, cuanta más diferencia de movimiento haya entre dos cuadros subsiguientes, más tiene que almacenar el codificador. Un video de "nada" en movimiento será más fácil de codificar que un video deportivo, y usará menos bits por fotograma.
fuente
Creo que tus matemáticas son realmente correctas, pero hay algo más que eso; La compresión es el eslabón perdido aquí.
Calculó la velocidad de bits sin comprimir y encontró la razón por la que existe la compresión. Las velocidades de bits se vuelven increíblemente grandes con el video sin comprimir. Entonces, comprimen el video en la fuente y lo descomprimen en el receptor, y luego la tasa de bits se vuelve manejable. Solo necesita un descompresor lo suficientemente rápido, que puede ser hardware o software.
Por lo tanto, el problema se convierte en cuánta compresión se puede tolerar; no es sin pérdidas, por lo general, por lo que está perdiendo información, pero intentan hacerlo 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, luego se vuelve más complicado.
Edición: se olvidó de agregar, pero las partes que implementan el método de compresión es el códec; Noté que usaste esto como una etiqueta en tu publicación.
fuente