# vnc2swf

Screen Recorder

Vnc2swf Home Page: http://www.unixuser.org/~euske/vnc2swf/index.html

$Id: vnc2swf.html,v 1.3 2005/10/29 06:23:47 euske Exp $

## Syntax

> `$ vnc2swf [options] swf_filename [host][:display]`

## Description

vnc2swf is a screen recording tool for X-Window (X11), Windows and Mac OS Desktop. It records the live motion of a screen and generates a Macromedia Flash(TM) movie (`.swf`) file. Motion capturing is divided into two parts:

1. Convert a screen image into some portable image format.
2. Record the captured images in a Flash movie.

vnc2swf takes the second part of this process. It captures a screen image via Virtual Network Computing (VNC) protocol. It relys on a separated VNC server such as XVnc, WinVNC or OSXVnc for the first part. A VNC server captures live screen images and sends them to vnc2swf through the network. This allows us to record various kinds of desktops (X11, Windows and MacOSX) with one program.

You need to obtain at least one VNC server in addition to the vnc2swf distribution. Currently the following VNC servers are supported:

- XVnc. This is included in a standard VNC distribution such as RealVNC or TightVNC. It creates a virtual X11 desktop which can be accessed from a VNC client via network. vnc2swf can record this virtual desktop.
- WinVNC. It lets you access to an existing Windows desktop. Although vnc2swf itself doesn't work on Windows, this allows you to record a Windows desktop with vnc2swf which is running in a separated remote machine.
- OSXVnc. Similarly, this allows you to record a Mac OS desktop.
- x11vnc. Unlike XVnc, this program let you control an existing X11 screen instead of creating a virtual one. This allows you to record the current desktop with vnc2swf. x11vnc is included in LibVNCServer distribution. When you use x11vnc, you need to launch vnc2swf with non-window mode to prevent vnc2swf from recording the vnc2swf window itself infinitely.

The usage of vnc2swf is similar to that of vncviewer, a standard VNC client which was included in the original VNC distribution. First you need to start a VNC server. Then you can launch vnc2swf and connect to the server with your password (if any). After a session begins, pressing F9 key starts screen recording. When you quit the program (by choosing "Quit" from a popup menu or sending SIGINT), vnc2swf writes a SWF movie as the given swf_filename and a wrapper HTML file into standard output.

After recording, you can edit the generated movie with a separated pyvnc2swf package.

## Sample Session

Flash demo (made with vnc2swf):

- vnc2swf with XVnc (vncserver)
- vnc2swf with x11vnc

Here is a sample interatcion using vncserver.

>     (start VNC Server)
>     $ vncserver :1 -geometry 640x480

>     New 'X' desktop is grape:1

>     Starting applications specified in /home/yusuke/.vnc/xstartup
>     Log file is /home/yusuke/.vnc/grape:1.log

>     (start vnc2swf)
>     $ vnc2swf out.swf :1 > out.html
>     vnc2swf version 0.5.0
>     Copyright (C) 2002-2005 Yusuke Shinyama <yusuke at cs dot nyu dot edu>
>     - Based on VNC viewer version 3.3.7
>       Copyright (C) 2002-2003 RealVNC Ltd.
>       Copyright (C) 1994-2000 AT&T Laboratories Cambridge.
>       See http://www.realvnc.com for information on VNC.
>     VNC server supports protocol version 3.3 (viewer 3.3)
>     (type vnc password)
>     Password:
>     VNC authentication succeeded
>     Desktop name "yusuke's X desktop (grape:1)"
>     Connected to VNC server, using protocol version 3.3
>     VNC server default format:
>       8 bits per pixel.
>       True colour: max red 7 green 7 blue 3, shift red 0 green 3 blue 6
>     Using default colormap and visual, TrueColor, depth 16.
>     Using viewer's native pixel format:
>       16 bits per pixel.
>       Least significant byte first in each pixel.
>       True colour: max red 31 green 63 blue 31, shift red 11 green 5 blue 0
>     === WriteInitMovie: Pid=20341, Opening file: "a.swf" for a movie size (640, 480), frame rate 12.00...
>     CleanupSignalHandler called
>     === WriteFinishMovie: 23412 bytes dumped into "a.swf".

It generates an HTML file. Use this file to play the movie: (Do NOT play the generated SWF movie directly)

>     $ cat out.html
>     <html><body>
>     <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="640" height="480"
>      codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0">
>     <param name="movie" value="a.swf">
>     <param name="play" value="true">
>     <param name="loop" value="true">
>     <param name="quality" value="high">
>     <embed src="a.swf" width="640" height="480" play="true" loop="true" quality="high"
>      type="application/x-shockwave-flash"
>      pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
>     </object>
>     </body>
>     </html>

## Options

Since vnc2swf is a derivative of vncviewer, it accepts most of options which were for vncviewer, too. You can get a list of options by giving `-h` as an option to vnc2swf. Most of these options can also be specified as X resources.

Here are additional options for vnc2swf:

`-framerate frames_per_second`
  Set the framerate of the movie to frames_per_second. The default value is 12 (fps).
`-startrecording`
  Normally when vnc2swf launches it doesn't record a screen until F9 key is pressed. This option forces vnc2swf to start recording immediately after a session begins.
`-nowindow`
  Non-window mode. This prevents vnc2swf from displaying anything on a screen. This is useful when you use x11vnc because x11vnc tries to capture the vnc2swf window which shows the captured image itself.
`-nostatus`
  Don't display the recording status on a screen.
`-clippinggeometry geometry`
  Instruct vnc2swf to record only the part of a screen specified by the geometry which is of the form `widthxheight+x+y`. This is useful if you want to record a specific region rather than the entire screen.

## Bugs

- PseudoColor is not supported.
- vnc2swf doesn't care of Expose / GraphicExpose event.
- The VNC server might die occasionally due to connection timeout when vnc2swf gets too slow.

## See Also

- recordwin(1)
- x11vnc(1)
- vncviewer(1) (from RealVNC)
- vncviewer(1) (from TightVNC)
- Macromedia Flash
- GPL Flash Player

## Author

Yusuke Shinyama (yusuke @ cs dot nyu dot edu)

## Changes

- Oct 29, 2005: version 0.5.0.

## License

This software is distributed under the GNU General Public Licence as published by the Free Software Foundation. See the file LICENCE.TXT for the conditions under which this software is made available. VNC also contains code from other sources. See the Acknowledgements section below, and the individual files for details of the conditions under which they are made available.

Vnc2swf distribution doesn't contain zlib.

Vnc2swf:
Copyright (C) 2002-2005 Yusuke Shinyama. All Rights Reserved.

VNCViewer:
Copyright (C) 2002-2003 RealVNC Ltd.
Copyright (C) 1994-2000 Olivetti Research Ltd/AT&T Laboratories Cambridge. All Rights Reserved.

## Acknowledgements

VNC was originally developed by the RealVNC team while at Olivetti Research Ltd / AT&T Laboratories Cambridge. It is now being maintained by RealVNC Ltd. See http://www.realvnc.com for details.

Vnc2swf distribution contains public domain DES software by Richard Outerbridge. This is:
Copyright (c) 1988,1989,1990,1991,1992 by Richard Outerbridge.
(GEnie : OUTER; CIS : [71755,204]) Graven Imagery, 1992.