Come creare presentazioni multimediali con vnc2swf

Scopo del gioco

Chi di voi non ha mai visto uno “screencast”?

Sono delle registrazioni di quello che avviene sullo schermo del computer, tipicamente possono essere usate per la formazione a distanza o per realizzare delle semplici presentazioni multimediali.

Sono l’equivalente audiovisivo del podcasting, che ha invece solitamente solo un flusso audio.

Non esiste uno standard riguardante i formati che possono essere usati, ma quasi tutti gli esempi presenti in rete usano il ben noto formato SWF di macromedia flash player.

Il trucco è usare il protocollo vnc per registrare una sessione interattiva sul monitor, e contemporaneamente, registrare l’audio. Una volta registrati i due flussi potranno essere convertiti in un filmato SWF completo di audio mp3 (quasi) perfettamente sincronizzato.

Cosa serve

  • una macchina Linux
  • vnc2swf
  • vncX11
  • lame
  • sox

Lo script che segue è un adattamento di quello presente sul sito di vnc2swf, di mio ho solo aggiunto i comandi per la registrazione e per lanciare il browser alla fine e controllare l’esito della registrazione.

Buon divertimento! #!/bin/sh ## ## recordwin.sh ## $Id: recordwin.sh,v 1.1 2005/11/11 04:58:33 euske Exp $ ## ## Quick recording script for UNIX. ## ## usage: ## recordwin.sh [-display disp] [-name winname] [-id winid] output.swf ## INSTALLDIR="/home/ale/bin/vnc2swf" RECCMD=rec BROWSER=konqueror VNC2SWF="python $INSTALLDIR/vnc2swf.py" PYEDIT="python $INSTALLDIR/edit.py" X11VNC=x11vnc #X11VNC=vncserver XWININFO=xwininfo AWK=awk usage() { echo "usage: $0 [-display display] [-name windowname] [-id windowid] swfname" exit 2 } # clean all killall -9 x11vnc xwopts= swfopts= display="$DISPLAY" while [ $# -gt 1 ]; do case "$1" in -name) shift; xwopts="$xwopts -name $1";; -id) shift; xwopts="$xwopts -id $1";; -display|-d) shift; display="$1"; xwopts="$xwopts -display $1";; -*) usage;; esac shift done if [ $# -lt 1 ]; then usage; fi case "$1" in -*) usage;; esac swffile="tmp$1.swf" # Remove vnc and swf files rm $1.vnc rm $1.swf geometry=`$XWININFO $xwopts | $AWK '/Absolute upper-left X:/{x=$4} /Absolute upper-left Y:/{y=$4} /Width:/{w=$2} /Height:/{h=$2} END {printf "%dx%d+%d+%d",w,h,x,y}' ` # launch x11vnc $X11VNC -quiet -display "$display" -viewonly -localhost -cursor -wait 10 -defer 10 >/dev/null 2>&1 & #$X11VNC -quiet -display "$display" -viewonly -localhost -cursor -wait 10 -defer 10 & # wait x11vnc echo "Waiting for x11vnc to start..." sleep 6 echo -e "\a" echo "-----------------------------------------" echo "Buongiorno, sono ................" echo "questo screencast si intitola...." echo "ed è stato registrato " date echo "-----------------------------------------" echo "Launch vnc2swf..." # start rec rec -w -t wav -r 44100 $1.wav & # start playback (in case you need to sync video to an existing audio) #play $1.wav & # launch vnc2swf $VNC2SWF -n -o "$swffile" $swfopts -C $geometry # stop rec killall rec killall -9 sox # lame lame -m mo $1.wav $1.mp3 # crop $PYEDIT -c -a $1.mp3 -o $1.swf $swffile echo $PYEDIT -C $geometry -c -a $1.mp3 -o $1.swf $swffile # launch browser $BROWSER $1.html >/dev/null 2>&1 &