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

FLAC - это аббревиатура от Free Lossless Audio Codec (свободный аудиокодек, сжимающий без потерь). Проект FLAC включает:

  • потоковый формат;
  • базовые кодеры и декодеры в виде библиотек;
  • flac, утилиту командной строки, выполняющую сжатие и распаковку файлов .flac;
  • metaflac, утилиту командной строки для редактирования метаданных в файлах .flac;
  • плагины для разных плейеров.

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

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

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

  • Формат FLAC и методы кодирования/декодирования не защищены патентами.
    • Сжатие без потерь: Кодирование PCM данных не приводит к потере информации, следовательно декодируемый аудиофайл абсолютно идентичен тому, который был подан на вход кодеру. Чтобы определить возможные ошибки при передаче файла, для каждого фрейма вычисляется 16-битная контрольная сумма. Целостность на дальнейшем этапе подтверждается подписью MD5 распакованных данных, которая находится в заголовке и может быть проверена при воспроизведении, декодировании или с помощью тестирования.
    • Скорость: Скорость работы при кодировании и декодировании несимметричны. Для декодирования используется только целочисленная арифметика, которая требует значительно меньше вычислений, чем в перцепционных кодеках. Декодирование в реальном времени легко достижимо даже на старых компьютерах.
    • Аппаратная поддержка: Благодаря свободной базовой реализации и простому декодированию FLAC является единственным аудиокодеком, сжимающим без потерь, который имеет аппаратную поддержку.
    • Поточность: Каждый фрейм FLAC содержит достаточно информации для собственного декодирования. Текущий фрейм FLAC не зависит от предыдущих и последующих. FLAC использует коды синхронизации и контрольные суммы, что позволяет декодеру быстро выбирать позицию в текущем потоке.
    • Поиск: FLAC поддерживает быстрый и точный поиск, что полезно не только при воспроизведении, но и дает возможность использовать FLAC в звуковых редакторах.
    • Метаданные: FLAC имеет расширяемую систему метаданных. Новые блоки метаданных могут быть определены и реализованы в будущих версиях без потери обратной совместимости. Сейчас определены типы метаданных для таблиц поиска, тегов и списков разметки аудиодисков. Приложение может использовать блок метаданных APPLICATION после регистрации для него ID.
    • Архивирование: FLAC удобно использовать для архивации, так как сжатие с его помощью не приводит к потере информации. Если в будущем Вы решите использовать другой формат, данные будут восстановлены из .flac файла в первоначальном виде. Кроме контрольной суммы фрейма и подписи MD5, утилита flac имеет возможность проверки, использование которой приводит к тому, что кодируемый поток сразу же декодируется и сравнивается с исходным. Если происходит ошибка, кодер прекращает работу.
    • Архивирование аудиодисков: У FLAC если блок метаданных CUESHEET, в котором сохраняется таблица разметки аудиодиска. Например, можно записать аудиодиск в один файл, а затем импортировать его таблицу разметки при кодировании, чтобы полученный файл имел такое же представление как и диск. Если оригинал аудиодиска будет испорчен, то вы сможете восстановить таблицу разметки, чтобы записать точную копию диска.
    • Устойчивость от ошибок: Благодаря разбиению на фреймы, ошибки в потоке локализуются до уровня фрейма, в котором произошла ошибка (обычно несколько сотых секунды). В некоторых кодеках одна ошибка может привести к потере всего остатка потока.

    Чего нет во FLAC?

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

     Copyright (c) 2000,2001,2002,2003 Josh Coalson