Group test: screencasting apps
Screencasts - digital movies with the desktop as a backdrop, the mouse as the protagonist and a voiceover - have become an integral part of electronic learning and form the basis of the computer-based training industry. As bandwidth becomes affordable and video-sharing websites start popping up, there's a huge influx of free and open source tools.
Not all tools follow the same methodology of capturing activity on your screen. Some rely on desktop sharing services such as VNC, some take a series of screenshots in quick succession and stitch them together into a video. Some give you the option to select an output format, and some will spew the video in patent-free formats only. Using these tools you can screencast your complete desktop or a particular window. Some enable you to narrate audio along with your videos and others don't.
Which to choose? Read on for our group test of the best screencasting apps available for Linux...
How we tested
Support for audio recording and output format are two massively important factors for screencasting apps. While patent-free formats are good, they aren't very useful for uploading the screencast to a video sharing website.
The size of the output video wasn't factored in, because it's difficult to duplicate the same actions, and keep the length of the video and narrations constant across various apps. In our non-scientific observations there wasn't much difference in the output video irrespective of the app used as long as we used the same codec.
All the applications were tested on two computers - a 1.4GHz Celeron laptop with 1 GB RAM, and an Intel dual-core desktop machine. The apps were run from their GUI and CLI to capture screencasts on KDE and Gnome desktops, including fancy ones such as Compiz.
RecordMyDesktop is an open source screencasting tool that produces videos in the open source Ogg format. It's written in C and offers flexibility and control to appeal to new and experienced screencasters.
There are Python front-ends for RecordMyDesktop for KDE and Gnome, both of which show a live preview of the desktop that you can use to select the area of the desktop that you want to capture and give you plenty of options to customise the captures.
For example, if you're demoing a graphical app that has lots of graphical elements with tooltips, you can choose not to capture the tooltips. If you've selected a small area you can ask RecordMyDesktop to follow your mouse, which keeps the size of the screencast fixed but tracks your mouse movement as you move around the desktop. You can also choose to disable capturing the cursor at all.
If the Gnome or KDE-specific UI doesn't work for you, there's also the extensive CLI.
By default the app captures at 15fps, which should work for most screencasts, but you can change it if the default doesn't work for you.
Also by default. RecordMyDesktop, encodes the video after it's done capturing, which requires temporary storage space to store the captured images. If you don't have the space, you can encode on the fly, which requires a lot of processing power. Another option designed to make RecordMyDesktop work on low-power boxes is the ability to disable compression, which reduces overheads at the expense of taking more disk space.
Finally there's the option to enable quick subsampling, which again helps ease the load on the processor - just use it as a last-resort, as it might add blur to the videos. We used RecordMyDesktop on a 1.4GHz Celeron laptop with 1GB RAM and a dual-core Intel desktop, and it worked just as well on both machines.
RecordMyDesktop can directly interface with the ALSA or OSS sound system, or can connect to the recording port via the Jack audio server. You can specify the number of channels and the frequency that will be used to encode the audio captures. By default both video and audio captures are set at the best quality possible, but you can reduce this to decrease the output size of the final encoded video.
If you don't want to start the capture immediately, you can delay it by several seconds, minutes or even hours.
Our verdict: Stable app with good control and simple interface. Only outputs in Ogg. 8/10.
Step by step: Record your screencast
Select capture area: When you launch the tool, begin by selecting what you want to record. It can be a particular window, or a highlighted region, or the complete desktop.
Tweak settings: Now go over the settings and tweak them as per your requirements. Disable audio capturing if you want to add in the narration later. You'll also have to choose a filename before you begin the screencast.
Start recording: Hit the Record button and off you go. Remember to use the keyboard shortcuts to pause the action, if you want to skip through a time-intensive task. When you're done, hit Stop and you'll have your screencast.
DemoRecorder is a proprietary screencasting tool that outputs videos in a proprietary format. You're probably shaking your head in disapproval, but play with the demo version for a while and you'll jump around in disbelief.
By default DemoRecorder runs in the nested mode, which runs a virtual desktop inside a graphical interface with buttons to control the recording. This is great for people who need to tidy up their desktops before recording a screencast. The other advantage is that the virtual desktop in the nested mode runs at a lower resolution (the default is 800x600).
Screencasts are generally done in smaller resolutions, because the action is concentrated in a window or a limited area of the desktop. Usually you'll have to rescale the screencast to a standard resolution, which distorts the video. DemoRecorder's nested mode helps avoid the scaling. If the default is too small, you can bump up the resolution of the virtual desktop.
Then there's the full-screen mode, which lets you select the recording area from the main desktop itself. This mode is designed especially to record OpenGL 3D apps, and it captures games and Compiz effects effortlessly.
The interface of the nested mode is also designed to play back the videos recorded in DemoRecorder's proprietary format. The developer argues that none of the existing formats were cutting it for him, so he cooked up his own lossless format that captures high framerates without gobbling up all your CPU cycles, and doesn't have a huge footprint on your disk.
When recording videos you can also specify an audio fade-in and fade-out duration for adding that professional touch to the screencasts. On a slow box you can also restrict the CPU used by DemoRecorder. The default is 50%, which should leave enough room for other tasks. On a dual-core box you can bump this up to 100%, because DemoRecorder can only use one core.
The recording interface also doubles up as a player to playback the recorded screencasts.
Feast of formats
Depending on the version of DemoRecorder you own, there are loads of export scripts that will not only export your screencast to the common formats such as FLV, OGG, AVI, but also to NTSC, PAL, DVD, VOB, etc. The exporting scripts all run on the command line and have more options than the two screencast capture modes.
You can process the captures to reduce the frame rates from the default 25fps and scale the video from 1024x768 to 800x600 without any noticeable drop in quality. The export scripts also have options to optimise videos for YouTube and Google Video.
DemoRecorder has loads of documentation on the website that details the various features, and you'll also find some tweakable scripts that will help you batch process the captures. The developer also writes monthly newsletters that discuss advanced topics like diagnosing and solving bottlenecks during capture.
The licence for DemoRecorder starts from $47 for two years and includes support and bugfixes for that period. There are also full-featured demo versions to whet your appetite, and you can try out beta pre-releases for free, with cutting-edge experimental features or bugfixes.
Our verdict: The quintessential tool for capturing videos. A steal for the price. 9/10
Before there was a beautiful Linux desktop full of Plasmoids and spinny cubes to screencast, there was Vnc2swf. The C version of this app isn't being maintained any more, but the Python version is and it works just as well.
Vnc2swf was never too big on GUI gloss, and Pyvnc2swf isn't any different. It has a basic user interface, but the real control is in its command line options. The edit script, which can be used to add an MP3 narration to a recorded screencast, or resample and clip a movie and generate an MPEG or FLV, only works its magic via the CLI.
With Pyvnc2swf you can record the whole screen, or specify an area to record by pointing out its dimensions. You can find the dimensions of a window using the xwininfo -frame command (look out for the number next to -geometry in the output).
Sure it can do remote captures, but it's hard to select an area on a remote desktop with Pyvnc2swf.
By default it records videos at 12fps, but this is adjustable. When it's done creating a video, Pyvnc2swf will create an SWF file and an HTML file with the SWF embedded and looping endlessly. This is a good starting point if you need to host the video on your website. On a slow computer, instead of directly producing an SWF, file you can create a .vncrec file, which is faster to encode.
The biggest advantage with Pyvnc2swf and the fact that it captures stuff via VNC is that it'll capture any desktop that you can connect to via VNC. In many cases it'll be your localhost, but you can just as easily screencast a remote desktop. This is also why Pyvnc2swf will run and capture a Gnome desktop as well as KDE or even Xfce for that matter. It'll also capture all the 3D bells and whistles of a modern display, and you can use it to screencast Compiz.
Our verdict: Pyvnc2swf can do remote desktop captures, but not sound. 7/10
Despite its awkward name, Xvidcap is a wonderful little utility that packs an amazing list of features into its GUI and CLI.
The tool works in two modes. In single-frame mode, all individual frames are saved as images, which can be processed before being stitched into a movie. In multi-frame mode, the video is encoded automatically using the default settings. In fact, Xvidcap uses ImageMagick's animate tool to play back the screencast before you've saved it.
Xvidcap can output videos in a variety of formats including MPEG, AVI, ASF, FLV, MOV, DV and VOB. Similarly by default it captures MP3 audio, but can also encode it to Vorbis. For the encoding bit, the tools will work with FFmpeg, Transcode or Mencoder, so you need any one of these on your box.
You can make full-screen captures or just use your mouse to select a recording area, which can be a window or any random space on your desktop. If you want to move around a big area in your screencast, you can specify a smaller capture area and make Xvidcap follow your mouse movements.
As Xvidcap captures images in singe-frame mode, you can touch them up in Gimp.
With Xvidcap you can also pause screencasts, which is great if you have a time-intensive task in your screencast, such as installing software. You can also preset the end of the screencast by specifying the duration or the number of frames.
Xvidcap works on Gnome and KDE, and has no trouble capturing Compiz effects. It has a good FAQ, a detailed man page, and a couple of instructional videos. The only show stopping issue with Xvidcap is that it crashed randomly on all of our test machines.
Our verdict: Outputs videos in various formats and can capture audio, but it's just too unstable at the moment. 7/10
For a long time screencasting on Linux was synonymous with Istanbul, and for many it still is. That's mostly because Istanbul is easy to use and it outputs only in the patent-free Ogg container.
Istanbul inherits its screen capturing ability from the GStreamer plugins. It sits in your task bar and lets you select an area or a particular window to record. You can record audio with your screen captures, and both video and audio are encoded as Ogg. Istanbul also lets you disable recording the mouse pointer, which is useful if your capture is keyboard-driven.
If you like to record narrations later, you can also disable capturing the audio input. Istanbul has a toggle to enable 3D captures and it works perfectly with Compiz. When you're done recording your screencast, Istanbul displays a dialog box where you can preview the recorded video before saving it.
Istanbul is named in honour of Liverpool's fifth European cup triumph.
The tool also has quick options to scale the recorded video. You can reduce it to half or quarter, or just leave it as it is. This might sound like a trivial feature, but you'll be doing this manually with other tools more often than not, as your recording area will vary from full-screen captures to small xterm windows.
There's no option to alter the frame rates, and we couldn't do anything about our videos being choppy. Also Istanbul randomly hangs after you're done recording your screencast, especially when recording sound. You can't do much from the command line, apart from tweaking some GStreamer options, which are mostly for debugging and will have no impact on your capture.
Istanbul hasn't been updated in a while, though the developer told us that he hopes to make a release soon.
Our verdict:Outputs in Ogg, and doesn't offer many configurable parameters such as altering frames per second. 6/10
If you need a screencast that'll work on any browser or any platform, grab Byzanz, which outputs GIF images. GIF uses a lossless compression algorithm so you get a crisp screencast that you can host on your website or blog. No other app produces smaller screencasts for the same capture area. And if you find no other use for it, you can use Byzanz to make yourself an animated avatar.
You can pass options to Byzanz via the command-line or using its Gnome panel applet. Non-Gnome users can only use it via the CLI, but use it they can and we've used it on KDE, and Xfce. By default, it records the mouse pointer, but if you are doing xterm captures, you can turn it off.
If Byzanz doesn't suit your screencasting needs, use it to make animated avatars.
With Byzanz you can record the complete desktop, a particular window, or select an area. The last option blacks out the screen before you select an area, which is then displayed in blue. This isn't very useful, unless you're more interested in a general area of the screen than something specific, because you can't make out windows and other GUI elements in the blacked-out screen.
From the CLI you can limit the duration of the capture, which is set to 10 seconds by default. Byzanz begins capturing one second after it's initialised, but you can delay this further by specifying the delay in seconds on the command-line.
On the negative side, Byzanz doesn't do a good job of recording 3D, so don't expect it to record Compiz effects. Also, the developer isn't working on adding features to Byzanz, because it does what he wanted it to do already, but he's open to incorporating patches.
Our verdict:Nifty little tool for GIF screencasts when you don't need a voiceover. 7/10
Our choice: DemoRecorder
When you get down to recording a screencast there's really very little competition to DemoRecorder.
First let's look at the alternatives. Istanbul was a one-time poster child of desktop screencasting tools for Linux - it was easy to use and saved video in only patent-free codecs. But the program hasn't been updated in a while and it lacks tweakability.
The granddaddy of screencasting tools, Pyvnc2swf works as advertised and offer great flexibility, as long as you are comfortable recording your narrations separately. The biggest advantage with Pyvnc2swf is that it can capture remote desktops.
The top two open source screencasting tools are Xvidcap and RecordMyDesktop. As Xvidcap is the least stable app in the Roundup, RecordMyDesktop is your best bet for recording a screencast without spending any money. While it does offer great flexibility and options, it only outputs to Ogg, which needs to be converted with FFmpeg and the like to a more web-suitable format.
Talking of the web, if you need a truly interoperable screencast that'll run on all platforms, there's no beating Byzanz, which outputs lossless GIF animations.
With the exception of RecordMyDesktop which has a KDE-specific interface, all other open source screencasting tools in this Roundup are primarily designed to work with Gnome, though they work equally well in KDE. But if you must use a K-app, you can try the semi-abandoned ScreenKast tool, which uses VNC. The developer is looking for people who'd be interested in developing it further.
DemoRecorder does everything you can do with these open source tools, and a whole lot more. It can record remote desktops and has a special mode for recording OpenGL apps. Its export scripts cover almost every format out there. Most single-person proprietary enterprises aren't any better than their free software alternatives; DemoRecorder is an exception. If you plan on making screencasts regularly and they'll be viewed on a variety of media, there's really no alternative.
The OpenGL mode in DemoRecorder can't yet play back videos.
There are a couple of tools that weren't covered in this roundup - Wink and ScreenKast. Wink is a freeware app that works by snapping a series of screenshots and coaxing them into a video. Its latest release isn't available to Linux users, and the older version has a broken user interface that displays strange characters throughout.
...Or roll your own
Almost all GUI apps on Linux are just a wrapper around some powerful command-line scripts. Screencasting tools are no different.
Many screencasting apps rely on FFmpeg, which is a powerful program that can convert audio and video into various formats. It can also capture X11 streams, which makes it ideal for recording screencasts and converting them into common formats. The command ffmpeg -f x11grab -r 25 -s 800x600 -i :0.0 /tmp/fftest.mpg will grab X11 input and create an MPEG at 25fps with the specified resolution.
The other option is to use the import and convert ImageMagick tools. Inside a script, import can capture a series of screenshots, which you can then stitch together with convert or FFmpeg into a screencast.
First published in Linux Format magazine