[SLUG] Re: video screen capture

From: Ian Blenke (icblenke@nks.net)
Date: Thu Jul 22 2004 - 18:05:30 EDT


Robin 'Roblimo' Miller wrote:

> Logan Tygart said he thought you knew some method of doing video
> screen captures in Linux + adding sound, producing mpegs or possibly
> Flash.

Yep, I was about to reply to your request earlier but had a UPS die on
me and kill all of my open emails.

Apparently you've considered the VNC path but weren't keen on the idea?

First, here are two good articles on doing what you want to do:

    Creating Animated Screenshots on Linux
        http://linuxgazette.net/102/washko.html
   Making Screen-Capture Movies
        http://www.linuxdevcenter.com/lpt/a/4602

 From looking around over a year ago, I began to realize the benefit of
using Flash SWF files to encoding MPEG video. If you only keyframe on a
massive screen update, you can keep MPEG files relatively small
(encoding partial blocks for cursor/mouse moves) - but I'm unaware of a
tool that really does this. MPEG video often has the problem with
artifacts as well, something you don't get with Flash files.

To that end, vnc2swf really impressed me.

        http://www.unixuser.org/~euske/vnc2swf/

Merely fire up a VNC server desktop to record, and vncviewer it to a
point where you wish to start.

     $ Xvnc :1 -query localhost &
     $ vncviewer -encodings tight localhost:1

then, when you're ready, run vnc2swf against that Xvnc desktop session:

    $ vnc2swf

You end up with something like:

    http://training.blenke.com/

The trick would be to record your mp3 audio first, and then run vnc2swf
with the -soundfile option.
To record the session, you would start playing the mp3 audio at the same
time you kick off vnc2swf, and then follow along clicking. If you want
them to run at the same time, and record from your microphone you can
use a named pipe:

    mkfifo pipe.mp3
    lame -r -s 44.1 -bitwidth 16 -b 160 /dev/dsp pipe.mp3 &
    vnc2swf -soundfile pipe.mp3

Alternatively, you can combine the audio seperately with swftools:

     http://www.quiss.org/swftools/

like so:

    wav2swf `swfdump -r video.swf` audio.wav -o audio.swf
    swfcombine -Tm video.swf audio.swf -o audio_plus_video.swf

Unfortunately vnc2swf uses VNC "raw" encoding, and Flash isn't nearly as
small as it should be.

If you're really interested in making an MPEG movie, you can still use
recorded VNC and transcode:

    http://www.sodan.org/~penny/vncrec/
    http://www.cs.ubc.ca/~bsd/vncrecording.html

On the first site, you will find a video on how to use vncrec and
transcode to make a video in the encoding of your chosing (sans audio,
which you can add post-production).

This really doesn't help with my grand vision, however. What I would
really like to do is put up a FREE Linux training site, allowing people
to play "tight" encoded VNC files muxed with some form of mp3 embedding
(to keep time synchronization).

The Java vncviewer, running as an application, can currently record
"tight" encoded sessions to a file locally on your machine. With a
modicum of development, it could potentially stream that via HTTP upload
back to a site with an associated audio stream. There are more
ruminations of this on the MulticastVNC page:

    http://www2.in.tum.de/~ziewer/multicastvnc/

Moreover, I would really love to expose UML images running VNC servers
to people to record their OWN training videos for the community. Put
some form of community moderated ranking engine on it, and let them
regulate themselves.

It would be wonderful to have an online chat with people asking
questions, and mentors volunteering their time to record a session with
the student for everyone to search for and view later. The
TeleTeachingTool project touches on this:

    http://teleteaching.uni-trier.de/ttt.en.html

Other projects to consider for recording VNC sessions include (from a
google search):

    1. rfbproxy by Tim Waugh: http://cyberelk.net/tim/rfbproxy/
    2. VNC Reflector: http://sf.net/projects/vnc-reflector/
    3. TightVNC Java viewer when run as an application (not an applet)

and to play them back:

    1. rfbproxy Tim Waugh: http://cyberelk.net/tim/rfbproxy/
    2. RFB Player (based on TightVNC Java viewer):
http://www.tightvnc.com/tmp/rfbplayer-1.0.0.zip

As for running VNC sessions, you don't need to run Xvnc if you don't
want to (though it does make sense for training videos, so you can hide
things from your user while recording). There are a number of ways to
export your native desktop via VNC:

    KDE Desktop Sharing (krfb server) in 3.1+:
        http://www.tjansen.de/krfb/
    xf4vnc
        http://xf4vnc.sourceforge.net/
    gemsvnc
       http://elilabs.com/~rj/gemsvnc/
    x0rfbserver

For Windows boxes (if you're forced to us them), I highly recommend
UltraVNC:

    http://ultravnc.sourceforge.net/

as for a viewer, if you do any fullscreen mode consider these patches:

    http://lars.werner.no/vnc/

If you're looking for something Windows based and commercial to produce
your captured session flash/movies, this guy recommends Camtasia (which
is what he used to create these):

    http://linux.rockinghamgateway.com/flash/
    http://www.techsmith.com/products/studio/default.asp

Hope this helps.

- Ian C. Blenke <icblenke@nks.net> (813)594-0054
Networked Knowledge Systems - Director of Service Delivery

-----------------------------------------------------------------------
This list is provided as an unmoderated internet service by Networked
Knowledge Systems (NKS). Views and opinions expressed in messages
posted are those of the author and do not necessarily reflect the
official policy or position of NKS or any of its employees.



This archive was generated by hypermail 2.1.3 : Fri Aug 01 2014 - 13:23:17 EDT