Screencast codec showdown!

Because cameras aren't the only thing videos are recorded with


I found myself wondering which of these codecs (as listed in iShowU) would be best for a screencast:

iShowU's codecs pop-up menu, showing 29 different codecs of various suitability.

I tried searching Google — for specific codecs, at first, followed by more general searches for opinions on codec suitability for a screencast. But I couldn't even find descriptions of the codecs' strengths and weaknesses.

Clearly, there is a void here to fill.


First, the list of output files:

The nine codecs under ten MiB: H.264 Low: 1.3 MiB. H.264 Medium: 2.4 MiB. Sorenson 3 Low: 2.8 MiB. MPEG-4 Low: 3.3 MiB. H.264 High: 4.1 MiB. Sorenson 3 Medium: 4.9 MiB. MPEG-4 Medium: 7.4 MiB. Sorenson 2 High: 8 MiB. Sorenson 3 High: 8.7 MiB. There are 28 others, including the uncompressed source movie, which is 426.6 MiB.

And now the screenshots of each set of output movies. Some pages have a “winner”; think of each codec page as a qualifying round. Codecs qualify based on image quality. The overall winners (for quality and size) will be decided in the final round.

Areas of interest

Map of areas of interest in the source movie.

  1. The xterm window (left edge). High contrast + small text = easy artifacts.
  2. The frame of the building in my desktop picture (just below the xterm).
  3. The background of the Dock.
  4. Adiumy (the green duck). Dithering hits his feathers hard.
  5. The number badges on Mail and Vienna (Vienna is immediately to the right of Mail).
  6. The “software for Mac” part of the iShowU demo bug, especially where it intersects the xterm. Bright green usually darkens under heavy lossy compression.
  7. The iShowU and QuickTime Player icons (far right of the Dock). Artifacts show up here too.
  8. The background of the iShowU window (the brushed-metal window taking up the top-right quadrant). Compression usually flattens it out, making it plain old gray.


My system is a 2.66 GHz 2×2 Mac Pro with 1 GiB of RAM, Mac OS X 10.4.8, and QuickTime 7.1.3. I also used iShowU 1.25 and QTAmateur 1.0.1.

With the exception of PNG, Cinepak, and Sorenson 2, all of the codecs that I tried were set at High, Medium, and Low quality (I consider these to be the three main quality settings). The reasons for the exceptions are:

Also, I did Animation at the other two quality settings in addition to the main three, since the main three looked so good. (I found out later that it's RLE. That's why.)

All the codec settings were configured as follows, when each setting was available:

There was no audio track.

Finally, my source video was a recording made with iShowU in demo mode. What I did in the recording:

  1. Start in the top-left corner.
  2. Move to the top-right corner.
  3. Move to the bottom-right corner.
  4. Move to the bottom-left corner. This area is an important test; my CPU Usage meter is here, and an xterm peeked through here. The xterm was an excellent test of each codec's artifacting.
  5. Move to the center.
  6. Start whirling the mouse around. This tests the codec's ability to handle motion (mostly its effect on file-size).
  7. End recording.

Two seconds separated each step.

Important distinction: I did not attempt to re-record the video in iShowU with each combination of codec and quality. (I started out that way, but quickly realized the logistical and methodological folly of that.) Instead, I recorded the source video using the “Apple None” compressor (i.e. uncompressed), then used QTAmateur to convert the video for each permutation.

One thing I noticed after I originally put this up is that all the screenshots show a strange stretching effect on the very right edge of the frame. I first noticed this on Intermediate, and thought then that it was characteristic to that codec; I looked further, though, and saw that it is actually in all the screenshots, even of the original uncompressed movie. And when I looked at the original movie, I saw that the same artifact is in the movie itself.

So it is a bug in iShowU, not in any of the codecs.

Valid XHTML 1.0! Valid CSS!