jueves, 22 de septiembre de 2011

Cómo hacer un gif con escenas de un video .avi en Ubuntu (Otro Howto)

Google: unnecessaryquotes.com

Creo que el título ya es “per se”  bastante explicativo.

   Esta entrada emanó de que, en su día, existían en youtube varios clips de Robert de Niro haciendo el “queteveo” en la película “Los padres de ella” (Meet the Parents, 2000). No dí en guardarme ninguno.
  El fin de semana se me ocurrió contestar en un foro una intervención que pedía a gritos mi respuesta con un soneto tan picajoso como jocoso pero no queriendo herir de sobremanera consideré la opción de ir allanando la intervención con este clip.  
Para mi sorpresa, no pude encontrarlo en youtube.  Así que, procedí a crearlo yo.



 Uno se descarga la "pelí" y una vez en el equipo;  comprobada; aplico el editor de vídeo PiTiVi con idea de quedarme con el fragmento del .avi de unos 10 o 15 segundos que me interesaba...Cosa que no pude hacer.
   Se daba el caso que, seleccionando los 4 fragmentos que constituirían el vídeo de salida al renderizar me hacia de nuevo una película del mismo tiempo que la original en la que se disfrutaba de una estupenda pantalla negra hasta que llegaba el momento de los fragmentos seleccionados. Tornando de nuevo a la misma tras ellos.




  Recordé que, en su día, a mi profesor de Linux se le "escapó que, en modo consola, se podía hasta cortar vídeos" (y digo escapó porque tantas excelencias contó de este sistema operativo que hubiéramos hecho corto con 5 años con él para dominarlo) y con esa directriz me he documentado y me he puesto a realizar lo que precisaba  y rizar el rizo.




 Para los que estos días de asueto, en lo que a escribir en el blog se refiere, me han echado en cara que   lo descrito es demasiado difícil de entender  --bien por el vocabulario empleado (iberoamericanos y algún anglófono) o bien por lo rebuscado de lo descrito (españolísimos)--, indicarles que:
  • A día de hoy el 38% de las visitas realizadas al blog son desde un sistema operativo distinto de Windows, siendo alrededor de un 20% éstas antes de la publicación de "la entrada de  las conio.h" y la entrada de "la desinstalación de MySQL".
  • El blog mantiene su idea inicial de servir para publicitarme  y de cuaderno de bitácora o diario a mis evoluciones en mi completa migración a mundo Linux.
  • Sin embargo, siguiendo la premisa de: "Uno de verdad sabe algo cuando es capaz de trasmitirlo a la mente más obtusa" intentaré (bajo pena de extender demasiado las entradas) explicar un poco mejor cada paso.





Caso titular : Trabajando con un avi.

¿No tenemos mplayer?
Pues ala!
$sudo apt-get mplayer




Haremos uso de mplayer que requiere las starX y lleva MEncoder para el tratamiento de formatos .avi  pero lo usaremos en linea de comandos y procurando crear un gif animado.

1.- Podríamos hacer una visualización previa de lo que será el gif con la linea base de comando:
      mplayer -ao null -loop 0 -ss hh:mm:ss -endpos 5 rutaafile.avi
 
     Indicar que -ss indicará en hh:mm:ss o bien en hh:mm:ss:lll (Siendo lll, milisegundos) el punto de partida.
     Y endpos 5 indica 5 segundos de tramo desde el punto de partida.
      Con rutaafile indico como llegar la fichero (evidentemente si nos encontramos ya en su directorio a la hora de ejecutar en terminal la orden bastará con el nombre.avi).

  Indicar que en la instrucción estamos haciendo un loop infinito por tanto tendremos que cerrar el terminal  para finalizar la visualización.


2.- !A construir el gif!


 mplayer mat.avi -ss 00:49:20.000 -endpos 20 -vf scale=220:120 -vo gif89a:fps=20:output=out.gif -nosound
 
    Desmembrando la instrucción:
       Con mplayer sobre el fichero que he llamado mat.avi con posición de salida en 49 minutos 20 segundos toma los siguientes 20 segundos del fichero.
       Usa una escala 220:120  --Lo de la escala es secundario puesto que el programa hará por mantener el ratio de la fuente. Ya le puedes poner 160:120 que te lo deja en 220:120 en este caso de pruebas--.
       Créame un gif ( -vo gif89a:fps=20:output=out.gif) con nombre out.gif en la carpeta en que me hallo; De 20 frames por segundo. (A más frames más peso, obvio)


    El gif se construye con una profundidad de 24 bit lo cual para mi y mi propósito es más que suficiente.

    


Salida 3,2,1...
SED BUENOS!