Bitrate and Resolution Guide

First: THERE'S NO IDEAL BITRATE AND OR RESOLUTION!!!!! These settings depend on what you're driving for - high resolution - good image quality, size, etc.

First the basics: You should not use plain DivX3 to encode your movies anymore. First of all the quality isn't great and second the filesize predictability is extremely bad, so you will almost never end up with a file having the size you want. Use a good MM4 (Mixed MPEG-4) program like FairUse or Nandub / Gordian Knot and you'll get good results and filesize predictability. In the case of Nandub you have to encode twice but the results are more than worth the time. For DivX4 basically the same applies though its quality is better in 1 pass mode already, but 2 pass is still to be prefferred.

A few more facts: Different movies compress differently. Take Matrix as an example. It compresses incredibly well and despite its lengthit will look good on only a single CD. There are movies that are only 1h30 long and that will look crappy if you encode them using the same parameter as your 1 CD Matrix rip. That's the reason we have tools like the compressability check in GordianKnot which will help you select a resolution that is suitable for your movie.

The bitrate is given in bits/s, which means bits per second. To determine how many bits a single frame (picture) will get let's do some basic math: There are as many frames per seconds as your movie speed which is given in FPS. For NTSC we mostly use 23.976fps (frames per seconds) and for PAL (Europe) we use 25fps. Since PAL movies contain a sped up version of original movie (which is shot at 24fps by the way) it will be shorter than its NTSC counterpart. Now, say we have a bitrate of X bits/s. That means we get X/23.976 or X/25 bits per frame respectively. The more frame per second the less bits per frame you'll get if you don't change the bitrate, and the number of bits per frame essentially determines the quality. Furthermore, a frame has a number of pixels, the height times the width of the frame, and the higher you resolution the higher the number of pixels. So, if we still stick to our given bitrate, if we increase the resolution we get less bits per pixel which once again means less quality. Now if you're thinking that you could just reduce the framerate, this won't work. If you want to encode say at 20fps instead of 25fps you could either just slow down the movie by having it play 20 frames per second instead of 25 frames, but then the movie would only get longer, plus you'd have a change in pitch of the audio track (you'd have to change the pitch manually using a wave editor, and then the pitch being lower everything would "lower"). The other possibility would be to discard a certain amount of frames. Of course this can be done and you'd actually have more bits per second, but which frames to discard? Unless you decimate the framerate by two you would definitely notice the frames you would have discarded, the video would "jump" suddenly and that's not desirable. So, stick to the given framerate, always.

Here are some general calculation rules. First let's take a look at the output resizer in mpeg2avi or the values you have to use in FlaskMpeg when you decide not to crop the black bars - remember: VERY BAD IDEA! :

16:9 movies: Chose a horizontal resolution for the output video, for instance 640. Then calculate the Y downsizer as follows: 640*9/16=360. If it's not a multiple of 8 round to the closest integer - that will create a small error but nothing too tragic.

4:3 movies: Chose a horizontal resolution for the output video, for instance 512. The calculate the Y downsizer as mentioned before but respecting the aspect ratio of the video, that is : 512*3/4=384.

Or the engineering way: mod8(round(desired_horizontal_resolution/aspect_ratio_flags_of_the_source))=0. For FlaskMpeg you can only use sizes a multiple of 16 so it's mod16(..)=0. Keep in mind that enhanced for 16:9 TVs, enhanced for widescreen TVs, anamorphic widescreen and the likes mean 16:9, fullscreen, 1:1.33, pan&scan or standard edition will mean 4:3 and so does letterboxed widescreen. If you're unsure you can check the Amazon DVD title catalog, they usually have aspect ratio as well as format. 


Now let's take a look at cropping:

1:2.35 movies: Assuming that you want a horizontal output size of 640 you'll calculate the final size of the video as follows: 640/2.35=272.34. Round that to the closest multiple of 8 (16 for FlaskMpeg) will result in 640x272.

1:1.85 movies: Let's take a horizontal output size of 512. That makes a vertical size of 512/1.85=276.75 or rounded 512x272.

Or again as a formula: mod8(round(desired_horizontal_resolution/aspect_ratio_of_the_movie))=0. Again, for FlaskMpeg this rule should be replaced by mod16(..)=0.

Please note the difference between the aspect ratio of a movie and TV format.

There's a bunch of profiles for the mpeg2avi GUI which you can use. If you have a PAL source, simply check PAL instead of the default NTSC - the checkboxes right of the DVD video logo. 

Suggested resolutions (these follow to the x16 rule for optimal compatibility)

1:2.35 movies: 720x304, 640x272, 576x240, 512x224, 480x208, 400x176

1:1.85 movies: 720x384, 640x352, 576x304, 512x272, 480x256, 400x224

1:1.33 movies: 720x544, 640x480, 576x432, 512x384, 480x368, 400x304