pedroreina.net

video.py
Índice del resto de la página
Desde aquí puedes saltar a cualquiera de los puntos de la página indicados a continuación.
Invocación del programa
Parámetros del archivo
En el archivo se deben especificar tres valores:
Acciones
En el archivo se escribe en cada línea una acción que define qué se debe añadir al vídeo. El tipo de acción puede ser: Todas las acciones se identifican con claves de cuatro letras. A continuación de la clave se escribe el tiempo que debe actuar, en segundos con decimales.
Generación de imágenes
Es posible añadir imágenes en un vídeo con tres acciones:
Movimiento
Transiciones
Transición mezcla
Transición cortina
Transición abanico
Transición bandasvert
Transición quitar
Transición poner
Transición empuja
Transición rectangulo
Transición aparece
Transición desaparece
Transición aleatorio
Transición mosaico
Transición cascada
Transición cuadrados
Transición circulos
Transición peano
  • Esta transición se llama así en honor a la curva de Peano, que consiste en una curva que llena completamente un rectángulo. Las curvas de Peano normalmente presentan algún tipo de simetría, pero las de esta transición son aleatorias.
  • El cálculo de la transición es laborioso y no dura un tiempo determinado, por lo que para ser más eficiente está programado en C y requiere una instalación adicional que se explica más abajo.
  • Una línea que recorre toda la imagen va haciendo aparecer la imagen siguiente, hasta que aparece completa. Yo solo he llegado hasta líneas de 54 cuadrados, y puede tardar algunos segundos en un i5. A partir de esos valores, habría que ver caso a caso hasta qué longitud se puede llegar en un tiempo razonable.
  • El primer parámetro es el tamaño de los cuadrados que formarán la línea; si no se le pasa ningún valor, o el valor 0, se formarán los cuadrados del mayor tamaño posible que admitan las dimensiones del vídeo.
  • Como segundo parámetro se puede elegir el punto en que debe comenzar la línea, con las opciones ya habituales en otras transiciones del programa de no, n, ne, o, c, e, so, s y se. Si no se especifica el parámetro, se toma como valor por defecto no. Si se desea usar este segunfo parámetro, es obligatorio usar el primero.
  • Ejemplos:  >>>   >>>   >>> 
Efectos
  • La acción que define un efecto es efec.
  • Cada efecto requiere un primer parámetro que indica la duración total en pantalla del efecto.
  • Cada efecto requiere un segundo parámetro que indica el archivo de imagen que va a recibir el efecto.
  • Cada efecto requiere un tercer parámetro que indica el nombre del efecto que se va a emplear.
  • Cada efecto puede tener opcionalmente un cuarto parámetro que indica si el efecto se aplicará de forma directa (desde la imagen hasta el efecto aplicado al máximo) o inversa. Se expresa como d o i. El valor por defecto de este parámetro es d.
  • Opcionalmente, se puede añadir un quinto parámetro que indica los tiempos que deben permanecer las imágenes inicial y final en pantalla. Los tiempos se escriben separados con un guión, pueden llevar decimales, su suma no puede ser mayor que el tiempo total otorgado al efecto y cualquiera de los tiempos puede ser cero. Se se desea utilizar este quinto parámetro, es obligatorio escribir el cuarto. El valor por defecto de este parámetro es 0-0.
  • Los efectos admiten tener transiciones delante o detrás, ya que se usará la imagen inicial o final del efecto para crear la transición, aunque se haya definido tiempo cero para alguna de ellas.
Efecto difuminar
  • En modo directo, la imagen se va difuminado cada vez más y llega un momento en que apenas se distingue nada.  >>> 
  • En modo inverso, aparece una mancha borrosa y poco a poco se va convirtiendo en la imagen precisa.  >>> 
Efecto bn
  • En modo directo, la imagen va perdiendo color hasta que se convierte en una imagen en blanco y negro.  >>> 
  • En modo inverso, aparece una imagen en blanco y negro que va tomando color hasta convertirse en la imagen original.  >>> 
Descarga
  • El programa se entrega sin ninguna garantía de funcionamiento correcto. Úsalo bajo tu responsabilidad.
  • El programa va obteniendo nuevas versiones según lo voy desarrollando, pero no sigo la historia de las versiones. Al ejecutar el programa se ve el número de versión, que es la fecha en que lo escribí, en formato ISO.
  • El programa se ha desarrollado, probado y utilizado exclusivamente con el sistema operativo Debian GNU/Linux 7; en ningún momento se ha tomado en consideración el uso de ningún otro sistema operativo.
  • El programa se entrega con licencia Dominio público.
  • Si todo lo anterior no te ha quitado las ganas de descargar el programa, pues aquí lo tienes: video.py.
  • Si deseas usar la transición peano debes descargar el archivo peano.c y compilarlo con la orden

    gcc -o peano peano.c
Instalación
  • Para que el programa arranque no es necesario instalarlo, basta que tenga permisos de ejecución e invocarlo con el camino (path) completo hasta llegar a él. Si se copia en algún directorio que ya esté incluido en el PATH, solo será necesario invocarlo con su nombre.
  • Para que el programa funcione es necesario que estén instalados Python 2.7 y ImageMagick.
  • Para usar la transición peano hay que especificar en el código del programa video.py la ruta al ejecutable que creaste al compilarlo.
  • Para generar el vídeo es necesario disponer de avconv.
Utilización
  • Se crea un directorio vacío para contener todos los archivos del proyecto.
  • Se copian al directorio todas las fotos que se vayan a usar con las acciones foto o efec; deben estar en formato PNG y tener exactamente las dimensiones del vídeo.
  • Se copian al directorio todas las fotos que se vayan a usar con las acciones movi o troz; pueden estar en cualquier formato que admita ImageMagick y pueden tener cualquier dimensión.
  • Con un editor de textos se crea el archivo con los tres parámetros obligatorios y todas las acciones deseadas. Puede tener cualquier extensión; yo uso vid.
  • Si el primer carácter no blanco de una línea del archivo es el carácter almohadilla ('#'), la línea se considera un comentario y no se tiene en cuenta para la definición del vídeo.
  • Se ejecuta el programa con el nombre del archivo como parámetro; si hay errores, el programa informa de ellos; si no hay errores, el parámetro -i es útil para ver toda la información que se puede recoger del archivo de texto. Si no hay errores y no se ha usado el parámetro -i, se generan todas las imágenes necesarias para crear el vídeo, todas dentro de un directorio dentro del directorio del proyecto, que tendrá el nombre sin extensión del archivo de texto.
  • Si se modifica el archivo de texto y se vuelve a invocar el programa, solo se recalcularán las modificaciones que haya habido. Si se desea realizar todo partiendo de cero, es imprescindible eliminar a mano completamente el directorio de trabajo generado.
Notas personales
  • ¿Por qué escribir un programa que hace lo mismo que cientos de programas más, incluso existiendo ya uno que trabaja desde la línea de órdenes a partir de un archivo de texto? Para aprender, para divertirme y para tener más control.
  • Todo comenzó cuando compré una cámara de fotos nueva, un cuerpo de Canon 70D. Esta cámara graba vídeos en FullHD con buena calidad. Me animé a hacer uno. Previendo la posibilidad de que en un futuro grabe vídeos de ayuda a estudiantes de matemáticas de enseñanza media, hice una cuenta en vimeo.com y lo subí.
  • A los pocos días me llegó un intervalómetro que había encargado por Internet. Había pensado la posibilidad de programarlo yo mismo con un Arduino o con un microprocesador ATmega, pero al final desistí y me fui por el camino fácil.
  • Con la nueva cámara y el intervalómetro, me animé a probar a ver si me salía un vídeo uniendo fotos, un vídeo a cámara rápida (en inglés se usa el conocido término timelapse). Efectivamente, con la ayuda de ffmpeg, lo conseguí; y lo subí también a vimeo.com.
  • En una salida a un bonito pueblo gallego volví a hacer otro vídeo a cámara rápida, pero esta vez lo acompañé de música con licencia libre que para mi agradable sorpresa pude encontrar en Internet.
  • Así las cosas, dada mi afición a la fotografía, me animé a hacer un vídeo con unas cuantas fotos tomadas en una salida para disfrutar de la nueva cámara. Era muy simple, no tenía transiciones, solo las fotos una tras otra.
  • Entonces se me ocurrió pensar que quizá ya alguien habría unido avconv con llamadas por línea de órdenes para generar vídeos con más posibilidades. Encontré diascope, que me encantó, y lo usé para mi siguente vídeo, este ya con un tipo de transición.
  • Cuando vi las ideas que usaba diascope para generar los vídeos, descubrí una gran oportunidad para mejorar mi nivel de programación en Python. Es esos momentos estaba estudiando varios libros sobre este lenguaje y pensé que escribir yo mismo un programa en Python que aplicara las ideas de diascope me haría mejorar mucho.
  • En un mes pasé de ser capaz de producir un vídeo básico con una transición a programar dieciocho transiciones (con varios parámetros cada una) y dos efectos. Iba creando nuevos vídeos y programando más ideas en Python simultáneamente. Las dos tareas se complementan bien.
  • Y el proceso continúa...
Posibilidades para seguir
Mejor visto con cualquier navegador HTML 4.01 válido CSS válido