| | начало | | | новости | | | файлы | | | характеристики | | | цели | | | формат | |
| | id | | | сравнение | | | разработка | | | документация | | | ссылки | | | авторы | |

| | english | | | русский | |

## FLAC: характеристики

FLAC - это аббревиатура от free lossless audio codec (свободный кодек, обеспечивающий сжатие без потерь). Проект FLAC включает:

> - потоковый формат,
> - библиотеку `libFLAC` для базовых кодеров и декодеров и интерфейса для метаданных,
> - объектную оболочку `libFLAC++` для `libFLAC`,
> - `libOggFLAC` и `libOggFLAC++`, обертки кодеров и декодеров `libFLAC` и `libFLAC++`, соответственно, для доступа к потокам FLAC в контейнере Ogg,
> - `flac`, утилиту командной строки, выполняющую сжатие и распаковку .flac файлов,
> - `metaflac`, утилиту командной строки для редактирования метаданных в файлах .flac,
> - плагины для разных плейеров (Winamp, XMMS, ведется работа над другими).

"Свобода" означает, что спецификация потокового формата относится к категории public domain (проект FLAC оставляет за собой право устанавливать спецификации и сертифицировать относящиеся к нему продукты на совместимость), а также то, что ни формат, ни один из реализованных методов кодирования/декодирования не запатентованы. Это также значит, что исходные тексты библиотек доступны по лицензии LGPL, а исходные тексты для `flac`, `metaflac` и плагинов по лицензии GPL.

FLAC компилируется на множестве платформ: Unixes (Linux, *BSD, Solaris, OS X), Windows, BeOS и OS/2. Имеются системы сборки для autoconf/automake, MSVC, Watcom C и Project Builder.

Характеристики FLAC:

> - Формат FLAC и методы кодирования/декодирования не защищены патентами.
> - FLAC сжимает файлы без потерь. Кодирование PCM данных не приводит к потере информации, следовательно, декодируемый аудиофайл абсолютно идентичен тому, который был подан на вход кодеру. Чтобы определить возможные ошибки при передаче файла, для каждого фрейма вычисляется 16-битная контрольная сумма. Целостность на дальнейшем этапе подтверждается подписью MD5 распакованных данных, которая находится в заголовке и может быть проверена при воспроизведении, декодировании или с помощью тестирования.
> - FLAC разработан для сжатия аудиоданных. Теоретически, `flac` может компрессировать без потерь любые другие данные (если передавать их как 8-битный моно raw-файл), однако выходные файлы получаются почти такого же размера.
> - Возможности сжатия во FLAC расширяемы. Это означает, что в будущих версиях формата могут быть добавлены новые методы без потери обратной совместимости.
> - Реализованные на данный момент методы компрессии создают потоки меньшего размера, чем Shorten (кодек с открытыми исходными текстами, являющийся текущим стандартом сжатия без потерь "у них"). Время кодирования зависит от метода, но обычно сравнимо с Shorten и LAME. Самые активные методы могут работать очень медленно. Подробнее об этом можно посмотреть на странице сравнение.
> - FLAC рассчитан на быстрое декодирование. Декодирование в реальном времени легко достижимо даже на старых компьютерах, так как для него требуется только целочисленная арифметика.
> - FLAC удобно использовать для архивации, так как сжатие с его помощью не приводит к потере информации. Вы не привязаны к формату. Если в будущем Вы решите использовать другой формат, данные будут восстановлены из .flac файла в первоначальном виде. Кроме контрольной суммы фрейма и подписи MD5, утилита `flac` имеет возможность проверки, использование которой приводит к тому, что кодируемый поток сразу же декодируется и сравнивается с исходным. Если происходит ошибка, кодер прекращает работу.
> - FLAC - потоковый формат. Это значит, что каждый фрейм содержит достаточно информации для собственного декодирования. Текущий фрейм FLAC не зависит от предыдущих и последующих. FLAC использует коды синхронизации и контрольные суммы, что позволяет декодеру быстро выбирать позицию в текущем потоке.
> - FLAC поддерживает быстрый и точный поиск, что полезно не только при воспроизведении, но и дает возможность использовать FLAC в звуковых редакторах.
> - FLAC имеет расширяемую систему метаданных. Новые блоки метаданных могут быть определены и реализованы в будущих версиях без потери обратной совместимости. Приложение может использовать блок метаданных `APPLICATION` после регистрации для него id. Добавленные тэги ID3 и ID3v2 к .flac файлам не влияют на поцесс декодирования.

Некоторые дополнительные преимущества, вытекающие из приведенных выше характеристик:

> - Потоки FLAC могут быть воспроизведены слитно, без пауз между треками. Таким образом, Вы можете сжать концертный альбом, разделенный на треки, и добиться его непрерывного воспроизведения.
> - Механизм точного поиска позволяет организовывать различные режимы воспроизведения: в плейере можно сделать индексный поиск, различные циклы или другие виды структурированного воспроизведения. Это очень полезно, например, для dj'ев или для репетиций, когда нужно повторять определенные пассажи.
> - В итоге вы получаете гибкость wav-файла в сжатом потоковом формате.

Чего нет во FLAC?

> - FLAC не осуществляет сжатие с потерями. Для этого существует много хороших форматов, таких как mp3 (отличная реализация с открытими исходными текстами LAME) и Ogg Vorbis.
> - FLAC не будет SDMI совместимым и т.п. Перед проектом не стоит цели поддерживать методы защиты, которые на практике лишь увеличивают объем файла. Конечно, мы не собираемся препятствовать кому-либо создавать соответствующие блоки метаданных, однако, стандартные декодеры все равно будут их пропускать.

Copyright (c) 2000,2001,2002 Josh Coalson