jueves, 3 de julio de 2008

Cómo hacer un vídeo a partir de una foto en Linux?

Seguimos con los scripts chorras para transformar cosas de un formato a otro, como este que pasaba de .avi a .dv, o este otro, que hacía varias transformaciones en un sólo programa :p.

Hoy nos vamos a centrar en hacer un vídeo utilizando unas cuántas imágenes estáticas. Está pensado, por ejemplo, para hacer un slideshow (un vídeo de fotografías pasando cada cierto tiempo), o para poner una imagen estática durante cierto tiempo en un vídeo... o incluso para hacer una animación a base de unir fotogramas sueltos.

El anterior script que colgué (en el que las opciones 2 y 3 permitían hacer lo que haremos con este nuevo script), no tenía en cuenta que el número de fotogramas por segundo en algunas ocasiones no es un parámetro con el que podamos jugar, sino que es un valor dado. Por ejemplo, si queremos unir varios fragmentos de vídeo para formar uno mayor, es muy aconsejable que todos tengan los mismos fotogramas por segundo (frames per second - fps).

Antes, si queríamos un vídeo en el que cada fotografía tardase un segundo en desaparecer, realizábamos un vídeo a 1 fps. Ahora vamos a suponer que los fotogramas por segundo es un valor intocable, por ejemplo 25 fps, pero queremos que nuestra foto siga durando un segundo... qué hay que hacer? Meter 25 copias iguales de esa foto. Pues eso es lo que hace este script, diciéndole cuál es el fps de nuestro vídeo, y cuánto tiene que durar cada imagen, multiplica las imágenes y hace un vídeo con los fps correctos.

El único requisito es que las fotos estén todas en una carpeta y tengan como nombre:

número.JPG

Donde "número" es el número de foto, que tiene que tener tantas cifras como el último de ellos. Por ejemplo, si hay 100 fotos sería:

001.JPG, 002.JPG, ... , 100.JPG

Si hubiese 1000, sería:

0001.JPG, 0002.JPG, ... , 1000.JPG

Y así sucesivamente.

El script en concreto, es el siguiente:



Podéis ver un ejemplo de cómo funciona en el siguiente tutorial:


Más información sobre conversiones multimedia en la Guía Ubuntu.

Recordaros que podéis ver más vídeo-tutoriales míos en:

http://www.veoh.com/channels/tutoriales


Nota:
Es script tal y como viene en la imágen de arriba tiene un pequeño gran error :p!, y es que sólo funciona con valores enteros (vamos, que no podemos poner que una foto dure medio segundo, por ejemplo). Esto se soluciona cambiando la línea que pone:

m=`expr $s \* $f`

Por esta otra:

m=`echo "$s*$f" | bc`

En el script que os podéis descargar de esta página, ya está corregido ese fallo.

Otra cosa a tener en cuenta es que el número de fotogramas por segundo multiplicado por el número de segundos que dura cada foto, ha de ser igual o mayor que uno. En otras palabras, este script puede ralentizar una animación todo lo que queramos, pero nunca acelerarla más de los fotogramas por segundo que le asignemos.

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+.