From Hydrogenaudio Knowledgebase
Revision as of 18:31, 25 May 2007 by Gottkaiser (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
MP3packer screenshot
rearrange and compress MP3 data
Developer(s) Reed Wilson
Release information
Initial release {{{released}}}
Stable release 1.17 (23-05-2007)
Preview release
Operating system Windows and major Unix
Additional information
Use rearrange, compress
License GPL
Website Homepage


MP3packer is a program which can rearrange the data within an MP3 to fulfill specific goals. By default, the program generates the smallest MP3 possible (with the least padding). However, many people also use it to turn VBR files into CBR for use with players which don't support VBR.

It can save space by storing frame data in the smallest possible frame. Usually MP3s are already stored in the most efficient way possible. However, for high-bitrate CBR files (like --preset insane) there can be a lot of wasted space


  • Can make --preset insane files up to 10% smaller losslessly (depending on the LAME version used)
  • Squeezes out all the padding it can from any MP3 (Will not produce a larger file, unless you use the -b switch or something goes wrong)
  • Writes valid LAME / XING header for proper VBR seeking
  • Many people also use this backwards, to losslessly turn VBR into larger CBR files to humor players which can't handle VBR
  • Includes a brute-force compression optimization option to further compress files
  • works on directories

How It Works

-z switch: The default operation is to choose the minimum frame size to fit the data and will also minimize the data size. This is completely lossless, and is equivalent to decompressing a ZIP file and recompressing with a more aggressive setting. It attempts to minimize the data by doing a brute-force search for the optimal parameters, so it takes much longer than it would normally.

-b switch: Setting the -b switch will set the minimum bitrate for each frame. Using this switch will make more room in small frames for other frames' data, so it will also generally reduce the maximum bitrate as well. There is no direct control over the maximum bitrate, since there may simply be too much data to fit into a smaller frame. The exact format of the parameter is a bit odd: if the bitrate given is a valid frame bitrate, the minimum bitrate is dithered between padded and unpadded frames. If the bitrate is one more than a valid frame bitrate, then the minimum is a padded frame of bitrate one less than the given. Anything else is rounded up to the next highest unpadded bitrate.

-r, -R switches: After mp3packer has chosen an output bitrate for a given frame, there is generally a range of positions to put the actual data. The data can be packed as much as possible into the previous frame, or it can be set to fill up the current frame as much as possible. Usually it is best to put as much as possible into previous frames, since this will maximize the space available for any subsequent frames. However, if the minimum bitrate is adds enough padding, there is no reason to cram the data into previous frames; it's just going to move around the padding. The default is to pack as far behind as possible if the -b switch is not given, since there is usually no problem filling up the frames. If a minimum bitrate is specified then the frames are pushed as far up as possible without affecting any of the following frames. The -r switch will attempt to always push data as far up as possible, even if a minimum bitrate is not specified. Conversely, the -R switch will push the data into previous frames as possible

Operating Systems

  • Windows
  • Linux
  • should work perfectly on any other platform with an OCaml port

External links