¡Hola, Invitado! (Iniciar sesiónRegístrate)
Hora: 03 Dec 2024, 18:51

[Tutorial] Usar el parámetro --zones para ahorrar peso sin sacrificar calidad

06 Jul 2015, 11:02 (Este mensaje fue modificado por última vez en: 10 Jul 2015 15:53 por Varsh)
Mensaje: #1

[Tutorial] Usar el parámetro --zones para ahorrar peso sin sacrificar calidad

Advertencia: Este tutorial no es apto para aquellos que aún no saben lo básico sobre el encodeo. Aquí no se aclara nada sobre indexado, filtrado, parámetros básicos, etc. No digo que seguirlo sea difícil, pero si lo que quieres es aprender a encodear desde cero, esto no es para ti.

--zones es una excelente opción del x264 que te permite cambiar ciertos parámetros para ciertas escenas que necesitan un tratamiento diferente al resto del vídeo. En este tutorial nos vamos a enfocar en cambiar el CRF por zona, pero cabe mencionar que las zonas sirven para cambiar muchos otros parámetros también.

Utilidad:
Un caso muy útil es, por ejemplo, cuando el 70% de un episodio se ve perfecto a un RF alto (CRF18) debido a los colores apagados y la falta de movimiento, pero hay algunas escenas de fuego, explosiones, CGI, hechizos y cosas por el estilo que necesitan un RF mucho más bajo para no verse mal (CRF14 o incluso CRF12 si somos muy perfeccionistas). Ejemplos de algunos animes así: Witchcraft Works, Bakuman. Existen más situaciones en las que el uso de --zones nos puede ser muy útil, pero esta es la más común.

Pros y contras:
Ahorras bastantes MB si es que lo sabes usar bien
Puedes librarte de los OC, o combinar los OC con este método para conseguir archivos aun más livianos
Requiere que estés atento a los cambios de escena y los registres manualmente
No vale la pena el esfuerzo en muchos animes, ya que el cuánto puedes ahorrar en peso, varía mucho
Por ese último punto, recomendaría usar este paramétro solo en caso de emergencia, a menos que disfrutes perder el tiempo encodeando

Herramientas que vamos a necesitar:
Aegisub - Para sacar los fotogramas de inicio y fin de cada zona
x264 - Recomiendo las builds kMod.10-bit.x86 de Komisar, ya que son las más completas y tienen algunos mods que nos pueden ser muy útiles para el anime (--fade-compensate, --aq-mode 3).
Input - Tu raw webrip, AVI lossless, script Avisynth o lo que sea que uses como fuente. Todo previamente editado y filtrado.
Editor de texto - Bloc de notas, Notepad++, o cualquier otro con el que te sientas cómodo. Yo uso Sublime Text.

Nota: ffmpeg no soporta zonas ni muchos otros parámetros avanzados, así que mejor asegurarse de descargar una versión completa del x264.
Nota 2: Asegúrate de no hacer un indexado con meGUI (FFMSIndex), ya que resulta muy problemático para mostrarte los verdaderos cambios de escena.
Recomiendo usar AVCSource como input e indexar usando DGAVCIndex.


¿Cómo se usa?
Un ejemplo de uso es:
Cita:--crf 17 --zones 25,1000,crf=15
Esto quiere decir que nuestro encode tendrá un CRF de 17, pero que desde el cuadro 25 hasta el cuadro 1000, tendrá un CRF de 15.
Azul: cuadro de incio de la zona
Rojo: cuadro de final de la zona
Verde: valor distintivo que se le quiere dar a la zona

También podemos indicar más de una zona, así:
Cita:--crf 17 --zones 25,1000,crf=15/2000,2100,crf=12/2101,2200,crf=15
Las barras (o diagonales) sirven para separar una zona de otra.

Manos a la obra:
Paso 1 - A nuestro script Avisynth le quitamos todos los filtros, menos los que cambian el framerate o el orden de los cuadros, y le bajamos la resolución a 360p para no estresarnos al movernos entre los fotogramas una vez cargado el script en Aegisub. Puedes usar el símbolo de número # (almohadilla/gato) para indicarle a Avisynth que ciertos filtros de momento no tendrán efecto.
 qd45YB3
(Favor de ignorar el filtrado perry, estaba haciendo pruebas de limpieza de webrips con valores exagerados)

Paso 1 (alternativo) - En lugar de preparar un AVS para cargarlo en Aegisub podemos usar una workraw, un webrip sin tocar o robarnos una raw de preencodeada de Nyaa. Solamente hay que asegurarnos de que tengan exactamente la misma cantidad de fotogramas que lo que queremos encodear. Si estamos encodeando un DVD o una TS, definitivamente es lo mejor preparar un script de Avisynth.

Paso 2 - Abrimos el script o la raw en Aegisub.
 1mrilzh
Aquí me doy cuenta de que la introducción y el opening requieren mucho bitrate, así que me voy hasta el final del opening para sacar el último fotograma y así establecer mi primera zona a CRF 15.
Ver imagen:
Mostrar
AFb80cf
Tengamos en cuenta que el primer fotograma es el 0. Quedaría así:
Cita:--crf 17 --zones 0,3249,crf=15
Ignoro las escenas comunes que deberían verse bien a CRF 17 y me voy desplazando por el video hasta toparme con otra escena que requiera mayor bitrate. Anoto el incio y el final de esa escena y agrego la zona:
Cita:--crf 17 --zones 0,3249,crf=15/4652,6116,crf=15
Sigo haciendo lo mismo:
Cita:--crf 17 --zones 0,3249,crf=15/4652,6116,crf=15/7599,8030,crf=15/8431,16557,crf=15/27378,34063,crf=15

Paso 3 - Hacemos un bat para encodear, como siempre, creando un nuevo archivo de texto:
Cita:x264 --preset veryslow --otros parámetros --output "Output.mkv" "Input.avs"
Y casi al final (antes de --output) agregamos el parámetro --crf seguido del parámetro --zones:
Cita:x264 --preset veryslow --otros parámetros --crf 17 --zones 0,3249,crf=15/4652,6116,crf=15/7599,8030,crf=15/8431,16557,crf=15/27378,34063,crf=15 --output "Output.mkv" "Input.avs"
Finalmente guardamos el archivo de texto con la extensión .bat, procedemos a encodear normalmente y quedó.

Trucos y consejos:
- Puedes agregar los parámetros --crf 16 --zones 0,9999999,crf=16 a todos tus encodes normales. Así, si alguna escena te quedó mal, pero el resto del episodio se ve inpecable, simplemente puedes cortar esa escena, volver a encodear pero con un crf más bajo (--crf 16 --zones 0,9999999,crf=14) y al final el mkvmerge permitirá pegar la nueva escena con tu encode original.
- Puedes hacer una workraw a un bitrate ridículamente bajo. De esa manera te será más sencillo detectar si alguna escena requiere un mayor bitrate. Y es ahí donde las zonas entran en acción.
- Los openings suelen salir muy bien beneficiados por el parámetro --zones. Intenta comprimir un opening usando una zona por escena y verás lo que te ahorras en bitrate o lo que aumentas la calidad sin aumentar el bitrate en todo el opening. El mismo opening lo puedes pegar a todos los episodios que encodees por separado, pero ten cuidado con los endings: tienen créditos diferentes para cada episodio.
- También puedes usar las zonas para cambiar otros parámetros. Un par de parámetros útiles serían --psy-rd y --deblock para variar la retención de detalle.
Ejemplo 1 escribió:--crf 18 --deblock 1:1 --zones 500,1000,crf=15/1001,1500,crf=13,deblock=0;0
Ejemplo 2 escribió:--crf 18 --psy-rd 1.0:0.0 --zones 500,1000,crf=15/1001,1500,crf=13,psy-rd=0.7;0.0
Aclaración: --psy-rd 1.0:0.0 dentro de una zona debe escribirse como psy-rd=1.0;0.0. Lo mismo con --deblock 1:1 (deblock=1;1).
06 Jul 2015, 11:34
Mensaje: #2

RE: [Tutorial] Usar el parámetro --zones para ahorrar peso sin sacrificar calidad

Muy interesante loko, y este metodo es muy utilizado por encoders, o no es muy comun???

06 Jul 2015, 11:45 (Este mensaje fue modificado por última vez en: 06 Jul 2015 13:37 por Varsh)
Mensaje: #3

RE: [Tutorial] Usar el parámetro --zones para ahorrar peso sin sacrificar calidad

No es tan común. Rara vez lo usan porque requiere su tiempo, pero puede llegar a ser útil en casos especiales, como los que mencioné arriba.

Por ejemplo, una vez Commie lo usó para bajarle al bitrate al opening de Psycho-Pass 2, que es todo un festín visual de grain y degradados con colores vivos-oscuros.
Creo que pesaba más de 200 MB en 720p.

También es útil para cuando alguna escena requería más bitrate de lo esperado pero el resto del episodio se ve bien.
06 Jul 2015, 14:21
Mensaje: #4

RE: [Tutorial] Usar el parámetro --zones para ahorrar peso sin sacrificar calidad

Tal vez deberías editar el tutorial para mencionar que con las zonas puedes cambiar cualquier parámetro, no solo el crf.

Uno que también usó las zonas fue Fussoir para transcodificar los Blu-ray de Cowboy-Bebop. Os dejo los archivos que usaron, por si a alguien le interesa echarles un vistazo.

http://www.solidfiles.com/d/35a4607b8a/

Las zonas están en el archivo "ep-XX-x264opt.txt", donde XX es el número del episodio.
06 Jul 2015, 14:59
Mensaje: #5

RE: [Tutorial] Usar el parámetro --zones para ahorrar peso sin sacrificar calidad

Interesante aporte :o
Justo hace un par de semanas me encontraba experimentando con esa misma serie. Tenía pensado encodearla, pero me desanimé porque es difícil lograr un peso "no tan alto" y ponerse a jugar con las zonas y los filtros para una serie con tanto grain durante 24 episodios es un trabajo pesado.

Voy a editar eso que dices. Lo di a entender con la descripción, pero creo que me hace falta dejarlo más en claro y con ejemplos.


Usuario(s) navegando en este tema: 1 invitado(s)