sábado, 25 de enero de 2014

Habrá acabado de renderizar?

Qué encontrarás en esta entrada?
  • Script para analizar un vídeo mientras se genera.
  • Descripción del algoritmo.
  • Imágenes del resultado (envío de informes periódicos). 

Hoy, en Astaroth's World, vamos a hacer frente de manera directa y sin titubear a una de esas preocupaciones universales de nuestra sociedad actual: habrá acabado ya de renderizar mi animación?!?!

Creo que si todos y cada uno de nosotros nos pusiésemos a pensar cuál es la pregunta más trascendental sobre las inquietudes del hombre de a pie de hoy en día, concluiremos que la respuesta no es "42", sino la que he citado un poco más arriba.

Sarcasmo a parte, expongo el problema: usuario de Linux, que quiere hacer sus pinitos en animación 3D. Se baja Blender, un excelente programa gratuito para tal fin. Al finalizar el modelado y configurar su animación como quiere, lo deja renderizando (ese proceso en el que el ordenador, tomándose su buen tiempo, pone en marcha todas tus órdenes para ir construyendo poco a poco el vídeo que tenías en mente).

Hasta ahí genial, pero la gente tiene más cosas que hacer (algunas fuera de casa), y tiene que dejar formándose su pequeña creación, a veces durante largo tiempo, sin saber nada de ella. No es justo!, verdad? Por eso propongo una solución para que nunca más ninguna creación esté abandonada a su suerte: un sistema de alertas periódico!

El script (para bash shell de linux) que os presento a continuación, básicamente analiza un vídeo en proceso de generación y manda un informe al correo cada cierto tiempo (configurable) con el estado del mismo. Para ello, pide como único argumento el número total de fotogramas que va a tener la animación, que en el caso de una animación en Blender, que es para lo que se ha diseñado, este número lo estableces tú mismo:


Con este dato, y los que lee del vídeo en proceso de generación, construye un informe con:

  • Fecha y hora del análisis del vídeo.
  • Duración hasta el momento (en segundos) del vídeo generado.
  • Tamaño en el disco hasta el momento del vídeo generado.
  • Fotogramas hasta el momento del vídeo generado.
  • Porcentaje de completitud del vídeo.
  • Estimación del tiempo hasta la finalización del proceso.
  • Envío de imagen (este paso puede fallar según el estado del vídeo, por eso a veces se envía imagen y otras no).

El cual tiene este aspecto (informe real generado por el script):


*** INFORME SOBRE EL ESTADO DE SU ANIMACIÓN - 24/01/2014 (23:36) ***
=================================================================================

FECHA (HORA) | DURACIÓN | TAMAÑO | FOTOGRAMAS | COMPLETITUD | ETA | ENVÍO IMAGEN
--------------------------------------------------------------------------------------------------------------------------
24/01/2014 (23:40) | .25 s | 96K | 6 de 100 fots. | 6% | 25/01/2014 (00:32) (0:52:29.00) | SÍ
24/01/2014 (23:41) | .95 s | 48K | 23 de 100 fots. | 23% | 24/01/2014 (23:49) (0:7:42.00) | SÍ
24/01/2014 (23:43) | 1.70 s | 60K | 41 de 100 fots. | 41% | 24/01/2014 (23:49) (0:5:37.61) | SÍ
24/01/2014 (23:45) | 2.37 s | 28K | 57 de 100 fots. | 57% | 24/01/2014 (23:49) (0:4:36.81) | SÍ
24/01/2014 (23:47) | 3.00 s | 1,2M | 72 de 100 fots. | 72% | 24/01/2014 (23:50) (0:3:12.26) | NO
24/01/2014 (23:48) | 4.16 s | 1,7M | 100 de 100 fots. | 100% | 24/01/2014 (23:48) (0:0:0) | SÍ
--------------------------------------------------------------------------------------------------------------------------
24/01/2014 (23:48) - ¡El programa ha finalizado!
--------------------------------------------------------------------------------------------------------------------------

Este informe, y una miniatura de la parte más reciente del vídeo generado (en caso de que ésta haya podido ser generada), se envían a un correo incluido en el script, de tal manera que nos llegaría así a nuestro ordenador:

Informe parcial con un fotograma adjunto

Informe completo (al final del proceso)

Hoy en día, que cada vez es más frecuente disponer de un móvil con conexión a Internet, también podemos disfrutar de estas alertas en nuestro móvil, a través de cualquier lector de correo electrónico:



El funcionamiento del script es el siguiente:

  • Realiza una copia ("temp.avi") del vídeo que se está generando (en general, corrupta). Este paso asume que sólo hay un archivo de vídeo (con extensión ".avi") en la carpeta, y que éste no se llama "temp.avi" ó "temp2.avi", puesto que machacará dichos archivos.
  • Sobre esa copia, genera otra ("temp2.avi") en la que corrige errores de índice (con "mencoder").
  • A partir de la copia corregida, se extraen los datos del vídeo (con "mplayer").
  • Con esos datos se calcula un fotograma próximo al final (con "mplayer") y se extrae para mandarlo. También se comprime (con "convert") para que no sature el correo.
  • Con los mismos datos, se construye el informe que se almacena en la carpeta del script (en formato ".txt").
  •  Una vez recopilado todo, se analiza si hay que enviar el informe con o sin imagen y se envía (con "mutt", el cual necesita una configuración previa).

Podéis descargaros el script de aquí. Recordad que deberéis cambiar el correo electrónico que viene en el script, configurar mutt, cambiar los permisos del archivo para que sea ejecutable, colocarlo en la carpeta en la que esté el vídeo generándose (que debe ser el único ".avi" de la carpeta) y ejecutarlo. Puede que os aparecerá algo como esto:


El programa está preparado para no dar error cuando el vídeo generado es insuficiente como para trabajar con él. Como se supone que ese vídeo está creciendo, hará comprobaciones periódicas y cuando cumpla con el tamaño mínimo, empezará a enviar los informes:


Los tiempos, así como cualquier otro parámetro, son configurables desde dentro del script. A mi me gusta que las comprobaciones sobre cómo es de corto el vídeo se hagan cada 10 minutos (600 segundos) y que el informe se envíe a cada hora (3600 segundos).

Ya nunca más estaremos en el trabajo o en cualquier otro sitio desinformados del estado de nuestra animación, mientras ésta se va creando poco a poco desde casa.

No hay comentarios:

Publicar un comentario

Querido astarothista!,

Si te ha gustado la entrada y quieres dejar constancia de ello, tienes alguna sugerencia para completarla o corregirla, quieres mostrar tu opinión respecto a algo de lo que se haya hablado en esta entrada (con respeto) o simplemente quieres dejarme un mensaje a mi o a la comunidad, no dudes en comentar ;)!

Recuerda que también estamos en Facebook y en Google+.