OpenMeetings: video-reuniones virtuales libres

Seguro que el lector conocerá Adobe Connect, un sistema de video conferencia web, propietario, con cliente Flash y servidor alojado en la infraestructura de Adobe. A través de ese sistema puedes participar online y en tiempo real en web-conferencias, usando recursos como audio (micro), vídeo (webcam), presentaciones (en PDF o PPT que se convierten a Flash), compartición de la pantalla de tu ordenador, o pizarra digital compartida. He participado en varias reuniones online con Adobe Connect y la verdad es que funciona estupendamente. La última vez que lo probé no funcionaba aún la compartición de pantalla en máquinas Linux, pero por lo demás, se oía y se veía bien, haciendo uso del plugin de Flash más moderno. Incluso cuando no podía acudir a alguna reunión, o bien quería recuperarla más adelante para revisar alguna cosa, Adobe Connect me permitía ver una grabación de lo que ocurrió. Como si de un vídeo de YouTube se tratara.

Espectacular. Bueno. Pero software cerrado, propietario hasta la médula, y de pago (bastante asequible, eso sí, para licencias de menos de 100 usuarios). La cuestión es que me apetecía comprobar si era posible montar algo similar basado en soluciones opensource. Que el servidor estuviera bajo mi control y que pudiera afinarlo para soporte de múltiples usuarios concurrentes. Que pudiera traducirlo (al euskera, por ejemplo) Y ya puestos a pedir, que se integrara con Moodle.

La parte buena: hay varias opciones en el mercado opensource. La parte mala: hay que trabajarse la instalación, configuración y puesta a punto de cada una de ellas. Pero hey! Con un buen café al lado todo es posible 🙂

Empecemos por la opción, en mi opinión, más potente: OpenMeetings. El código y los manuales están alojados en Google Project Hosting. También han montado un host con la aplicación instalada para demostración de capacidades.

¿Funcionalidades de OpenMeetings? Las mismas de Adobe Connect que he comentado (pizarra compartida, audio y video-conferencia, posibilidad de subir y convertir a formato Flash presentaciones PDF , PPT o ODP, panel de administración, posibilidad de grabar las sesiones….) y una más: soporte multiplataforma total. Es decir, aparte de poder grabar las sesiones, puedes compartir tu escritorio también desde una máquina Linux. Lo mejor de todo es que todo el paquete OpenMeetings está basado en software libre. Hace uso de Red5 para guardar y emitir vídeo y audio, gestionar las «rooms» de conferencias, etc. Para la conversión de documentos a formato Flash, hace uso de OpenOffice.org en modo servidor. Los vídeos los manipula haciendo uso de FFMPEG. El audio lo manipula con sox, y las imágenes con imagemagick. La parte cliente se ha desarrollado en Flash haciendo uso de OpenLaszlo (yo hubiera preferido Flex 4, pero … )

Por si todo esto fuera poco, el autor no para y ha desarrollado un módulo de integración con SugarCRM y otro de integración con Moodle. Por cierto, en la Moodle Moot de este viernes hablaré sobre las posibilidades de integrar plataformas de vídeo opensource con este sistema de eLearning :-), pero si quieres probar por tu cuenta, también hay una web de demostración disponible.

Bueno, a la chicha: ¿Cómo se instala OpenMeetings? Hay varias formas: compilar las fuentes, usar una máquina virtual o bien hacer uso de los binarios. Yo he usado los binarios (que San Ignucius me perdone). En concreto, la r3087. Descargamos el zip, descomprimimos y veremos que hay una carpeta red5. Dentro, daremos permisos de ejecución al script red5.sh.

Requisitos a tener en cuenta antes de proceder con la instalación propiamente dicha: necesitamos tener lanzado OpenOffice en modo servidor:

/path/to/openoffice/program/soffice.bin -headless -nofirststartwizard -accept="socket,host=localhost,port=8100;urp;StarOffice.Service"

Esto nos permitirá convertir ficheros de formato ODP o PDF (entre otros) a Flash, a través del interfaz de OpenMeetings.

También necesitaremos Ghostscript (yo lo tenía instalado de serie en Ubuntu 10.04), ImageMagick (ídem) y SWFTools. Éste último paquete no lo tenía y tampoco lo encontré vía APT, así que, me bajé los fuentes (versión 0.9.1.tar.gz), y tras descomprimir lancé el conjuro mágico:

./configure
make
sudo make install

FFmpeg y Sox ya los tenía. Sólo queda configurar MySQL (o el SGBD que uses) para OpenMeetings.
Buscamos dentro de red5/ el fichero mysql_hibernate.cfg.xml y lo renombramos como hibernate.cfg.xml
(normalmente situado en /webapps/openmeetings/conf/hibernate.cfg.xml)

Editamos el xml anterior y cambiamos tres líneas (lo que está en mayúscula, para ajustarlo a nuestra configuración):

  <property name="connection.username">LOGIN_DB</property>
                <property name="connection.password">PASS_DB</property>
                <property name="connection.url">jdbc:mysql://YOUR_HOSTNAME/YOUR_DATABASE</property>

Ahora lanzamos Red5 (haciendo uso del script ./red5.sh) y entramos desde el navegador al proceso de instalación:

http://localhost:5080/openmeetings/install

Interesante para la Universidad: hay una pestaña para soporte LDAP. Así que la posible integración de OpenMeetings con Moodle, haciendo uso de LDAP, sería más manejable …

Tras un rato (se tira unos minutos instalando las tablas de la BBDD necesarias) ya está todo listo para empezar a jugar 🙂 Eso lo dejo para mañana, ahora corto y cierro.

Trabajando con vídeos: ffmpeg, sox y rec

Últimamente trabajo con vídeos: grabando, retocando, recortando, subtitulando…
En Linux hay distintas opciones para hacerlo, pero una herramienta imprescindible para la manipulación de los mismos (en concreto para convertir de un formato a otro, recortar, etc.) es ffmpeg.

Por ejemplo, éste es uno de los comandos que suelo usar para recortar un vídeo:

ffmpeg -y -i <INPUT_FILE_NAME> -ss <START_TIME> -t <DURATION> -s 320x240 -acodec libmp3lame -ar 22050 -ac 2  -f flv <OUTPUT_FILE_NAME>

La orden anterior sirve para recortar el vídeo de entrada INPUT, a partir de START_TIME y extendiéndose DURATION segundos. El resultado final se guardará en OUTPUT. Con eso, teóricamente valdría, pero la cuestión es que tras hacer algunas pruebas, vemos que el recorte es correcto pero se pierde la sincronía entre audio y vídeo en el archivo final. Para evitarlo, basta con recodificar: pasamos el canal de audio a mp3 con -acodec libmp3lame, a una frecuencia de 22050 Hz y 2 canales (ac 2). El resultado final será una vídeo en formato flv (-f flv).

A veces tengo una canal de audio externo (sin vídeo adjunto) que quiero recortar. Se puede hacer con sox fácilmente:

sox entrada.wav salida.wav trim 9 574

Recortaría el audio, comenzando en el segundo 9 (extendiéndose el recorte hasta 574 segundos más allá)

Para grabar audio, la orden desde la línea de comandos sería:

rec -r 22050 -c 2 salida2.wav

(dos canales, a 22050 Hz)

Por supuesto, todo lo indicado se puede hacer también desde herramientas con interfaz gráfico, pero la idea es disponer de comandos que me permitan automatizar el proceso.

Receta rápida para usar recordMyDesktop desde consola

$ recordmydesktop --freq 22050 --channels 1 --device plughw:0,0 --delay 5 --stop-shortcut Control+S

Freq: frecuencia del audio a la que quieres grabar
Channels (1) : adiós al estéreo, pero mayor estabilidad en la codificación on-the-fly
Device: ¿dónde está enchufado el micro desde el que queremos grabar, a qué tarjeta de sonido?
Delay: no empezar a grabar hasta pasados 5 segundos
Stop-Shortcut: un atajo de teclado para parar la grabación

TV p2p: SopCast en Ubuntu

Receta rápida para ver el partido de hoy (no hace falta que diga cuál…) desde Ubuntu 😉

1) Instalar SopCast para Linux
Para ello, instalamos primero un nuevo repositorio APT, así:

$ echo "deb http://ppa.launchpad.net/jason-scheunemann/ppa/ubuntu `lsb_release -cs` main" | sudo tee -a /etc/apt/sources.list
 
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CD30EE56

2) Actualizamos la lista de paquetes disponibles:

$ sudo apt-get update

3) Instalamos:

$ sudo apt-get install sopcast-player

4) Configuramos Firefox para que al pinchar sobre algún enlace de tipo sopcast se lance el sopcast-player automágicamente:

Tecleamos en la URL: about:config
Botón derecho, nueva entrada, como String.
Tecleamos: network.protocol-handler.app.sop como clave y como valor : sopcast-player.

5) Entramos en alguna web de intercambio de enlaces TV_p2p. Buscamos el programa que nos interese, y a disfrutar.

Receta: convertir de ogv a avi con mencoder

Cada vez que grabo un vídeo con recordMyDesktop tengo siempre que revisar mis apuntes para recordar cómo se convertía de formato .ogv a .avi (codec xvid) :

$ mencoder input.ogv -ovc xvid -oac mp3lame -xvidencopts pass=1 -o output.avi

Lo dejo apuntado aquí, para que nos sirva de referencia en el futuro.