Publicado el Viernes 23 de Junio del 2006 @ 21:55 por Armonth.
A veces pasa que se prepara un capítulo fansubeado, se termina y no se encuentran errores, se hace la predistro (distribución entre los miembros del fansub para que luego ayuden a la distribución) y uno de los miembros encuentra un fallo.
Es algo poco habitual (al menos en el fansub en el que estoy) pero recientemente nos ha pasado algo de eso: El vídeo esta correctamente pero las cabeceras del contenedor salieron mal. Cuando las cabeceras están mal los reproductores intentan “adivinarlas” y el fallo puede pasar desapercibido. En Mplayer (de GNU/Linux) me encontré que sacaba un error y sólo reproducía el audio. El vídeo le fallaba la cabecera IDVIDEOFPS y por tanto no sabía a cuantos FPS (frames por segundo) estaba el vídeo.
La solución es sencilla, se demuxea (extraemos del contenedor el audio/vídeo en ficheros separados) y se muxea (se meten en un nuevo contenedor). Pero al hacer esto los CRC no coincidirán y por tanto hablamos de que cada persona estaría distribuyendo una copia distinta del mismo.
Entonces la solución pasa por usar xdelta un programa que hace las mismas funciones que un “diff” (aplicar un parche a un fichero) pero con binarios. El cual está disponible para Windows y GNU/Linux, yo utilizo la versión 1.1.3 disponible en Debian Sid como parte de la distribución (y que parece ser la versión estable también disponible para Windows).
Una vez que tenemos el vídeo “corregido” generamos un parche:
xdelta delta videomalo videobueno parche.diff
Donde videomalo el nombre del vídeo distribuido de forma incorrecta y videobueno el corregido y nos genera un fichero con nombre “parche.diff” el cual en nuestro ejemplo ocupa solamente 300KB.
Pasamos el parche a quien haga falta y luego para generar el vídeo bueno solo hace falta éste y el parche:
xdelta patch parche.diff videomalo videobueno
Y listo, con el “videomalo” y el parche nos genera el vídeo bueno. A partir de un fichero de 300KB nos hemos ahorrado distribuir entre 170-350MB de nuevo (lo habitual en el Fansubing dependiendo de la calidad de la fuente original) por persona.
El programa xdelta sirve para cualquier binario, es decir que teóricamente si se usara de forma generalizada podría servir para todo incluso para actualizaciones de software.