Video Quality

[Note: All the links on this page take you to an automatically generated page with results of the codecs that were run. From this page you can download the result or look at (click on them) frame grabs for individual frames. Also, at the top of each page is a link to one or more other pages. Each of these pages is for comparing the different versions of a frame grab at the same place in time (2 sec, 5 sec, etc). On this pages is a Java Script program that you can use to automatically cycle through different versions to compare them.]

The quality of the video that you watch depends on dozens or even hundreds of different parameters that can (sometimes) be set when the video is encoded.  The two most important of these are (usually) the codec used to encode the video and the bit-rate that it is encoded at. 

To see the effects that different bit-rates can have on a file, look at this page, containing encodings (all in h.264, 1080p) with bit-rates ranging from 250kbps-10,000kbps.

To illustrate the differences in different codecs we have this page where we show the results from running an encoding on the same clip (480p) with many different codecs.  However, the bit rate does not change between these and is fixed at 4000kbps.

Perfect/Good Quality

For each codec used to encode video, one would assume that there would always be a simple rule you could use to determine the bit-rate that would give you a near perfect or just "good enough" quality to your video. Sadly, that isn't the case, there are many different variables that make every video encode just a bit differently, however for one clip you can compare all the different codecs and find a setting that is good for that specific clip, which we have done below. These values won't hold true for other clips with more/less motion, color, darkness, etc, but they could be a good rule of thumb to get started.

In the table below are the results of running different video codecs against the same clip from the animated movie sintel. For each column, encoding each video with the shown bit-rate will produce an video with approximately the same quality for each line, all results are in kbps (thousand bits per second). 

The clip original clip used for all the different encodings was built from lossless .png files of each frame.  The video is 1920x816 (we'll call this 1080p even though it is not) and 960x408 (we'll call this 480p even though it is not).  The each frame of 480p video has 1/4 the size (in pixels) of the 1080p video. 

The values in the chart below were all determined by watching the videos created using many different bit-rates for each encoder.  Of all the videos the one with the lowest bit-rate to give an "Almost Perfect" or "Good" quality result was selected. To determine what was "Almost Perfect" we watched the clips and looked at images from individual frames of video (available on the pages for the individual runs by clicking the column header), then tried to pick a level that was the same across all the videos. Many of the encoders couldn't reach a quality level that was "Almost Perfect", so they are listed as "not possible".  To determine what was "Good" the same methodology was employed, but this was more focused on watching the video and less on looking at the individual frames as all the individual frames had noticeable artifacts from the encoder.

Because the results were all determined by simply watching the clips and looking at the frames, the results are subjective, but should give you a good feeling for the power of the various codecs, when used with the default settings. 

To build these clips raw video, ffv1, mpeg4, mjpeg, and mpeg2 were all encoded with the encoders inside the ffmpeg tool.  The other encoders that were used are: libx264 (with various pre-set configurations: lossless_max, lossless_medium, lossless_ultrafast, veryslow, medium, and ultrafast), libvpx, and libtheora.  The -2p or -1p after each line signifies one-pass or two-pass encoding.

Codec
1080p Almost Perfect
1080p Good
480p Almost Perfect
480p Good
raw video
(880000)
n/a
(234000)
n/a
ffv1 (lossless)
(107000)
n/a
(31500)
n/a
h.264-lossless_max
(48000)
n/a
(18000)
n/a
h.264-lossless_medium
(50000)
n/a
(15000)
n/a
h.264-lossless_ultrafast
(61000)
n/a
(14000)
n/a
h.264-veryslow-2p
7000
2000
4000
1000
h.264-medium-2p
8000
2500
4500
1500
h.264-ultrafast-2p
not possible
6000
8000
3000
h.264-veryslow-1p
11000
2500
4500
1500
h.264-medium-1p
12000
3000
5000
2000
h.264-ultrafast-1p
not possible
7000
10000
4000
vp8-2p
not possible 3000
not possible 2000
vp8-1p
not possible 4000
not possible 2500
theora-2p
not possible 6000
not possible 4000
theora-1p
not possible 9000
not possible 4500
mpeg4-2p (part 2)
not possible 6000
not possible 5000
mpeg4-1p (part 2)
not possible 8000
not possible 6000
mjpeg-2p
not possible 15000
not possible 8000
mjpeg-1p
not possible 17000
not possible 8000
mpeg2-2p
not possible 8000
not possible 6000
mpeg2-1p
not possible 10000
not possible 7000