constans pass no existe, o es Constan Quality o Constan Quiantizer.
el mejor método es crf, q es Cosntan Quality. Pero es más abstracto.
Hay dos modos de codificar un video:
Bitrate: (Una pasada)
En q tu asignas de manera manual el bitrate mínimo/maximo de cada fotograma. El bps quire decir bits por segundos (en realidad lo q ponemos no son bps, son kbps). Esto quiere decir q si establecieramos un bitrate de por ejemplo 1000 kbps
1 byte = 8 bits -> 1000 kbs = 125 Kb por segundos.
Si nuestro video tiene 10 segundos, el video final será seguro seguro de unos 1250 kb = 1.2 Mb. aprox
Esto quiere decir q si ponemos nosotros el bitrate sabremos casi a ciencia exacta el tamaño final del video. Y normalmente esto es precisamente lo q queremos. Depende de las opciones de codificación, a veces 1000 kbps tendrá una calidad y otras veces otra diferente. Por ejemplo, si estamos codificando anime. Anime es de las fuentes q mas se puede comprimir. Pq? pq las imágenes son estáticas, y tan solo hay movimiento en el primer plano, con lo q se potencia de manera imprsionante el uso de b frames q son altamente compresibles. Luego una peli anime de la misma duración q una peli normal, con los mismos ajustes en la codificación (exceptuando el bps) podría tener la misma calidad q la peli normal, pero a lo mejor con el bitrate de un tercio del otro. Pero aun así, es muy facil comprender el escalado de la calidad frente al tamaño del archivo, ya q es una relación lineal.
Bitrate: (multipasadas)
Codificar por bitrate tiene alguno q otro problema... si se usan especialmente bitrates muy bajos, es bueno realizar varias pasadas. h264 es el mejor codec de compresión en muchos aspectos, y uno de sus platos fuertes es q con muy muy poco bitrate puede dar unos resultados increibles. Pero la codificacion por bitrate establece la cantidad de bits q se van a usar en un segundo. el fps establece el numero de imagenes en un segundo, en PAL es 25. Esto quiere decir q un bitrate de 100Kbs = 12.5 Kb/s (por ejemplo) a 25 fps por segundo, si se repartiese de manera igualada a todas las imagenes por igual se tendría q cada imagen se puede codificar tan solo con 12.5/25 = 500 bytes!!, medio kb. y todas las imagenes se codificarían exactamente con 500 bytes.
Pero claro... si pensamos un poco, hay imagenes mas complejas q otras. No es lo mismo una imagen en la q es todo en negro, a una imagen llena de colorido. Si a todos los frames se les codificara al mismo bitrate, se gastaría el mismo numero de bits en una imagen super compleja, q en un fondo negro. Pasa lo mismo si pensamos en fotos. Una foto en blanco y negro con todo en negro ocupa infinitamente menos q la misma foto del mismo tamaño en la q esta a todo color de un paisaje bellísimo y compleja.
Luego sería un desperdicio de bits tratar a todas las imagenes por igual... y más aun cuando disponemos de muy pocos bytes (de ahí la importancia extrema con bitrates bajos). De ahí se saca el concepto de multipasada. Este concepno no es viejo, y divx/xdiv tb lo usan desde hace mucho tiempo.
Se puede configurar el codec para q antes de realizar la codificación haga una "codificacion falsa" con los mismos ajustes y todo igual, en la q en vez d comprimir, analiza frame a frame todo el video, estableciendo q frames necesitan mas bits y cuales menos. Y esa informacion la guarda en archivo de estadística temporal. (en megui se llama este archivo nombrevideo.stat (creo recordar). y en la segunda pasada (en el caso de ser solo dos pasadas) usa ese archivo de entrada para codificar el video, usando esa informacion para codificar los frames con el bitrate justo y necesario, veamos un ejemplo:
un video de un segundo con un fps de 5 a un bitrate de 100kbps:
modo bitrate de una sola pasada -> 5 imágenes, 100 kbps -> 100/8 = 12.5 Kb/s | 12.5kb / 5 = 2.5Kb por imagen
frame 1 = 2.5Kb
frame 2 = 2.5Kb
frame 3 = 2.5kb
frame 4 = 2.5kb
frame 5 = 2.5kb
----------------------
12.5 kb en total
modo bitrate de dos pasadas:
frame 1 = 0.5Kb
frame 2 = 3.5Kb
frame 3 = 4.5kb
frame 4 = 3.5kb
frame 5 = 0.5kb
--------------
12.5Kb en total
-------------------------------
El bitrate es el mismo, pero se reparte mucho mejor, segun la complejidad de la imagen. Si se realizan 3 pasadas, simplemente se usa una primera pasada para ajustar el bps, y la segunda para ajustar de manera mas fina la primera pasada... y así sucesivamente. El modo de segunda pasada turbo significa q el primera pasada es rápida. Si no se activa turbo, el proceso de codificado es exactamente el doble, dado q son como dos codificaciones. Si se activa turbo, la primera pasada se realiza con ajustes mas livianos, en los q la codificación de la primera pasada es mucho más rapida. El reparto de bits no se hace tan bien, pero es un buen modo de acelerar la codificacion.
Aun así, en ambas situaciones, la codificacion multipasada es "lenta"
Cuantización:
explicar la cuantización es complicado, ya q significaría explicar el proceso de codificado un codec... a ver como puedo explicarlo...
La cuantización sería la etapa de la compresión en si misma. h264 hace montones de calculos matematicos para predecir la imagen siguiente, para saber si estamos en escenas de alta velocidad, ajustes de colores, filtros... una cantidad de conceptos matemáticos q se escapan all 90% de las personas, en los q me incluyo. Cuando se hacen todos esos calculos, se llega al resultado final: ya sabemos el resultado, ahora... cuanto comprimimos? mucho? poco? ahí entra la DCT (Transformada discreta del coseno). Es un modo de compresión de datos, como muchos otros. Pues digamos q la quantización es una matriz q se une a la DCT para establecer la calidad final de la imagen resultante.
Cuanto más baja sea la cuantización, la imagen será más perfecta. Son terminos mucho mas abstractos q el bitrate, en el q está muy claro lo q se está haciendo. Con la cuantización, ni el más experto puede saber el resultado final de la imagen teniendo de entrada la cuantización usada.
Se codifica por quantización cuando el tamaño final del video no nos importa demasiado, y lo q buscamos es una calidad deseada. Es el concepto completamente opuesto del bitrate. Con Cuantización le decimso al codec la calidad q queremos, con bitrate el tamaño q deseamos.
Con Q (cuantización) tan solo es necesario una pasada, el bitrate resultante de usar Q será el q sea, no es importante. Ejemplo:
Costant Quantizer = 18
Le estoy diciendo al codec q no me importa q bitrate tendra al final, q lo q quiero es q mi segundo de video tenga por igual una calidad equivalente a una cuantización de 18.
Pregunta: ¿como se q calidad da una cuantización de 18? no se sabe, pero con experiencia y com pruebas se puede intuir.
Yo se q un Q de <18 me va a dar una imagen resultante casi transparente, es decir, q la imagen final será igual a la de entrada. sería lo ideal en un mundo utópico... claro q una Q de 18 nos daría un tamaño final de video muy grande, a lo mejor nos sale un bitrate de 2000 o lo q sea.
Pero se puede ir probando...
como comparamos la calidad de un video? hay dos modos
1º. Con los ojos
2º. Con una formula matematica q nos mide con un numerito la diferencia entre el frame de origen y el frame comprimido
Ahora mismo, el más usado es SSIM. Se puede configurar x264 para q cuando finalize la compresión, nos de tb el SSIM resultante. Un 1 sería imagen perfecta, a partir de SSIM > 0.97 sería una imagen casi transparente. ES uyna medida tb un poco abstracta, pero sirve muy bien para saber como varían ciertos ajustes del codec en la calidad final.
Es importante, pq si usas una Q de por ejemplo 18 y quieres comparar el resultado con un Q de 19, te das cuenta a lo mejor q la diferencia de tamaño es considerable y a lo mejor no eres capaz de distingir las diferencias.
Dado q toch acepta bitrates de hasta 10Mb/s, siempre qpodamos sería bueno usar cuantización, pero como lado negativo es q no sabremos el tamaño final del video, y q es mas abstracto medir la calidad de este.
Yo empezaría comprimiendo, si os gusta la cuantización, con un Q > 22 o 24. Si el resultado es pobre usar un punto menos, si nos gusta, probar con un punto más a ver si tenemos un resultado aceptable, con mucho menos espacio. Es un poco prueba error.
Ahrao bien, x264 usa dos modos de quantización. Constan Quanticer y Constan Quality. x264 es el unico codec q por ahora implementa este invento. Constan Quality no usa una cuantización constante, sino q ajusta la cuantización según se necesite. Si dices usar una cuantización de 24 y un frame puede usar una cuantización de 28 para la misma calidad, usará 28 para ese frame. Luego muchas veces obtendremos un poco mas de calidad y menos espacio.
Si queremos usar cuantización, usar Constan Quality siempre, no tiene ningun lado negativo frente a Constan Quantizer.
Dices en el post de usar Constan Quant de 27... pude dar buenos resultados si, aunq la imagne a 27 debería de empezar a tener perdidas de calidad. La proximavez, marca SSIM, y cuando termine dla codificación, en megui, en logs mira el SSIM resultante, seguramente para una cuantización de 27 te de un SSIM de 0.94 0.95... q a lo mejor puede estar muy bien eh! y con una reducción considerable de tamaño en el archivo final