Check the new version here

Popular channels

Convirtiendo Gifs en Videos para el WhatsApp con Python



Hola Taringueros... acá compartiendo mi primer post, que espero les sea util.

La cosa viene más o menos asi : Un dia me encontraba webeando un poco en Poringa... si si... Poringa... y viendo los Shouts me dije... -"Mmmm que buen Gif para mandarselo a mi mujer por Whatsapp e ir calentando el ambiente para la noche" jaja!! y si... peeeero... el whatsss no soporta el envio de Gifs pero si de videos. Ya se que no es lo mismo ya que la acción del gif se observa inmediatamente pero bueno... algo es algo.... jaja!

Investigando me enteré de 2 herramientas que me ivan a poder ayudar con la tarea, una es ImageMagic (para poder desarmar el gif en cuadros secuenciales) y la otra Ffmpeg (para generar el video uniendo los cuadros, poniendo un loop y repitiendo el mismo x cantidad de tiempo). Como me gusta programar y estoy aprendiendo Python por mi cuenta, puse manos a la obra para usarlo de nexo entre las 2 aplicaciones y automatizar el proceso.

Primero asegurense de tener instaladas las herramientas , yo uso Lubuntu:

ImageMagick

sudo apt-get install imagemagick php5-imagick

Si tienen problemas para instalarlo.

http://askubuntu.com/questions/471045/14-04-doesnt-have-package-imagemagick


Ffmpeg

No viene más por defecto en Lubuntu asi que sigan las instrucciones de este link

http://www.taringa.net/post/linux/17840657/Instalar-ffmpeg-en-Ubuntu-14-04-LTS.html


Bueno ahora si, les comparto el código en Python.
========================================================================
# -*- coding: utf-8 -*-
# -*- gif2video.py creado por Javi_itz -*-
# -*- Uso: python gif2video.py /ruta/imagen.gif -*-

import sys
import os
import shutil
from subprocess import call

if os.path.isfile(sys.argv[1]): # Verifico que el Gif exista
        camino, archivo = os.path.split(sys.argv[1])     # Separo el Path del archivo
        nombre, ext = archivo.split("." )      # Separo en Nombre y Extension
        dirtemp = "temp2"   # Dir. temporario

        print "------------------------"
        print "Convertidor GIF a Video"
        print "------------------------"
        print "nConvirtiendo: " + archivo

       # Duracion del video - Cuanto ha de repetirse el loop
       duracion = raw_input("t>Ingrese duración del video en seg.:" )

       os.mkdir(dirtemp) # Creo Dir temporario para desarmar el Gif en frames

       # Armo cadena del comando del ImageMagic con parámetros necesarios
       comando1 = "convert -coalesce " + sys.argv[1] + " jpg:" + dirtemp + "/" + nombre +      "%04d.jpg"
       cdo1_sep = comando1.split(" " )      # Separo el comando para poder usar Call
       call(cdo1_sep, shell=False)       # Ejecuto el comando de ImageMagic con Call

        print "Generando video..."

        # Armo cadena de ffmpeg con loop, fps 23, codec mp4 y parámetros
        comando2 = "ffmpeg -loop 1 -r 23 -i " + dirtemp + "/" + nombre + "%04d.jpg -vcodec mpeg4 -q:v 5 -t " + duracion + " " + nombre + ".mp4"
        cdo2_sep = comando2.split(" " )     # Separo el comando para poder usar Call
        call(cdo2_sep, shell=False)         # Ejecuto ffmpeg llamandolo con Call

        print "Eliminando archivos temporales..."
        shutil.rmtree(dirtemp, ignore_errors=True)       # Elimino Dir temporario

         print "Video generado!"
else:
         print "No existe el archivo" # Sino existe el Gif

====================================================================


La forma de ejecutarlo en la consola es:

>python gif2video.py /ruta/imagen.gif

El resultado será un video MP4 con la duración en segundos que le hayan dado ubicado en la misma carpeta donde esta el script python.
Se me ocurre que podria almacenarlos en una carpeta, montar un servicio SFTP en mi Lubuntu, accesarlo desde mi Android y poder asi acceder a los videos jaja!.

Saludos a todos!

0
0
0
0
0No comments yet