|
This is similar to how Zip works, except with FLAC you will get much
better compression because it is designed specifically for audio, and
you can play back compressed FLAC files in your favorite player (or
your car or home stereo, see supported devices) just like you would an MP3 file.
FLAC is freely available and supported on most operating systems,
including Windows, "unix" (Linux, *BSD, Solaris, OS X, IRIX), BeOS,
OS/2, and Amiga. There are build systems for autotools, MSVC, Watcom C,
and Project Builder.
The FLAC project consists of:
- the stream format
- reference encoders and decoders in library form
- flac, a command-line program to encode and decode FLAC files
- metaflac, a command-line metadata editor for FLAC files
- input plugins for various music players
When we say that FLAC is "Free" it means more than just that it is
available at no cost. It means that the specification of the format is
fully open to the public to be used for any purpose (the FLAC project
reserves the right to set the FLAC specification and certify
compliance), and that neither the FLAC format nor any of the
implemented encoding/decoding methods are covered by any known patent.
It also means that all the source code is available under open-source
licenses. It is the first truly open and free lossless audio format.
(For more information, see the license page.)
Notable features of FLAC:
-
Lossless:
The encoding of audio (PCM) data incurs no loss of information, and the
decoded audio is bit-for-bit identical to what went into the encoder.
Each frame contains a 16-bit CRC of the frame data for detecting
transmission errors. The integrity of the audio data is further insured
by storing an MD5 signature of the original unencoded audio data in the file header, which can be compared against later during decoding or testing.
- Fast:
FLAC is asymmetric in favor of decode speed. Decoding requires only
integer arithmetic, and is much less compute-intensive than for most
perceptual codecs. Real-time decode performance is easily achievable on
even modest hardware.
-
Hardware support: Because of FLAC's
free reference implementation and low decoding complexity, FLAC is
currently the only lossless codec that has any kind of hardware
support.
-
Streamable: Each FLAC frame contains
enough data to decode that frame. FLAC does not even rely on previous
or following frames. FLAC uses sync codes and CRCs (similar to MPEG and
other formats), which, along with framing, allow decoders to pick up in
the middle of a stream with a minimum of delay.
-
Seekable: FLAC supports fast
sample-accurate seeking. Not only is this useful for playback, it makes
FLAC files suitable for use in editing applications.
-
Flexible metadata: New metadata blocks
can be defined and implemented in future versions of FLAC without
breaking older streams or decoders. Currently there are metadata types
for tags, cue sheets, and seek tables. Applications can write their own
APPLICATION metadata once they register an ID
-
Suitable for archiving:
FLAC is an open format, and there is no generation loss if you need to
convert your data to another format in the future. In addition to the
frame CRCs and MD5 signature, flac
has a verify option that decodes the encoded stream in parallel with
the encoding process and compares the result to the original, aborting
with an error if there is a mismatch.
-
Convenient CD archiving: FLAC has a "cue sheet"
metadata block for storing a CD table of contents and all track and
index points. For instance, you can rip a CD to a single file, then
import the CD's extracted cue sheet while encoding to yield a single
file representation of the entire CD. If your original CD is damaged,
the cue sheet can be exported later in order to burn an exact copy.
-
Error resistant: Because of FLAC's
framing, stream errors limit the damage to the frame in which the error
occurred, typically a small fraction of a second worth of data.
Contrast this with some other lossless codecs, in which a single error
destroys the remainder of the stream.
What FLAC is not:
-
Lossy. FLAC is intended for lossless compression only, as there are many good lossy formats already, such as Vorbis, MPC, and MP3 (see LAME for an excellent open-source implementation).
- SDMI compliant, et cetera. There is no intention to support any methods
of copy protection, which are, for all practical purposes, a complete
waste of bits. (Another way to look at it is that since copy protection
is futile, it really carries no information, so you might say FLAC
already losslessly compresses all possible copy protection information
down to zero bits!) Of course, we can't stop what some misguided person
does with proprietary metadata blocks, but then again, non-proprietary
decoders will skip them anyway.
|