Grabando el escritorio de windows con ffmpeg

1 comentario

Me encontraba en windows y necesitaba grabar el escritorio completo, asi que en ves de irme por el camino fácil, se me ocurrió usar un programa que en GNU/Linux es una autentica navaja suiza, el famoso ffmpeg, que tiene versiones para varios sistemas.

Como estaba en windows, no quise tener problemas con las dependencias, así que me baje una versión ya compilada con las librerías incluidas (versión static) desde la pagina de Zeranoe.

A  diferencias de GNU/Linux, en windows no hay algo como el X11 de GNU/Linux que maneja toda la interfaz gráfica, por lo que no resulta tan fácil grabar un vídeo. Aun así hay un par de alternativas:

  1. Una es usar vfwcap pero este usa el ya obsoleto Video for Windows, así que busque algo mas nuevo.
  2. La segunda opción era usar dshow (basado en DirectShow), por lo que seguí esta ruta

Así que una vez que tenia ffmpeg funcionando, comprobé que dispositivos estaban disponibles en DirectShow haciendo

ffmpeg -list_devices true -f dshow -i dummy

El resultado fue el siguiente:

Hay dos dispositivos, uno de audio (llamado “Microphone (Realtek High Defini”)  y otro de video (“Sony Visual Communication Camera”), como esto lo hice en mi Laptop, estos dispositivos corresponden a la Webcam y su correspondiente micrófono, que esta integrada sobre la pantalla del equipo. Así que ya podía grabar todo lo que capturara la webcam y/o el microfono que tenia el Laptop.

Pero yo quería grabar lo que muestra mi escritorio, no la webcam. Así que para eso tenia que instalar algún filtro de DirectShow que pudiera reproducir la pantalla del equipo. En una búsqueda rápida por google se encuentran varios, como por ejemplo UScreenCapture (que tiene versiones de 32 y 64 bits) o el virtual audio/video capture grabberdevice, yo opte por este ultimo, ya que incluía un filtro para audio.

Así que lo instale y al hacer ffmpeg -list_devices true -f dshow -i dummy aparecían nuevos dispositivos, los que para utilizarlos, simplemente hay que hacer algo como esto:

ffmpeg -f dshow -i audio="virtual-audio-capturer":video="screen-capture-recorder" ...opciones...

donde -i especifica que dispositivos se están usando para capturar (en este caso se captura tanto el audio como el video, pero también se puede capturar solo uno de ellos) y  …opciones… son los distintos parámetros que acepta ffmpeg (que son muchisimos), por ejemplo si se hace:

ffmpeg -f dshow -i audio="virtual-audio-capturer":video="screen-capture-recorder" -r 30 -vcodec mpeg4 -q 10 salida.mp4

Resulta en un archivo llamado salida.mp4 que esta grabado con el codec de vídeo mpeg4 a -r 30 (30 Frames por segundo) con una calidad -q 10 (1 es la mejor y 30 la peor)

Aquí pueden ver un resultado en bruto sin ninguna edición (youtube bajo en algo la calidad ya que el vídeo original estaba a la resolución real de mi escritorio 1366×768)

 

Anuncios

Viendo el avance de un proyecto con gource

Deja un comentario

El mes pasado me entere de la existencia de gource, un programa que toma un repositorio git o mercurial (aunque con algunos scripts se puede adaptar repositorios de subversion) y va mostrando su progreso en el tiempo en forma de un “árbol” animado.

Básicamente toma el log (registro de cambios) completo del repositorio (fecha, hora, autor del commit y los archivos agregados, modificados o eliminados) y con esta información se va mostrando los cambios en el tiempo, representando los directorios dentro del repositorio como ramas (que parten de un punto central, la “raíz” del repositorio) y los archivos como hojas/puntos en las distintas ramas. Creando un efecto bastante curioso.

Para probarlo use el repositorio mercurial de uno de mis proyectos, pysum (un programa que calcula sumas de verificación como CRC32, MD5, etc. de manera gráfica) y el resultado fue el siguiente vídeo, en donde se aprecia como se van actualizando archivos, creando nuevos archivos y directorios:

Claro que también soporta gravatars y muchos cambios como lo muestra este vídeo del desarrollo de git (por cierto Linus Torvalds es una maquina, fíjense en el video cuantas veces aparece)

Aunque el efecto es mas llamativo en proyectos grandes, que tengan muchos archivos por ejemplo el de LXDE

Link: http://code.google.com/p/gource/

permisos en Linux, Chmod

1 comentario

Un pequeño recordatorio.

Para modificar los permisos de un archivo en GNU/Linux desde una terminal se usa chmod, de la forma

chmod [opciones] XXX Archivo/Directorio

En donde XXX es el valor numérico de los permisos de lectura, escritura y ejecución (para el Propietario, Grupo y Otros), estos valores son:

  • 0 = Ningún permiso
  • 1 = Permiso de Ejecución
  • 2 = Permiso de Escritura
  • 3 = Permiso de Escritura y Ejecución
  • 4 = Permiso de Lectura
  • 5 = Permiso de Lectura y Ejecución
  • 6 = Permiso de Lectura y Escritura
  • 7 = Permiso de Lectura, Escritura y Ejecución

Ahora se señalan en el orden Propietario (el dueño del archivo), Grupo (los usuarios dentro del grupo al que pertenece el archivo) y Otros (los demás usuarios).

Por ejemplo: chmod 644 archivo significa que el propietario puede Leer y escribir (6), el Grupo solo puede Leer (4) y Otros solo puede Leer (4)

Otro ejemplo: chmod 764 archivo significa que el propietario tiene todos los permisos (Leer, Escribir y Ejecutar) (por el 7), el Grupo solo puede Leer y escribir (6) y Otros solo puede Leer (4)

Ahora el orden de estos números para representar los permisos no son al azar, sino que se basan en reglas binarias, así si hacemos una tabla (con los valores Lectura, escritura y ejecución) y vamos rellenando con 1 (Si) y 0 (No), así obtenemos el valor numérico de los permisos (transformándolos de binario a decimal):

Lectura (r) Escritura (w) Ejecución (x) Valor
0 0 0 = 0
0 0 1 = 1
0 1 0 = 2
0 1 1 = 3
1 0 0 = 4
1 0 1 = 5
1 1 0 = 6
1 1 1 = 7

Como ven el valor no es al azar.

xmms ha muerto; larga vida a xmms2

2 comentarios

Durante mucho tiempo utilice a xmms como mi reproductor preferido, ya que se asemejaba a WinAmp aunque mas ligero, sencillo, reproducía prácticamente todo archivo de audio y tenia plugins para hacer casi de todo. Pero lo malo es que estaba bastante viejo (usaba gtk1 ) y últimamente estaba desapareciendo de muchas distros (debian incluida), así que decidí probar xmms2 (ante que alguien mencione amarok, intento evitar las librerías qt en mi sistema).
xmms2_logo
Lo bueno es que casi no consume recursos del sistema, aunque la primera vez cuesta entender como funciona, ya que sigue un modelo de cliente/servidor, o sea el XMMS2 funciona similar a un daemon sin interfaz gráfica y uno se conecta a él a travez de un cliente. En un principio esto parece raro, pero tiene su gracia, ya que permite hacer cosas como que si estas fuera de casa desde otro equipo puedas escuchar la musica que hay en tu pc.

Siguiendo con el tema, uno puede controlar directamente xmms2 desde una terminal, o usar algún cliente que sirva de frontend (como gxmms2, esperanza, o cualquier otro de la lista), en lo personal aun no encuentro ninguno que me convenza al 100% pero solo es cuestión de tiempo (mientras voy a seguir controlándolo desde una terminal, ya que no me importa demasiado que quede funcionando en el fondo)

Otra cosa bastante agradable es que al igual que su antecesor tiene muchos plugins, como uno para karaoke aunque entre ellos destaca el xmms2-scrobbler que envía la lista temas escuchados a lastfm (para configurarlo miren por aquí)

En definitiva me gusto bastante (va a ser el remplazo de mi antiguo reproductor), lo único malo es que aun no encuentro un frontend que me convenza completamente, aunque eso se puede arreglar. Lo destacable es que funciona en varios sistemas (incluso el de las ventanas)

Compilando paquetes con apt-get

1 comentario

Necesitaba transformar unas imágenes .img .ccd (archivos de CloneCD) a una .iso, para ello se utiliza el programa ccd2iso, el problema es que solo estaba para debian testing y sid. Así que aprovechando que voy a tener que compilarlo para etch, les voy a explicar una forma muy sencilla de compilar usando apt y los repositorios de debian (y aprovechando que estos ya están debianizados), usando de ejemplo el ccd2iso

Ates de comenzar es bueno comprobar que tengamos algunos paquetes que normalmente se usan al compilar (build-essential, fakeroot) y luego hacemos lo siguiente:

1. Abrimos un terminal o consola y creamos un directorio de trabajo dentro de tu home (para que no tengas los archivos que se irán formando desordenados), en este ejemplo el directorio se llamara “lab”:

daniel@skynet:$ mkdir lab

2. ingresamos al directorio con la siguiente orden:

daniel@skynet:$ cd lab

3. Luego ingresando como root (usado su en debian, o anteponiendo sudo las ordenes que corresponden en ubuntu, o sea las que tienen # ) editamos el sources.list, para ello:

# nano /etc/apt/sources.list

Agregamos al final del fichero sources.list una linea que apunte al código fuente (sources) del paquete (en este caso agregare la de debian testing, aunque también sirve la de sid) :

deb-src http://ftp.cl.debian.org/debian/ testing main non-free contrib

Y luego guardamos Ctrl+O y salimos del editor Ctrl+X

4. Actualizamos la lista de paquetes con:

# apt-get update

5. Instalamos un par de paquetes muy útiles para compilar:

# apt-get install build-essential fakeroot

Nota: build-essential son una serie de herramientas que se usan al compilar y fakeroot permite emular al usuario administrador, ya que no es recomendable compilar como root porque en caso de algún error puedes afectar al sistema

6. Luego le indicamos a apt-get que instale los demás paquetes que se van a necesitar para compilar el ccd2iso:

# apt-get build-dep ccd2iso

7. Nos desloguemos de la cuenta root (o dejan de usar sudo en ubuntu) y le indicamos a apt-get que descargue las fuentes y luego las compile con:

daniel@skynet:~/lab$ fakeroot apt-get -b source ccd2iso

Listo, ahora dentro del directorio lab que creaste en tu home hay una serie de archivos, entre ellos el paquete .deb creado, el que puedes instalar usando gdebi o en un terminal haciendo # dpkg -i nombre_paquete.deb

eso es todo 🙂

pando en debian amd64

1 comentario

Necesitaba descargar un archivo .pando (es un Cliente P2P), personalmente no me gusta el sistema, ya que es cerrado y el soporte en Linux está muy poco cuidado (lo actualizan cuando deja de funcionar), pero como necesitaba descargar el archivo les dejo una pequeña explicación

Lo primero que tuve que hacer es descargar el programa, la versión de linux no esta directamente en la pagina, sino que esta escondida en el foro oficial del programa, allí descargue la ultima versión y luego la descomprimí a mi home.

Luego de eso comprobé si cumplía con las dependencias (comprobe que yo ya las tenia instaladas), pero en caso de que no las tengan, un simple apt-get lo soluciona:

# apt-get install libgtk2.0-0 libuuid1 libexpat1 zlib1g libstdc++5

Luego en un terminal hice:

$ export PANDO_HOME=/home/TU_USUARIO/pandodl

Y en teoría debió haber funcionado al ejecutarlo, por ejemplo así:

$ sh ~/pandodl/pandodl

Pero como en mi nuevo juguete le puse debian para AMD64, no funciono y me dio un lindo error:

pandoDownloader: error while loading shared libraries: libuuid.so.1: cannot open shared object file: No such file or directory

Esto es debido a que pando solo tiene una versión para 32bits y se olvidaron por completo de los que tenemos una de 64, por lo tengo en el sistema la librería de 64 bits pero no la de 32, que es la que importa. Así que instale ia32-libs (con esto puedo usar libreias de 32 bits en un sistema de 64 bits) haciendo:

#apt-get install ia32-libs

Luego busque que paquete tenia la libreria del error (libuuid.so.1), era libuuid1 (que útil la búsqueda de paquetes de debian) así que me baje el paquete para i386 (32 bits) y luego como root hice:

# dpkg -X nombre_del_paquete /emul/ia32-linux/

Donde en nombre del paquete hay que poner el nombre que corresponde al paquete que descargado anteriormente.

Luego volvi a ejecutar pando y el mismo error pero con otras librerias, así que repetí el proceso de buscar las librerías correspondientes en http://packages.debian.org/ (al final de la pagina esta la opción de “paquetes que contienen ficheros con ese nombre”, usenla así los encontraran mas rápido), luego bajarme la versión para i386 y después ejecutar dpkg -X nombre_del_paquete /emul/ia32-linux/ Después de repetir esto un par de veces para obtener cada una las librerias que necesitaba (faltaban), logre que pando funcionara en mi sistema. Ahora solo queda esperar a que se termine de bajar el archivo 🙂

Almacenes paris vende gentoo vista

4 comentarios

Tal como dice el titulo, almacenes paris vende este nuevo y revolucionario sistema….. 😆 😆 Si tuvieran la debian edición entonces si me lo compraría sin pensarlo

Les dejo una captura del sitio para que vean el error que cometió paris (pueden hacer click en la imagen para verla a mayor tamaño)

Y por acá pueden ver la pagina de donde se obtuvo la imagen, eso si es que aun no se han dado cuenta y la han cambiado.

Older Entries