Are you still taking screenshots? That is sooo last decade. Today if you want to showcase your application, your gaming skills, or even your astonishing new desktop wallpaper collection, you need a screen recorder (or screencasting tool) to capture full-motion video and audio of your desktop. You'll find several solid options, but which one works best for you depends a lot on the type of content you need to capture, and what you intend to do with it.
For starters, the output produced by the tool varies considerably. Some alternatives give you a wide choice of video and audio codecs, others just one. But if that one (say, Flash) is the one you need, producing it directly is much quicker than having to save an intermediary file and crank it through a video editor. It also may be important to select just a portion of the screen rather than your whole display, or to choose a specific frame-rate (high for games, low for bandwidth-saving demos). Finally, there are always special features that vary between utilities, such as whether or not they can capture OpenGL content or be started remotely by script.
The Full-Featured Screenstudios
The leading screen recorders at present are recordMyDesktop and Istanbul. The feature sets are roughly comparable: both record to Theora-encoded video with Vorbis audio, both allow you to select just the portion of the screen you are interested in recording, and work in multiple desktop environments.
RecordMyDesktop actually offers three front-ends: a command-line tool, a GTK+ launcher, and a Qt launcher. It can optionally capture or hide the cursor during the recording session, or follow the mouse around the screen. You can adjust the video quality, select the frame rate, and if desired perform on-the-fly video encoding. Whether that slows your system down to a crawl and makes your screencast unwatchable depends entirely on the beefiness of your hardware. It also gives you the option to highlight the "live" capture area on screen, in case you get lost in what you are doing and allow the cursor to wander away.
RecordMyDesktop's biggest shortcoming is that because it uses the XDamage extension to capture the screen session, it cannot capture video playback or OpenGL content (both of which bypass the normal X server pathways used by typical GUI apps).
Istanbul can capture OpenGL content, on the other hand. It runs in the system tray, which makes it right-click accessible in both GNOME and KDE, and any other desktop environment that adheres to the specification (hint: that means pretty much all of them). Istanbul can capture video of the whole desktop, a selected region, or a specific region, and it includes an option to capture or ignore the mouse cursor. Istanbul can also automatically re-size the capture video to one-half or one-quarter size — although you should be careful to check that your output is still readable at that size.
Several reports on the Web indicate that Istanbul can be used to stream captured output to an Icecast2 server, but I have not figured out how to enable that option. It is possible it was removed. Istanbul uses GStreamer, however, so a knowledgable GStreamer hacker can probably chain together a video pipeline to do not only that, but far more interesting things as well.
The Less Common Options
A close number three in the screencasting race belongs to xvidcap, which is a low-level X11-based capture tool. There is a GTK+ front-end, and the tool allows you to select a region of the screen to capture (optionally including cursor capture and capture-follows-mouse). You can scale the output from 1 to 100% of its original size, and the application gives you a wide array of video and audio output codecs to choose from (courtesy of the FFmpeg project), and complete control of the frame rate. Xvidcap is even capable of capturing video playback and 3-D content (provided that, for video playback, you switch off hardware video acceleration in the video player).
On the down side, xvidcap is pickier about audio capture than either of the first two options. There is a FAQ page with troubleshooting tips, but if your system uses an unusual configuration, there is a chance you will find it simpler to record your audio separately. Finally, xvidcap can capture full-screen 3-D content like games, but it can be tricky to figure out the right X settings. Then again, if you're a l33t enough gamer that you need to be capturing your performances to share with the world, you may be no stranger to tweaking Xorg.
At the opposite end of the spectrum is Pyvnc2swf. This application actually uses the VNC remote-desktop-framework to capture the desktop session — the good news is that VNC is commonplace in desktop distributions, but the bad news is that it is an indirect capture and may be limited in frame rate. You can specify a portion of the display to capture, using X11's WIDTHxHEIGHT+X+Y argument syntax, but you do not have many of the bells and whistles found in the other utilities, such as cursor-capture options.
As the name of the package indicates, Pyvnc2swf is designed to produce Flash-formatted video. It can generate its content in either of the FLV or SWF file formats, but it can also produce raw MPEG output. One extremely useful feature is that the package also ships with an editor script you can use to quickly cut, scale, crop and transcode your output.
Niche Players Good to Have On Call
The apps already discussed will probably serve 90 percent of users 90 percent of the time — but when your 10 percent moment hits, you'll be glad open source has more to offer.
For example, Byzanz is a lightweight screen recorder designed to produce animated GIF output. Clearly, because of the format limitations, extremely long sessions with a lot of movement will result in significantly higher output file sizes than would a compressed video capture from another tool. But for short captures, or to show a brief behavioral quirk, Byzanz is a very good fit. Animated GIFs are viewable in every Web browser known to modern science, and they don't consume space or require a plug-in. Plus, if you have ever tried producing an animated GIF in another video editor, you will appreciate the simplicity of a dedicated tool.
Finally, a personal favorite of mine for its sheer quirkiness is ttyrec. Unlike the rest of the tools described here, ttyrec is designed to capture just the activity inside an X terminal. It is not a keystroke-logger, however — it actually records the characters as they appear on screen, input and output, at real-time speed. The result allows you to "play back" a visualization of a session, whether it is a text game, a core dumping bug, or a bizarre ASCII animation. No, technically the result is not a video file, and you will need ttyrec's ttyplay utility (included) to watch them, but if you watch a few of the .tty recordings on the program's TTY Mania page, you will find them quite addictive.
Picking the right screen recorder is a matter of assessing your needs for input and output, with a side helping of feature-selection. For starters, if you need to record video playback or 3-D content, you may be limited to xvidcap due to technical restrictions, although Istanbul may suffice as well. But if you need to record a remote session, Pyvnc2swf is the simplest option, because VNC clients are so widespread.
Considering the output, if you need SWF or FLV video, consider Pyvnc2swf to save yourself the quality loss inherent in an additional generation of transcoding. Similarly, if your output is headed for a DVD, you may want to choose one of the apps that can save to MPEG instead of Ogg Theora, again to spare an extra re-encode. If you need a very small animated GIF, look at Byzanz.
For everyone else in the middle, however — simply wanting to record normal operation of a browsing session or application usage, for demo, documentation, or review purposes, Istanbul and RecordMyDesktop offer you everything you will need. Handy features like capture-follows mouse or automatic re-scaling may put one or the other ahead for any particular job, however you are guaranteed to get a high-quality result that you can cut and edit in any modern video editor, whichever you choose.