|
|
Log in / Subscribe / Register

Development

Linux screen recording

By Jake Edge
February 1, 2012

Turning an on-screen session into a video is a widely used technique for a number of different uses, but one of its main use-cases is for education. One can find any number of "screencasts" on YouTube or elsewhere that show how to do particular tasks using various tools like Gimp or Blender. Depending on the task, it's generally much easier to show people how to do something rather than to try to explain in words the steps required. There are a few different Linux tools available for doing screen recording.

Perhaps the best-known choice is recordMyDesktop, which is actually a command-line tool that provides a means to turn a region of the desktop into a video—in Ogg-Theora-Vorbis format. As the man page describes, there are lots of different options that can be used to control the area that will be recorded, the video format and frame rate, sound options, and so on. But, since screen recording is an inherently visual task, there are both GTK and Qt front-ends available.

[recordMyDesktop window]

Both of the front-ends are written in Python using either pyGtk or pyQt4, and both, not surprisingly, provide a GUI interface to the recordMyDesktop command line. As one might guess, the front-ends pretty much look and act the same (the Qt version is seen at right). In the simplest case, one simply indicates the region of interest on the preview pane. Once the region is selected, hitting the "Record" button starts the video capture. Amusingly, because the preview pane shows the entire window, including the qt-recordMyDesktop window itself, one gets an "infinite" regression in the pane.

One can also choose a particular window, rather than a region, by using the "Select Window" option. But, in either case, it is really the rectangular region of the visible screen that is being recorded. If another window is moved into the region, or a different virtual desktop is chosen, that's what goes into the video. Depending on the use, that may be exactly what is called for, but, for other uses, like recording an online lecture or webcast, it may require extra care. Popping up an email client or web browser to quickly check something may result in unwanted video artifacts.

Audio can also be recorded, either from the audio that accompanies the content or from a local microphone. For the specific recording I was doing (a Go class lecture on the KGS Go Server), it required switching the sound source in recordMyDesktop from "DEFAULT" to "pulse" and using pavucontrol to change the recording source for the application to the "Monitor" of my sound card. It was a little non-obvious, at least to me, but there were multiple solutions that Google led me to, including this.

[recordMyDesktop Advanced window]

The "Advanced" settings allow changing things like the sound source mentioned above, but also frame rate, on-the-fly encoding, mouse cursor settings, and more. As with video in general, files can get fairly large for a 90-minute class, so reducing the size of the recording area and the frame rate will produce smaller video while still capturing the information needed. A 2 frames per second (fps) setting, for example, may be fine for showing human-initiated screen changes and can make a big reduction in size from the default 30fps.

The recording is stopped from a panel applet (or a signal to the recordMyDesktop process), which will then start the encoding process (unless on-the-fly encoding is chosen). The end result is a out.ogv file that can be played in Totem, Dragon Player, or other video players. Sadly, sharing Ogg format video with much of the rest of the world is difficult, so transcoding to WebM (maybe) or H.264 is probably required. Transmageddon or Arista (for those not running the GStreamer bleeding edge) fit the transcoding bill nicely.

Another option for recording is Istanbul, which has a minimal "GUI" via the menu from its panel applet. It lacks many of the advanced features of recordMyDesktop, including the ability to directly record audio. One can use a separate audio recorder and try to synchronize the audio and video (as the Fedora wiki suggests), but that may prove somewhat painful. Another option is Byzanz, which is a command-line-only tool that also lacks audio support (and, seemingly, a home page).

From discussions with other students who use OS X or Windows, the choices there are more varied, but generally not free (in either sense of the term). I found recordMyDesktop to be more than adequate for the task at hand, and it would seem that lots of others are using it as well. If audio is not required (or can be recorded separately, perhaps by narrating while watching the video for example), Istanbul or Byzanz may suit as well. Foolishly, I set out on this task thinking that Linux options might be difficult to find or use—video applications for Linux have had that reputation in the past—but was happily surprised to find that it wasn't the case.

Comments (23 posted)

Brief items

Quotes of the week

I really urge people to think about openness and freedom, two amazingly important concepts, beyond the boundaries of simple software licensing. Licensing is important, and we take it pretty damn seriously .. but we ought to look at bigger picture and really think about how to make our digital tools open and free in all sorts of ways.
-- Aaron Seigo

But whereas I previously held for Java a cordial dislike borne of having only a cursory notion of how it worked, now my dislike for the language can no longer be called at all "cordial", for familiarity has bred contempt.
-- Tom Christiansen

Comments (39 posted)

Firefox 10 released

The Firefox 10 release is out. New features include better add-on compatibility, anti-aliasing for WebGL, CSS 3D transforms, a full-screen API for HTML5 applications, and more; see the release notes for details.

Comments (1 posted)

Freemyipod

The freemyipod project aims to provide tools and documentation that will allow you to jailbreak your iPod so that you can run alternative firmware such as Rockbox. So far only clickwheel devices are supported. (Thanks to Ashley Hull)

Comments (none posted)

Git 1.7.9 released

The Git 1.7.9 release includes a long list of new features, including localization support with gettext, the ability to work with platform-level key management mechanisms, the ability to pull from a signed tag (and keep the relevant metadata), a new option to create GPG-signed commits, a side-by-side diff display in gitweb, and more.

Full Story (comments: none)

ImageZero for lossless photo compression

Christoph Feck has announced the first release of ImageZero, a lossless photo compression tool. "Being twice as fast as PNG when decompressing (and more than 20 times faster when compressing) it achieves compression ratios that are near or better than PNG for natural photos, sometimes even better than JPEG-LS for very high quality photos." The code is available on gitorious. (Thanks to Paul Wise).

Comments (25 posted)

Mercurial 2.1 released

Version 2.1 of the Mercurial source code management system is out. The big feature this time around is phases: "Phases improve safety of history rewriting and provide control over changesets exchanged among different repositories. Phases are intended to transparently 'just work' for most users." There are also some bookmark improvements, better copy detection, and more; details are in the WhatsNew page.

Full Story (comments: 1)

ownCloud 3 released

Version 3 of the ownCloud personal cloud system has been announced. New features include a browser-based text editor, an integrated PDF viewer, a photo gallery application, an improved calendar application, and, inevitably, an application store. "The browser based text editor supports 35 programming languages for syntax highlighting, keyboard shortcuts, drag and drop text, automatic indent and outdent, unstructured/user code folding and Live syntax checker (for JavaScript, Coffee and CSS). The editor is based on the ACE JavaScript Editor. The editor supports basic text files. Editing more advanced formats like doc(x) and ODT is planned for future releases." LWN looked at ownCloud in early January.

Comments (none posted)

Newsletters and articles

Development newsletters from the last week

Comments (none posted)

Almost There - PyPy's ARM Backend

The PyPy Status Blog has an update on the status of the PyPy port to the ARM architecture. "The current results on ARM, as shown in the graph below, show that the JIT currently gives a speedup of about 3.5 times compared to CPython on ARM. The benchmarks were run on the before mentioned BeagleBoard-xM with a 1GHz ARM Cortex-A8 processor and 512MB of memory. The operating system on the board is Ubuntu 11.04 for ARM."

Comments (none posted)

Page editor: Jonathan Corbet
Next page: Announcements>>


Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds