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:
- I-frames (también conocidos como fotogramas clave) - estos son los totalmente codificados
- Marcos en p - Estos son los que solo guardan la diferencia.
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.