Video Coder Comparison

Here I compare a number of video compressors on the Macintosh under a low bitrate situation of 50kb/s. I used Premiere 5.1 to generate the videos, but these coders are system-wide available (extension folder) so I could have used Quicktime as well. I did not use Quicktime because it does not have de-interlace possibilities which give substantial improvement of the images. The Intel Indeo5.0 coder was installed separately (Intel site) to test it also. You need to install this system extension if you want to play back Indeo videos.
A good guide to compression settings is the sorenson video 3 user guide at the sorenson web site. A somewhat older but still interesting comparison of codecs is available at the doceo website.

No keyframe settings

The following comparison shows what happens if the keyframe rate is not selected. Without this, quality becomes low. You can compare with the keyframe-optimized tests further below. If the targetsize is set to 360x288 without keyframe settings, all compressors give even give worse results (or crash: Cinepak) than with a 180x144 pixel version viewed at double size.

Test video: scale jet taking off, time 12s:11f (=12.44s). Target 50kb/s, targetsize is 180x144 pixels, millions of colors, recompress always at 100% quality. Noise reduction off, deinterlace and better resize on. Gamma=1.0.
Note: I set up the quicktime videos to play at double size, to simplify comparison with the 360x288 mode.


Compressor (settings) Effective datarate (b/s) Video quality
component video 1287744 Very good. But target datarate can not be set and is large!
H261 57684 Severe blocking artefacts.
H263 57684 A bit lower contrast than the original, blurring out of details.
cinepak (maintain datarate by increase compression) 51055 Extremely bad, vibrating blur and very severe blocking artefacts.
sorenson 51043 Light but flickering blocking artefacts.
motion JPEG B (quality set at 45%, single field on) 62830 Quite severe, large vibrating halos around high-contrast areas. Datarate too high.
Indeo 5 coder 47202 Very similar to H263 coder but just a little sharper and packs tighter.

Limiting #keyframes

In order to get more quality out of our 50kb/s bitrate, we need to bring down the number of keyframes. Here we set for a keyframe every 50 frames. Sorenson can handle even much lower keyframe settings, and it will use more keyframes where this encodes more efficient than inter-frame coding, but other coders apparently do not.

Test video: scale jet taking off, time 12s:11f (=12.44s). Keyframe every 50 frames. Target 50kb/s, targetsize is 180x144 pixels, millions of colors, recompress always at 100% quality. Noise reduction off, deinterlace and better resize on. Component video ignores given datarate and is skipped here.
Compressor (settings) Effective datarate (b/s) Video quality
H263 57684 Slightly blurred compared to sorenson.
cinepak w. 'maintain datarate' on 35784 Extreme blocking artefacts. Notice lower-than specified datarate.
sorenson 51061 Light blocking artefacts. Gamma changes.
Indeo 5 48377 Medium halos when enlarged 2x, Very light blocking.

Larger size

We can also try to code the video at a double size, 360x288 pixels, without increasing the datarate. Then the coder has more possibilities to choose regions to assign bits to at the expense of other areas.

Test video: the same jet video, exact the same settings, keyframe every 50th frame. Only change is that targetsize now 360x288 pixels.

Compressor (settings) Effective datarate (b/s) Video quality
H263 54984 Fewer blocking artefacts than sorenson coder, and better colors. But plane becomes completely blurred and invisible at times, especially in the air.
cinepak w. 'maintain datarate' on 51573 Extreme blocking artefacts. NB: Gamma was set to 0.8. With gamma=1.0, the compressor crashes with error -111.
sorenson 51090 Sharper than 180x144 version at same datarate, at cost of slightly more blocking. Very good.
Indeo 5 52241 Severe halos, blurring and blocking artefacts, such that video becomes 'grainy'.

Conclusions

Reducing the number of keyframes is essential for high-quality low bitrate video. Both the H263 and Sorenson compressor do a good job. The Intel Indeo 5 coder does not perform very good at low bitrates, and Cinepak performs very bad. Component video totally ignores the requested datarate and is not usable. Motion JPEG also can not be forced to use the requested datarate.
The Sorenson compressor seems to give more attention to high-contrast edges, at the cost of more blocking, while the H263 gives a more balanced whole but slightly more blurred. The color of the Sorenson decompressor can be corrected a little by setting the gamma slider to 0.8 in the special processing menu of the export function. Here is an example video at 360x288 using gamma 0.8. This does not seem to change the behaviour of the compressor. However, this color change seems an artefact of the decompressor or the quicktime viewer. You can see this if you change the Graphics mode (Quicktime get info, select Video Track in left item list and then Graphics Mode in the right item list) to 'straight alpha', especially blue skies will change colors).



© W.Pasman, 21/7/01