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.