I used pyvnc2swf for a bit, but found that it took far too much CPU time.  Instead, here's what I do now:

1) Use this patched vncrec: http://aur.archlinux.org/packages.php?ID=16265
In addition to simply recording vnc sessions to a log file, it can convert the recordings to YUV4MPEG (the twibright patch) on stdout (my patch).

2) Use ffmpeg to read the YUV4MPEG stream and write an .flv

A couple of caveats however:
 - vncrec needs an X display (use Xvfb to create a virtual one, but make sure it's at least as large as your video)
 - flashsv is the lossless video codec that will generally produce smaller files for screen recordings while maintaining perfect quality
 - if your ffmpeg doesn't have flashsv support and you have to compile from source, install zlib-devel
 - scaling down the video size with ffmpeg will often result in a larger file size (due to the added anti-aliasing), for web-based playback, you can save bandwidth by having a swf player scale the video down.

--
http://theamigo.blogspot.com