6 Jul 2006 company   » (Master)

So there's lots of discussion about screencasting going on. And since I'm the Byzanz guy, I'll add my stuff to this discussion.

While thinking about how to extend Byzanz and what features to add to it, I came up with four requirements for a good screencasting application on Linux, which are, in descending importance:

  1. Can be played back inside a browser with a default installation of current versions of Windows, RHEL and Ubuntu.

    This is important because most screencasts are made for the web and for a wide audience. And these audiences probably use an average distribution and are not into installing weird software. They probably just use the default. This is why I picked Windows (the biggest audience) and Linux (a big audience for recordings of Linux desktops).

  2. Can be recorded on a recent Fedora or Ubuntu with a default install and an install of the recorder.

    It should not be hard to get going. If there's a custm compile needed or packages are required that for some reason cannot be included in the package tree (think multimedia and patents here), then it's not an easy tool.

  3. Has a decent quality and file size.

    This is fairly obvious. You don't want to wait an aeon until the download is finished and you want to be able to see what the screencast is about. And this point requires special care because a lot of video formats are bad for screencasts since they fail to produce good enough recordings of text.

  4. records audio

    While this sounds fairly easy ("just add the feature!"), it becomes a problem when choosing the right format. It's also currently a problem in the "just works" department because there's quite some setup required in all the apps I've used that support audio input. Even Ekiga, which is a simple to use multimedia application, still has a druid.

So with these 4 points I set out to find a format suitable for recording screencasts. And I haven't found one. There's a lot of formats that sort-of work, but none of them does all 4.
  • GIF does (1) and (2) and is ok for (3). That is, until you start recording images or videos, because the format only supports 256 different colors and videos or images tend to use all the 16 million different ones. And the file size starts to suck, too. GIF totally fails at (4), because it has no sound.
  • Flash is the probably the best choice for (3) and (4), might work for (1) - I have no clue about Flash playback in current Linux distros, but totally fails at (2). Flash audio is MP3 and currently no distro ships an MP3 encoder in their main repository. Add to that the missing availability of flash encoding libraries in Linux and especially Linux distros.
  • All video formats (think MPEG, AVI formats or OGG THEORA here) do (4) and are ok at (3). But none of them does (1). Either they work in Windows or they work in Linux. Probably they work nowhere because browser plugins for video playback aren't installed by default. And the we haven't touched (2) which is hard becase multimedia production enters the patent minefield again which makes distros not ship encoding libraries.
  • JAVA is an option. A custom Java applet for playing back screencasts could easily handle (3) and (4). And it would do (1) and (2) for every distro that has a JRE and Java browser plugin installed. Unfortunately this is the first problem. Most current Linux distributions don't have that installed. And the second problem is that a good Java applet is missing and noone has stepped up yet to code a screencast applet.
So currently, even though I have written an application that in my opinion almost perfectly manages the first 4 points of Quim's requiremens, I can't do anyting right now to solve the last ones because I'm lacking a format that would manage them. I'd love to, but I have no clue how. Suggestions welcome.

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!