Un blog más...

Otra pequeña ayuda para los webones

Titles for some crazy shits!!

, , , , , , ,

Naaa... todavía no estoy tan... ehmm... loco como para escribir estupideces (bueno...). Pero en fin, el punto principal de esta entrada es que hace unos días me puse a leer algunos comentarios que yo mismo hice hace algún tiempo, la forma en la que me respondían y some fuckin' comentarios más.

Me di cuenta de que antes de que me fuera de "vacaciones" quedé a deber algunos tutos y muchas otras explicaciones sobre algunas de las cosas que pongo en este blog, y como creo que se me terminan los temas para tutos, pues... ¡¡a darle que es mole de olla!!

Cuidado, antes de que comiencen a leer debo adevertirles que este post va enfocado a gente que tiene conocimientos medios (o más altos) de compresión, para cualquier otro tipo de usuario le podría resultar un poco difícil de comprender. Quizá este post en particualar no, pero los siguientes yo creo que sí.

Antes que nada me gustaría darles una pequeña introducción con el único fin de explicar ciertas cuestiones que muchas veces son difíciles de manejar y de entender para muchas personas.

OK, hace algún tiempo hablé sobre CLI y el modo en que se podía implementar, de hecho puse un sencillo ejemplo de cómo hacer uno sólo agregando el x264 y algunos settings más la entrada del avs y la salida del video.

En realidad no recuerdo si hay algo más que puse o si me faltó, pero como en este preciso momento me vale, no pienso volver a releer ni volver a escribir cosas que ya hice, así que vamos a lo grande, que para este post (que quizá sea sólo la parte 1 de chorrocientas) será el manejo de esos mismos settings. bigsmile

Antes de mis larguísimas vacaciones había una discusión bastante interesante sobre un setting llamado "mbtree" (ya llevaba un poco de tiempo), que x264 implementaba por default y por el cual todo mundo comenzó a asustarse sin razón alguna, aunque quizá tenían razón.

Recientemente que comenzó a usarse CLI los que se dedicaban a la compresión comenzaron a hacerse muchas preguntas sobre los correctos parámetros que deberían usarse, muchos nos íbamos al lado sencillo diciendo que todo dependía de la fuente (y así es en ciertos casos), pero existen o existían fuentes que siempre necesitaban algo muy particular, lo cual muy pocos sabían cómo remediar.

Esta cuestión provenía por eso de los macrobloques, que supuestamente los hacía aparecer en mayor medida y bla, bla, bla... y si no era eso, la verdad no recuerdo el por qué, pero supuestamente le hacía un mal muy grande al video (de hecho los del "gremio" de encoders en español, lo odiaban). No me enfocaré a ese setting en particular, sólo lo menciono para que tenga algunas bases más adelante.

Bien... terminó la pequeñísima introducción y ahora vamos a ver un poco de estos settings.

Si bien tenemos un poco de conocimientos sobre líneas de comandos, sabremos que todo lo que hace uso de ellas, tiene cierto rango de parámetros, es decir, usa ciertos comandos dependiendo del programa. Afortunadamente para nosotros en el mewiki vienen todos esos "parámetros" que podremos usar, ovbiamente variando sus rangos y diferentes combinaciones, aunque recuerden, algunos de ellos (no tengo el dato si todavía lo haga) los carga por defecto sin que los agreguemos, es decir, tendremos que activarlos (ponerlos en nuestro archivo) para poder desactivarlos, no así muchos otros. Aquí

Si ya vimos esa página pudimos ver que existen varios tipos de settings que podremos utilizar, los presets, opciones para tipos de fotograma, control de radio, analísis, información de usabilidad de video, Entrada/salida y algunos filtros básicos que se añadieron no hace mucho.

Y como me parece que sería un post descomunal para todo eso, sólo llegaré hasta donde me aburra o tenga que llegar.

Y comenzaremos a explicar la primera parte, los presets:

--profile (baseline, main, high)

Nos dice su wiki que este profile sobreescribirá el resto si no se usa adecuadamente y que necesitamos saber la capacidad de nuestro reproductor (si es que sólo soporta cierto perfil) para saber si podrá o no reproducirlo de acuerdo al que hayamos activado. Además, si queremos hacer un lossless NO lo vamos a poder usar, osea que no podremos usar un --crf 0 ni un --qp 0 (se podrá usar crf pero en niveles más altos). Por ejemplo, si queremos usar un "baseline" (que sería un perfil bajo) le estaríamos interpretando como que es un video específico para bajos recursos (supongo que de los que se podían reproducir en esas computadoras con 56mb de ram).

Ahora bien si usamos un perfil "main", estamos partiendo de una definición estándar, aldo así como lo que se le conoce como SD aunque no del todo preciso, aunque se sabe que fue el predecesor de los altos perfiles cuando se cambió a la transmisión de alta definición, ya no es muy recomendable.

El perfil "high" se maneja ya para todo lo actual, lo último (por decirlo de alguna manera), diseñado para soportar estándares de alta definición, además de que la mayoría de los aparatos de últimas generaciones lo soportan.

Se recomienda que no se use, pero yo digo que sí, nomás por el puro antojo.

--preset (ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo)

Su apartado nos plantea un escenario facilista y a la vez complicado, pues nos dice que proporciona mayor eficiencia de compresión a cambio de velocidad en la misma compresión. Esto en cierto momento puede llegar a ser cierto, pues logra llegar a haber alguna diferencia (a veces poco significativa) al usar el ultrafast contra el placebo. Pero cuidado, dependerá de muchos de los settings que apliquemos posteriormente, éste en particular hace una diferencia entre el más rápido y el más lento de alrededor de un 10 o 15%, es decir, si usas el más rápido, puede que tu compresión vaya a 10 fps, y si usas el más lento podría llegar a los 8.7 - 9 fps, obvio también dependerá de tu máquina.

Se recomienda que se use lo más lento posible, osea que depende de su paciencia y de su máquina, pero no creo que sea del todo correcto, pues la diferencia de eficiencia entre uno y otro no varía significativamente (obvio del más rápido al más lento sí la existe, pero es muy poca), yo recomiendo que le tiren de "medium" hacia abajo, pero traten en la medida de lo posible no usar los rápidos.


--tune (film, animation, grain, stillimage, psnr, ssim, fastdecode, zerolatency)

Como podremos observar tiene muchas opciones que podemos usar, todo dependerá de qué vayamos a comprimir. Recuerden que esta opción DEBEMOS de usarla para que haya un uso óptimo del encoder en cuanto a nuestro stream, osea, para que haya mejoras en nuestro video.

film: una película cualquiera, como esas de la vida diaria
animation: cualquier clase de animación
grain: principalmente para imágienes fijas o videos que necesitan de granulo debido al "fuerte movimiento" que tiene en la imagen.
stillimage: usado para imágenes fijas
PSNR Y SSIM: Por el momento no les diré nada sobre estos, pues son más que nada algoritmos que se basan en comparaciones de imágenes para su optimización (mucho más adelante vienen ya como settings, por lo que esperaré hasta que llegue ese momento), además de que uno hace uso del otro para que "funcione" correctamente.
fastdecode: este es uno de mis... "odiados" más preferidos, pues silos que hacen/hacían VL dieran con él o lo supieran usar para el verdadero propósito con el que iniciaron estas versiones, sería bastante popular.
zerolatency: va para aquellas... transmisiones (por decirlo de alguna manera) que tienen cero espera, que no pueden esperar, por obvias razones son low-cost y baja calidad.

--slow-firstpass

Lo diré simple: ME VALE!!! No me interesa ni me interesará hacer compresiones a dos pasadas y menos con CLI. No doy detalles del por qué, sólo digo que NO ME INTERESA!!

Y la verdad ya me cansé, después le sigo y ahora me gustaría hacer otra mención de algo que me dijeron hace mucho. Me decían que la relación "calidad-peso" existe, yo decía que no, y hasta ahora lo sigo sosteniendo.

¿Por qué? Por las imágenes que les dejaré aquí abajo (son BMP, sin compresión), júzquenlas ustedes mismos, les dejaré algunos parámetros simples que se usaron para probar mi punto.

Primero que nada, elegí esta escena porque tiene los grandes contrastes de luz y sombra, segundo porque fue la única transport stream que pude conseguir en ese momento, y por último, ps nomás porque se me antojó...



Esta primera imagen fue sacada con casi los mismos settings que la de abajo, la diferencia fueron 3 o 4. La principal parte es que para ésta se aplicó un valor de --crf 18 y el video salío con más de 340MB de peso



Esta segunda imagen fue tomada pero agregados esos parámetros faltantes de la anterior, incluído un flamante --crf 21 con aún más flamantes 233MB de peso. (Quizá en la última parte de esta bola de tutos que haré les ponga el *.bat final que usé para cada uno.)

Y con eso es que sostengo, mantengo y refuto mi punto. Sigo diciendo que LA RELACIÓN CALIDAD-PESO NO EXISTE!!!

Bueno, al fin que es mi prueba, pero juzguenla ustedes mismos.

PD: A las imágenes no se les agregó ninún filtro ni nada por el estilo, sólo se les aplicó un desentrelazado, para ambos casos el mismo.

PD2: Si leen todo este post, es que de verdad tienen ganas de aprender o estaban muy de ociosos.

PD3: Si continúan leyendo, ahora sabrán el porqué del título!

Saludos bigsmile

¿Alguna vez te ha pasado?Cosillas y opiniones

How to use Quote function:

  1. Select some text
  2. Click on the Quote link

Write a comment

Comment
(BBcode and HTML is turned off for anonymous user comments.)

If you can't read the words, press the small reload icon.


Smilies