Overview
• Record all presentation material for distribution and review– Application / video display– Lecturer voice and audio
• Leverage existing technologies– VNC (Virtual Network Computer)– Audio compression (MP3 encoding/decoding)
Goals
• Seamlessly integrated and easy to use recording program
• Easy to distribute and efficiently sized session data file
• Portable client to playback recorded session
Existing Solutions
• vncrec– Unix command line– No audio
• vnc2swf– Separate audio recording– Exports to flash movie
Technical Implementation
• Microsoft C# .Net– Microsoft DirectX (DirectSound)
• Open Source Libraries– LAME– LibMAD– ZLIB
• Open Source RealVNC Server
Recorder Architecture Overview
VNCR Recorder
VNC Server
VNC Client
Audio Recorder
Synchronizer
MP3 Data
Screen Updates InterleavedAudio/Video
File
Video Recording / Playback
• Capture– Receives screen updates from RealVNC– Zip raw bitmap data– Add timestamps
• Playback– Get screen update from file– Unzip data and add to queue– Draw screen updates to screen buffer
Audio Recording / Playback
• Capture– Receive PCM data from DirectSound device buffer– Convert from PCM to MP3 using LAME
• Playback– Get chunk of MP3 data from file– Decode MP3 data using LibMAD– Put PCM data into DirectSound playback buffer
File Format• Contains both audio and video data • Synchronized using shared timestamps• Video
– Recorded from local VNC server– Lightweight screen encoding, uses GZIP compression
• Audio– Captured using DirectSound input device– Compressed using MP3 encoding
• Layered principle to promote modularity
Usage Examples
• Historical archive of lecture material
• Natural walkthrough and explanation of code
• Demonstration of the usage of any application
• Unlimited recording potential
Future Goals
• File editor
• Web browser plugin
• Streaming playback
• Fullscreen playback
• Integrated screen annotation