Mostrando entradas con la etiqueta Video. Mostrar todas las entradas
Mostrando entradas con la etiqueta Video. Mostrar todas las entradas

GSVideo 0.4.5


La librería de video para Processing GSVideo publicó una nueva versión, la gsvideo 0.4.5.

Como novedad trae la implementación del método GSCapture.list(), para listar los dispositivos de captura conectados. Este método asume que el elemento de fuente es v4l2src, pero se le puede pasar el parámetro v4lsrc, GSCapture.list("v4lsrc"). Además incluye la posibilidad de definir pipelines con la clase GSPipeline que terminen en filesink, para hacer captura a disco, un paso más cerca de GSMovieMaker.

También incluye unas facilidades de sintaxis, ya no es necesario emplear un array para escoger el dispositivo de captura en el constructor del objeto GSCapture, por ejemplo:

de esto:
cam = new GSCapture(this, 320, 240, new String[] {"device"}, new String[] {"/dev/video1"},15);

se pasó a esto:
cam = new GSCapture(this, 320, 240, "/dev/video1",15);

Lo que ven en la imagen es un ejemplo de captura simple + el ejemplo ASCII video en Processing 1.0.1 + gsvideo 0.4.5 sobre un sistema Linux Mint Felicia (prácticamente un Ubuntu Intrepid), capturando de mi tarjeta de radio y tv Kworld Plus Lite PCI. Para lograrlo simplemente inicié Processing, luego tvtime en el canal que deseé, cerré tvtime y arranque el ejemplo de processing, y así toma la señal del dispositivo con el último canal sintonizado.

El método GSCapture.list() aún no me ha funcionado, pero seguiré probando y posteándo.

PD: probado en Mandriva Free x86_64 2009 y funciona perfectamente, aunque el método GSCapture.list() presenta el mismo error que en 32 bits.

Openframeworks 0.05 + codeblocks


made with openFrameworks from openFrameworks on Vimeo.


Para los que no conocen OF (Openframeworks), es una librería para C++ para facilitar la creación de aplicaciones multimediales, con una sintaxis similar a processing, diseñada para trabajar con openGL , rtAudio, freeType, freeImage, y quicktime.

Como es una librería de C++, indagué primero por las IDE's recomendadas entre las que se encuentran Eclipse y Codeblocks, ya conocía la primera, así que prové codeblocks y me pareció una excelente opción, es una IDE completa y liviana, así que dejaremos el eclipse para java.

Para probarlo simplemente se descarga de la página, se descomprime y ya, los ejemplos vienen con el proyecto en codeblocks así que simplemente abrimos un proyecto y ya tenemos todo importado con la jerarquía que necesitamos para trabajar openframeworks.

Para poder ejecutar las aplicaciones deberíamos tener instalado:
freeglut3-dev libasound2-dev libxmu-dev libxxf86vm-dev g++ libgl1-mesa-dev libglu1-mesa-dev libraw1394-dev
Para mi caso en gentoo instalé media-libs/glut, en vez de freeglut que me dió problemas.

A la hora de provarlo hasta el momento no ha funcionado en 64bits, me bota el error
Linking console executable: bin/imageLoaderExample_debug
/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/../../../../x86_64-pc-linux-gnu/bin/ld: skipping incompatible ../../../libs/fmodex/lib/libfmodex.so when searching for -lfmodex
../../../libs/ffmpeg/libavcodec/libavcodec.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
0 errors, 0 warnings
Leyendo tenía dos opciones la jaula de 32 bits o construir openframeworks con las versiones de 64bits de la librerías de las que depende. Como tengo una jaula de 32 bits primero probé ahí.

En la jaula de 32bits, inicialmente botaba errores de compilación, chequeándo en el foro encontré que el problema radica en que codeblocks cuando la salida del gcc no está en inglés cree que todos los warnings son errores, la respuesta la encontré aquí, simplemente ejecutamos export LC_ALL=C y en la misma consola llamamos a codeblocks.

Por fin openframeworks trabajando!!!!


Ahora vamos a tratar la segunda opción, trabajar con las librerías de 64 bits.

Para esto vamos a nuestro directorio de descarga de openframework desde la consola, e ingresamos a libs/, empezaremos en orden así que vamos a ffmpeg/libavcodec/ allí encontraremos 4 archivos que deberemos borrar, mover o renombrar, y reemplazarlos por los del sistema (naturalmente debes tener instalado ffmpeg), yo decidí moverlo y luego hacer un enlace simbólico a la ruta que encontré en el sistema gracias al comando locate.

ln -s /usr/include/ffmpeg/avcodec.h ./
ln -s /usr/lib64/libavcodec.a ./
ln -s /usr/lib64/libavcodec.so ./
ln -s /usr/lib64/libavcodec.so.51 ./
recuerden estar parados en of-path/libs/ffmpeg/libavcodec/

Nos devolvemos a libs/ffmpeg y seguimos de la misma manera con las otras dos carpetas libavformat y libavutil.

oceano libavcodec # cd ..
oceano ffmpeg # cd libavformat/
oceano libavformat # ln -s /usr/include/ffmpeg/avformat.h ./
oceano libavformat # ln -s /usr/lib64/libavformat.so.51 ./
oceano libavformat # ln -s /usr/lib64/libavformat.so ./
oceano libavformat # ln -s /usr/lib64/libavformat.a ./
oceano libavformat # cd ..
oceano ffmpeg # cd libavutil/
oceano libavutil # ln -s /usr/lib64/libavutil.a ./
oceano libavutil # ln -s /usr/lib64/libavutil.so ./
oceano libavutil # ln -s /usr/lib64/libavutil.so.49 ./
oceano libavutil # ln -s /usr/include/ffmpeg/avutil.h ./
oceano libavutil # ln -s /usr/include/ffmpeg/common.h ./
oceano libavutil # ln -s /usr/include/ffmpeg/integer.h ./
oceano libavutil # ln -s /usr/include/ffmpeg/intfloat_readwrite.h ./
oceano libavutil # ln -s /usr/include/ffmpeg/mathematics.h ./
oceano libavutil # ln -s /usr/include/ffmpeg/rational.h ./
oceano libavutil # ln -s /usr/include/ffmpeg/log.h ./

Terminamos ffmpeg, seguimos con fmodex, para esto necesitamos instalado fmod, y repetimos el procedimiento:

oceano libavutil # cd ..
oceano ffmpeg # cd ..
oceano libs # cd fmodex/inc/
oceano inc # ln -s /usr/include/fmodex/fmod_codec.h
oceano inc # ln -s /usr/include/fmodex/fmod_dsp.h
oceano inc # ln -s /usr/include/fmodex/fmod_errors.h
oceano inc # ln -s /usr/include/fmodex/fmod.h
oceano inc # ln -s /usr/include/fmodex/fmod.hpp
oceano inc # ln -s /usr/include/fmodex/fmod_output.h
oceano inc # cd ..
oceano fmodex # cd lib/
oceano lib # ln -s /usr/lib64/libfmodexp.so ./
oceano lib # ln -s /usr/lib64/libfmodexp.so.4.11.03 ./libfmodexp.so.4.08.00
oceano lib # ln -s /usr/lib64/libfmodex.so ./
oceano lib # ln -s /usr/lib64/libfmodex.so.4.11.03 ./libfmodex.so.4.08.00

en la carpeta plugins todos los que encontrarás en el sistema terminan en 64 así que hay que renombrarlos, y no encontré los archivos codec_flac, codec_vag y dsp_lowpass_simple en el sistema así que le dejé los originales.

oceano lib # cd ..
oceano fmodex # cd plugins/
oceano plugins # ln -s /usr/lib64/fmodex/plugins/codec_aiff64.so ./codec_aiff.sooceano plugins # ln -s /usr/lib64/fmodex/plugins/codec_cdda64.so ./codec_cdda.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/codec_dls64.so ./codec_dls.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/codec_fsb.so ./
oceano plugins # ln -s /usr/lib64/fmodex/plugins/codec_it64.so ./codec_it.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/codec_midi64.so ./codec_midi.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/codec_mod64.so ./codec_mod.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/codec_mpeg64.so ./codec_mpeg.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/codec_oggvorbis64.so ./codec_oggvorbis.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/codec_playlist64.so ./codec_playlist.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/codec_raw64.so ./codec_raw.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/codec_s3m64.so ./codec_s3m.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/codec_sf264.so ./codec_sf2.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/codec_tag64.so ./codec_tag.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/codec_wav64.so ./codec_wav.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/codec_xm64.so ./codec_xm.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/dsp_chorus64.so ./dsp_chorus.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/dsp_compressor64.so ./dsp_compressor.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/dsp_distortion64.so ./dsp_distortion.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/dsp_echo64.so ./dsp_echo.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/dsp_flange64.so ./dsp_flange.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/dsp_highpass64.so ./dsp_highpass.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/dsp_itecho64.so ./dsp_itecho.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/dsp_lowpass264.so ./dsp_lowpass2.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/dsp_lowpass64.so ./dsp_lowpass.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/dsp_normalize64.so ./dsp_normalize.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/dsp_oscillator64.so ./dsp_oscillator.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/dsp_parameq64.so ./dsp_parameq.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/dsp_pitchshift64.so ./dsp_pitchshift.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/dsp_reverb64.so ./dsp_reverb.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/dsp_sfxreverb64.so ./dsp_sfxreverb.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/output_alsa64.so ./output_alsa.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/output_esd64.so ./output_esd.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/output_nosound64.so ./output_nosound.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/output_oss64.so ./output_oss.so
oceano plugins # ln -s /usr/lib64/fmodex/plugins/output_wavwriter64.so ./output_wavwriter.so

el proceso se repite sucesivamente para el resto de librerías.


Agrego: al tiempo que estaba haciéndo esto encontré que arturo y muchos otros ya lo habían hecho, pero arturo tuvo la amabilidad de subirlo y compartirlo listo para usar. Les dejo el link de descarga y en enlace al post donde encontré el enlace.

descarga of_64bits

0.3.12 nueva versión de gsvideo

La librería para captura de video multiplataforma para processing gsvideo lanza su nueva versión, (y está estrenando sitio en sourceforge), esta vez cuenta con la utilidad para escoger entre los dispositivos v4l que tengamos conectados.

Para utilizar este nuevo método tenemos que añadirle los parámetros a la linea que inicia el objeto de captura
video = new GSCapture(this, 160, 120, 15);
añadiéndole el dispositivo que queremos que reconozca, si no le añadimos nada reconocerá el primero
video = new GSCapture(this, 320, 240, new String[] {"device"}, new String[] {"/dev/video1"},15);
si tenemos errores por "v4l2src" podemos añadirle también
video = new GSCapture(this, 320, 240, "v4lsrc", new String[] {"device"}, new String[] {"/dev/video1"},15);
donde /dev/video1 será la dirección del dispositivo que queremos trabajar.
Así mismo podemos suprimir el último parámetro que corresponde a los fotogramas por segundo a los que hará la captura, siendo el predeterminado 25.

Parece que todavía no soporta múltiples dispositivos, ya que cuando agrego otro vota NullPointerException, pero es un gran avance, y seguramente seguirá teniendo mejoras significativas para el delite de todos aquellos que trabajamos con video en tiempo real, o edición algorítmica.

Mis agradecimientos y felicitaciones a Andrés Colubri por compartir su trabajo con nosotros.

usando gsvideo

Algunos tips que ayudan a la hora de usar el método de captura de gsvideo.

Tengo dos dispositivos v4l, una capturadora de tv Kworld PlusTV litePCI reconocida por el módulo saa7134 y una webcam Genius VideoCAM NB reconocida por el módulo sn9c102 aunque también se puede con el módulo gspca.

La libreria gsvideo aún no tiene un método para selección de dispositivos desarrollado, lo cual nos impide escoger entre los dispositivos que tenemos conectados, de manera que reconocerá únicamente /dev/video0, que para mi caso es la tarjeta de tv.

Entonces, si quiero usar la tarjeta de tv no hay problema, puedo poner a correr el programa y la reconocerá, pero algo curioso con la nueva versión (0.3.10) es que la reconoce de una con la entrada composite. En caso de querer trabajar con algún canal tengo que correr primero tvtime o xdtv y sintonizarlo, luego si abrir processing y listo a correr el código. A veces se traba, aún no logro determinar por qué, pero la mayoría de veces va bien.

Pero, como uso la webcam?, simple, solo tienes que hacer que la reconozca como primer dispositivo de video, para esto lo que puedes hacer es remover los módulos de la webcam y de la capturadora y luego cargar primero el de la webcam, es decir, para mi caso:

rmmod saa7134-alsa
rmmod saa7134
rmmod sn9c102
modprobe sn9c102

para que permita retirar el módulo saa7134-alsa, tengo que cerrar el kmix que por defecto se me carga como icontray, y naturalmente el kradio o demás programas que puedan estar usando algún módulo.

En caso de que bote algún error en la captura puedes provar a cambiar la línea que carga la cámara, la cual inicialmente sería algo así:
video = new GSCapture(this, width, height, 15);
y la podrías cambiar por algo así:
video = new GSCapture(this, width, height, "v4lsrc");

instalando librería gsvideo

Gsvideo es una iniciativa que implementa el mismo API que la librería video de Processing que trabaja normalmente el windows y mac, pero utilizando el motor de gstreamer.

No había tenido tiempo de postear sobre esta, funciona bastante bien, la probé sobre mi sistema de mesa un gentoo amd64 2007.0, aunque no ha trabajado sobre amd64 sino en la jaula de 32bits. Tenía algunos problemas con el reconocimiento de algunas cámaras y el método loop para la reproducción de video, que parece fueron solucionados en su nueva versión.

Para poder trabajar con esta librería tuve que instalar gstreamer, gst-plugins-base, gst-plugins-good, gst-plugins-bad and gst-plugins-ugly, que eran los que mencionaban, y aparte tuve que instalar gst-plugins-v4l2, gst-plugins-v4l y gst-plugins-ffmpeg. Según los comentarios en la página para distribuciones como ubuntu y debian bastaría instalar libgstreamer0.10-dev .

En este momento voy a testear la nueva versión a ver si trabaja sobre 64bits. En fin, para los que trabajan video es una excelente opción, que se suma a la librería libCV que funciona con el API multimedia de java JMF, pero me pareció más práctica teniendo en cuenta que implementa los mismos métodos que la librería video y por ende funciona con la misma documentación. (aunque aún no tiene todos los métodos está bastante completa).

Comienzo documentación sobre cinelerra

Hoy empezé a colaborar en el wiki de musix, una excelente distribución argentina dedicada a la multimedia aunque con mucha fuerza en el audio.

Comenzé con un artículo sobre la captura de video con Cinelerra, para los que estén interesados aquí está el link.

El cual continuaré actualizando hasta completar un buen manual de uso de este magnífico editor de video.

jahshaka en gentoo

Aquí hay un artículo breve sencillo y fácil, con los links a los ebuilds y las explicaciones de cómo instalar jahshaka sobre gentoo.

Además ésta misma página nos trae mucha información sobre software de linux para manipulación de sonido y video, creo que está enfocada a vj's pero igual es de mucha utilidad, y aunque esté en inglés es muy sencillo de entender.

Gracias tikiwiki!!

floating.numbers


Este es un trabajo que usa la tipografía como base de la imagen, lo pueden ver directamente aquí

Es una proyección alargada interactiva en cuya superfice se proyectan números, y se apoya en una superficie sensible al tacto para producir la interactividad.

El título de la exposición muy diciente “10 + 5 = God. The power of signs” en el Jewish Museum en Berlín.

Este proyecto fué producido entre ART+COM (concepto y realización) y Hürlimann + Lepp Ausstellungen (idea y contenido).

"P.S. "08/15" is one of the hundred numbers explained in the exhibition. If something is "08/15", it is mass production and boring. This term, which originated in WW I, used to denote the first machine gun produced according to industrial standards."

Aquí un videito

También podremos aprovechar los sketches de ejemplo que nos comparten con los applets corriendo online, que ilustran el comportamiento de los objetos (números en este caso) construidos con processing, y cuyo código esta disponible para observarlo.