skip to navigation
skip to content

castro 1.0.6

Screencasting library


Castro is a library for recording automated screencasts via a simple API.

Here’s an example:

>>> from castro import Castro
>>> c = Castro()
>>> c.start()
>>> # Do something awesome!
>>> c.stop()


1) Install and launch a vncserver. (Hint: Google it.)
2) $ [sudo] easy_install castro
3) There's no step 3!


$ python -c "import castro; castro.test()"


Video stored in: <default_temp_dir>/castro-video.swf

Video player stored in: <default_temp_dir>/castro-video.html


$ firefox /tmp/castro-video.html

License & Repository

Castro was created by Jason Huggins. It is licensed under the GPLv2, since it is a derivative work of pyvnc2swf, which is also licensed under the GPLv2.

Castro has a git respository at


Castro is a minor fork of pyvnc2swf, allowing one to use pyvnc2swf as a regular Python library, instead of a Tk GUI application or command line utility.

The specific improvement Castro brings to pyvnc2swf is the ability to start and stop recording programmatically via a simple Python API. Castro uses a file-based IPC to tell pyvnc2swf when to stop recording.

Ordinarily, pyvnc2swf’s command line utility,, expects users to stop recording by manually typing “Control-C”, sending a KeyboardInterrupt and allowing the process to exit cleanly. On Linux, emulating KeyboardInterrupt is simple enough to do by sending a SIGINT signal. But this does not work cross- platform, specifically on Windows. And a big reason for using pyvnc2swf is its ability to record vnc video on any platform from any platform.


  • Python - 2.5 or above

  • Pygame - 1.6 or above

  • PyYAML - 3.09 or above

    Python < 2.6 dependencies:

  • Multiprocessing - 2.6.21 or above

  • Simplejson - 2.0.9 or above

    Non-python dependencies (for cleaning/editing .flv videos):

  • flvtool2 (ruby gem)

  • ffmpeg


  • 1.0.4 - Added post-recording processing methods. (Depends on ffmpeg and flvtool2)

  • 1.0.3 - Switched from processing library to multiprocessing.

    Added support for changing recording framerate.

  • 1.0.2 - Made stop() block until the recording process is done

    Added support to use Castro in a with statement (e.g “with video(…):”)

  • 1.0.1 - Fixed default vnc password path

  • 1.0 - First Release

File Type Py Version Uploaded on Size
castro-1.0.6-py2.6.egg (md5) Python Egg 2.6 2011-04-12 124KB
castro-1.0.6.tar.gz (md5) Source 2011-04-12 45KB