Формат FLAC (Free Lossless Audio Codec)

FLAC

  • Разработчик: Организация Xiph.Org, Джош Колсон
  • Первый релиз: 20 июля 2001 года
  • Стабильный релиз: 1.2.1  / 17 сенятбря 2007 года
  • Операционная система: кросплатформенный
  • Лицензия: утилиты командной строки под GBU GPL, библиотеки под BSD
  • Сайт: flac.sourceforge.net

FLAC является кодеком для сжатия аудио данных, изначально написанный Джошем Колсоном. Как следует из названия, FLAC осуществляет сжатие данных, оставляя при этом их идентичными оригиналу, таким образом, ни одна часть данных не теряется – это и является основной задачей алгоритмов сжатия без потерь. Цифровая аудио запись (такая как CD-Audio трэк), сжатая в формат FLAC может быть распакована в абсолютно идентичную копию аудио данных. Степень сжатия формата FLAC, как правило, варьируется от 50 до 60% от оригинального размера.

FLAC подходит как для ежедневного прослушивания записей, так и для архивирования, так как имеет поддержу тэгов, встроенных обложек и быстрого изменения места воспроизведения. Бесплатность и открытость формата делают его хорошо поддерживаемым различным программным обеспечением. Поддержка воспроизведения на различных устройствах достаточно ограничена на данный момент, но, тем не менее, формат поддерживается большим количеством аппаратных устройств по сравнению с конкурирующим форматом WavPack.

Аппаратная поддержка формата

Здесь перечислены некоторые устройства, которые поддерживают аппаратное декодирование формата.

Домашние кинотеатры

  • Squeezebox
  • Transporter
  • Sonos
  • Philips Streamium (NP2500/NP2900/MCi900)
  • Onkyo (TX-NR1008/808/708)
  • Pioneer VSX-LX70
  • Olive
  • Hifidelio
  • Netgear EVA8000
  • Escient
  • Blackbird
  • ReQuest
  • Arcus DAR300
  • McIntosh MS300
  • Helios X5000
  • Zensonic Z500
  • Ziova     
  • Sooloos
  • HD MediaBox
  • TViX 4/5000 Series
  • Sangean WFR-20
  • MediaREADY MC

Автомобильные акустические системы

  • PhatBox
  • URAL ConceRt CDD

Портативные плееры и устройства

  • Cowon iAUDIO
  • i-Station mini DX
  • Iwod G10
  • KNC HR-2800
  • Meizu M6 Miniplayer, и др.
  • Onda VX737, и др.
  • Rio Karma
  • Teclast TL-29, и др.
  • TrekStor Vibez
  • Bluedot BMP-1430

История

Разработка была начата в 2000-м году Джошем Колсоном. Формат битового потока был зафиксирован, когда FLAC вошел в бета стадию с версией 0.5, выпущенной 15 января 2001 года. Версия 1.0 была выпущена 20 июля 2001 года.

29 января 2003 года организация Xiph.Org и проект FLAC объявили о включении проекта FLAC под символ Xiph.Org.

17 сентября 2007 года была выпущена версия 1.2.1.

Проект

Проект FLAC состоит из следующих частей:

  • Формата потоков
  • Простой формат-контейнер для потоков, также называемый FLAC (Нативный FLAC или Native FLAC)
  • libFLAC – библиотека эталонного кодера и декодера, а также интерфейс для метаданных
  • libFLAC++, являющейся объектно-ориентированной надстройкой над библиотекой libFLAC
  • flac – утилита командной строки, основанная на libFLAC для кодирования и декодирования потоков формата FLAC
  • metaflac – утилита командной строки, являющаяся редактором метаданных (тэгов) для файлов .flac
  • Входные плагины для различных музыкальных плееров (Winamp, foobar2000, XMMS, musikCube и многих других)
  • Учитывая слияние проекта с организацией Xiph.Org, формат-контейнер Ogg также является вполне подходящим для потоков формата FLAC (также называемый Ogg FLAC)

Бесплатность формата означает то, что спецификация его потокового формата может быть реализована кем угодно, без каких либо прав на это (тем не менее, Xiph.Org оставляет за собой право устанавливать спецификации формата и сертифицировать их соблюдение). Также реализация любых методов кодирования / декодирования формата FLAC не может быть включена в патент. Это означает, что эталонная реализация является свободным программным обеспечением. Исходные коды libFLAC и libFLAC++ доступны под лицензией BSD, а утилиты командной строки – под GPL.

Одной из поставленных целей проекта FLAC является призыв разработчиков, не создавать какие бы то ни было функции защиты от копирования.

Сравнения

FLAC был разработан для эффективного сжатия аудио данных, в отличие от обычных алгоритмов, таких как DEFLATE (ZIP и gzip), которые используются в других кодеках без потерь. В то время как ZIP может сжать CD-Audio файл на 10-20%, FLAC достигает коэффициентов сжатия 30-50% для большинства музыки, и особенно хорошо сжатие FLAC показывает при работе с голосовыми записями. Для сравнения, кодеки с потерями могут достигать коэффициентов сжатия в 80% и более, отбрасывая часть данных из исходного звукового потока.

FLAC использует линейное прогнозирование для конвертации сэмплов в небольшие последовательности некоррелирующих чисел (известных как остаточные), которые хранятся используя эффективное кодирование Голомба-Райса. Также в формате FLAC используется кодирование блоков с идентичными сэмплами, таких, как тихие пассажи. Технической силой формата FLAC, по сравнению с другими кодеками без потерь, является его возможность быть потоковым и декодироваться за короткое время, которое не зависит от степени сжатия.

Будучи схемой сжатия без потерь, FLAC также является популярным форматом для хранения архивов у владельцев аудио дисков или других медиа-данных, стремящихся сохранить свою аудио коллекцию. Если оригинальная запись потеряется, повредится или износится, копия в формате FLAC дает гарантию того, что точный дубликат оригинальной записи может быть восстановлен в любое время. Точное восстановление из архива с потерями (например, MP3) невозможно. Являясь форматом без потерь, FLAC вполне может подвергаться транскодингу (например, в MP3) без потерь качества, как правило, свойственным транскодингу. Во время извлечения данных с CD может быть также создан CUE файл. Если данные с компакт диска были извлечены в формат FLAC успешно, то файл CUE позволяет восстановить копию диска, идентичную оригинальному, включая порядок треков, начальный зазор (pregap) и CD-Text данные. Однако, дополнительная информация, которая может присутствовать на некоторых аудио дисках, такая как тексты песен, графика CD+G будут находиться за полем видимости CUE файла и большинства извлекающего программного обеспечения, и, таким образом, эта информация не будет извлечена.

Европейский вещательный союз (EBU) принял на вооружение формат FLAC для распространения высококачественного звука через сеть «Еврорадио».

Технические детали

Формат FLAC поддерживает только целочисленные сэмплы. Это позволяет избежать неточностей нецелочисленной арифметики, таким образом, это дает гарантию сжатия без потерь. На вход кодер может принимать от 4 до 32 бит на сэмпл, любую частоту дискретизации от 1 Гц до 655 350 Гц с шагом в 1 Гц, а также любое количество каналов в диапазоне от 1 до 8. Каналы могут быть сгруппированы в случае стерео или 5.1 звука для извлечения выгода от межканальных корреляций и, тем самым, увеличивая степень сжатия звука. FLAC проверяет контрольные суммы CRC для обнаружения испорченных фреймов в тех случаях, когда формат используется в потоковом протоколе. Помимо этого, в тэге с заголовком STREAMINFO хранится полный MD5 хэш необработанных PCM аудио данных. FLAC допускает диапазон Rice параметра от 0 до 16. FLAC поддерживает Replay Gain.

FLAC реализован как ядро кодера и декодера в библиотеке libFLAC, которая слинкована с основной поставляемой программой flac, являющейся эталонной программой, использующей API libFLAC. Также API кодека доступно для C++ в библиотеке libFLAC++.

Эталонная реализация FLAC компилируется на многих платформах, включая системы Unix (такие как Solaris и Mac OS X) и Unix-подобные (включая Linux и BSD), Windows BeOS и OS/2. Проект настроен для сборки следующими утилитами: autoconf / automake, MSVC, Watcom C и Xcode. В настоящий момент FLAC не поддерживает многоядерность.

Для тэгов FLAC использует ту же систему, что и Vorbis-комментарии.

Организация API

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

Плюсы

  • Портируется на многие системы и платформы
  • Исходный код открыт и легко лицензирован
  • Быстрое декодирование, высокая независимость от уровня сжатия
  • Аппаратная поддержка (PhatBox, Kenwood MusicKeg, Rio Karma и другие)
  • Поддержка потоковости
  • Испорченные файлы могут быть частично восстановлены

Минусы

  • Менее эффективное сжатие, чем у некоторых других современных кодеров (APE (Monkey's Audio), LPAC, OptimFROG)

Коэффициент производительность/сжатие приблизительно такой же как и у WavPack (однако, WavPack быстрее), и на 1%-2% хуже, чем у других современных кодеров, таких как APE (Monkey's Audio) и optimFROG.

Декодирование формата FLAC очень нетребовательно к ресурсам процессора, что делает этот формат идеальным для воспроизведения на различных портативных устройствах.