ФЛАК
Разработчик(и) | Фонд Xiph.Org , Джош Коулсон, Эрик де Кастро Лопо |
---|---|
Первоначальный выпуск | 20 июля 2001 г |
Стабильная версия | 1.4.3 [1] / 23 июня 2023 г |
Репозиторий | |
Написано в | С , С++ |
Операционная система | Кросс-платформенный |
Тип | Кодек |
Лицензия | Инструменты командной строки: GNU GPL. Библиотеки: БСД |
Веб-сайт | ксиф |
Расширение имени файла | .flac |
---|---|
Тип интернет-СМИ | аудио/флак |
Единый идентификатор типа (UTI) | org.xiph.flac |
Магическое число | ФЛАК [2] |
Тип формата | без потерь Звук |
Стандартный | ксиф |
Открытый формат ? | Да [3] |
Свободный формат ? | Да |
FLAC ( / f læ , k / ; Free Lossless Audio Codec ) — формат аудиокодирования для сжатия цифрового звука без потерь , разработанный Xiph.Org Foundation , а также название проекта бесплатного программного обеспечения, создающего инструменты FLAC эталонный пакет программного обеспечения, включающий реализацию кодека . Цифровой звук, сжатый алгоритмом FLAC, обычно можно уменьшить до 50–70 процентов от исходного размера. [4] и распаковывает в идентичную копию исходных аудиоданных.
FLAC — это открытый формат с лицензией, не требующей лицензионных отчислений , и эталонной реализацией , которая является бесплатным программным обеспечением . FLAC поддерживает теги метаданных , обложки альбомов и быстрый поиск.
История [ править ]
Разработка была начата в 2000 году Джошем Коулсоном. Формат битового потока был заморожен с выпуском версии 0.9 эталонной реализации 31 марта 2001 г. Версия 1.0 была выпущена 20 июля 2001 г. [5]
29 января 2003 года фонд Xiph.Org и проект FLAC объявили о включении FLAC под баннер Xiph.org. Xiph.org является домом для других бесплатных форматов сжатия, таких как Vorbis , Theora , Speex и Opus . [5] [6] [7]
Версия 1.3.0 была выпущена 26 мая 2013 года, после чего разработка была перенесена в git-репозиторий Xiph.org. [8]
В 2019 году FLAC был предложен в качестве стандарта IETF. [9]
Дизайн [ править ]
FLAC — это кодирование данных линейной импульсно-кодовой модуляции без потерь . [10]
Структура файла [ править ]
Файл FLAC состоит из магического числа. fLaC
, метаданные и закодированное аудио. [10]
Закодированный звук делится на кадры, каждый из которых состоит из заголовка, блока данных и контрольной суммы CRC16 . Каждый кадр кодируется независимо друг от друга. Заголовок кадра начинается со слова синхронизации , используемого для идентификации начала действительного кадра. Остальная часть заголовка содержит количество выборок, положение кадра, назначение канала и, при необходимости, частоту дискретизации и разрядность . Блок данных содержит аудиоинформацию. [10]
Метаданные в FLAC предшествуют аудио. Такие свойства, как частота дискретизации и количество каналов, всегда содержатся в метаданных. Он также может содержать другую информацию, обложку альбома . например [10] FLAC использует комментарии Vorbis для текстовых метаданных, таких как название трека и имя исполнителя.
Кодирование и декодирование [ править ]
Алгоритм кодирования FLAC состоит из нескольких этапов. На первом этапе входной звук разбивается на блоки. Если звук содержит несколько каналов , каждый канал кодируется отдельно как подблок. Затем кодер пытается найти хорошую математическую аппроксимацию блока либо путем подгонки простого полинома , либо с помощью общего линейного прогнозирующего кодирования . Затем записывается описание аппроксимации длиной всего несколько байт. Наконец, разница между аппроксимацией и входными данными, называемая остатком, кодируется с помощью кодирования Райса . Во многих случаях описание аппроксимации и кодированного остатка занимает меньше места, чем при использовании импульсно-кодовой модуляции . [10]
Процесс декодирования является обратным процессу кодирования. Сжатый остаток сначала декодируется. [11] [12] Описание математической аппроксимации затем используется для расчета формы сигнала. Результат формируется путем сложения остатка и рассчитанной формы сигнала. [13] [14] Поскольку FLAC сжимает без потерь , декодированная форма сигнала идентична форме сигнала до кодирования.
Для двухканального стереокодер может выбрать совместное кодирование звука. Каналы преобразуются в боковой канал, который представляет собой разницу между двумя входными каналами, и средний канал, представляющий собой сумму двух входных каналов. Вместо среднего канала может быть закодирован левый или правый канал, что иногда более эффективно с точки зрения использования пространства. [15]
Несмотря на то, что эталонный кодер использует один размер блока для всего потока, [10] FLAC позволяет изменять размер блока в сэмплах для каждого блока.
Сжатие [ править ]
Степень сжатия определяется различными параметрами, включая порядок модели линейного прогнозирования и размер блока. Независимо от степени сжатия исходные данные всегда можно идеально восстановить.
Для удобства пользователя эталонная реализация определяет 9 уровней сжатия, которые являются предустановками более технических параметров алгоритма кодирования. Уровни обозначены от 0 до 8, причем более высокие числа приводят к более высокой степени сжатия за счет скорости сжатия. Значение каждого уровня сжатия зависит от реализации. [16] [17]
FLAC оптимизирован для скорости декодирования за счет скорости кодирования. Тестирование показало, что, несмотря на то, что при увеличении уровня сжатия скорость декодирования меняется незначительно, за пределами уровня сжатия по умолчанию 5 процесс кодирования занимает значительно больше времени с небольшой экономией места по сравнению с уровнем 5. [18]
Реализация [ править ]
Помимо формата, проект FLAC также содержит с открытым исходным кодом бесплатную эталонную реализацию FLAC под названием libFLAC. libFLAC содержит средства для кодирования и декодирования данных FLAC, а также для управления метаданными файлов FLAC. libFLAC++, объектно-ориентированная оболочка libFLAC для C++ и программ командной строки . flac
и metaflac
, также являются частью эталонной реализации.
Формат FLAC, как и libFLAC, не защищен какими-либо патентами , и каждый волен писать свои собственные реализации FLAC.
Сравнение с другими форматами [ править ]
FLAC специально разработан для эффективной упаковки аудиоданных, в отличие от алгоритмов общего назначения без потерь, таких как DEFLATE , которые используются в ZIP и gzip . В то время как ZIP может уменьшить размер аудиофайла качества компакт-диска на 10–20%, FLAC может уменьшить размер аудиоданных на 40–50%, используя преимущества характеристик звука.
Технические преимущества FLAC по сравнению с другими форматами без потерь заключаются в его способности быстро передаваться и декодироваться независимо от уровня сжатия.
Поскольку FLAC представляет собой схему без потерь, он подходит в качестве формата архива для владельцев компакт-дисков и других носителей, желающих сохранить свои аудиоколлекции. Если исходный носитель утерян, поврежден или изношен, копия аудиодорожек в формате FLAC гарантирует, что точную копию исходных данных можно будет восстановить в любое время. Точное восстановление из копии тех же данных с потерями (например, MP3 ) невозможно. Отсутствие потерь в формате FLAC означает, что он отлично подходит для перекодирования, обычно связанной с например, в MP3, без потери качества, перекодированием между одним форматом с потерями и другим. Файл CUE может быть дополнительно создан при копировании компакт-диска. Если компакт-диск прекрасно читается и копируется в файлы FLAC, файл CUE позволяет позднее записать аудио-CD, который по аудиоданным идентичен исходному компакт-диску, включая порядок дорожек и промежутки , но исключает дополнительные данные, такие как тексты песен и CD+G. графика. [19] Но в зависимости от используемой программы записи CD-Text может быть восстановлен из метаданных, хранящихся в листе CUE, и записан обратно в новую копию на чистом носителе CD-R.
Принятие и внедрение [ править ]
Эталонная реализация FLAC реализована как базовая библиотека кодировщика и декодера libFLAC вместе с основной распространяемой программой. flac
является эталонной реализацией API libFLAC. Этот API кодека также доступен на C++ как libFLAC++. Эталонная реализация FLAC компилируется на многих платформах, включая большинство Unix (таких как Solaris , BSD ) и Unix-подобных (включая Linux ), Microsoft Windows , BeOS и OS/2 операционных систем . Существуют build-системы для autoconf / automake , MSVC , Watcom C и Xcode . В настоящее время в libFLAC нет поддержки многоядерности , но такие утилиты, как GNU Parallel и различные графические интерфейсы, можно использовать для запуска нескольких экземпляров кодировщика.
Поддержка воспроизведения FLAC на портативных аудиоустройствах и специализированных аудиосистемах ограничена по сравнению с такими форматами, как MP3. [20] или несжатый PCM . Поддержка FLAC включена по умолчанию в устройствах Windows 10 , Android , BlackBerry 10 и Jolla .
В 2014 году несколько компаний, занимающихся вторичной мобильной электроникой, представили мультимедийные решения с поддержкой FLAC. К ним относятся серия NEX от Pioneer Electronics, а также VX404 и NX404 от Clarion.
Европейский вещательный союз (EBU) принял формат FLAC для распространения высококачественного звука по своей сети Еврорадио. [21] Операционная Windows система поддерживает встроенную интеграцию FLAC с момента появления Windows 10. [22] Операционная система Android поддерживает собственное воспроизведение FLAC, начиная с версии 3.1. [23] [24] В macOS High Sierra и iOS 11 добавлена встроенная поддержка воспроизведения FLAC. [25]
Помимо прочего, музыкальный проигрыватель и потоковый сервис Pono использовали формат FLAC. [26] [27] Bandcamp настаивает на формате загрузки без потерь и предлагает FLAC в качестве варианта загрузки. [28] Фонд Викимедиа спонсировал бесплатный онлайн- инструмент ECMAScript FLAC с открытым исходным кодом для браузеров, поддерживающих необходимые функции HTML5 . [29]
Microsoft Windows | macOS | Андроид | BlackBerryOS | iOS | |
---|---|---|---|---|---|
Поддержка кодеков | Да | Да | Да | Да | Да |
Поддержка контейнеров | FLAC (.flac) Matroska (.mka, .mkv) Огг (.oga) [30] | FLAC (.flac) Основной аудиоформат (.caf) | FLAC (.flac) | FLAC (.flac) | FLAC (.flac) Основной аудиоформат (.caf) |
Примечания | Поддержка появилась в Windows 10. Проигрыватель Windows Media (2022) также поддерживает FLAC в контейнере Ogg для прямых трансляций (например, Icecast интернет-радио ). [31] | Поддержка введена в High Sierra. | Поддержка появилась в Android 3.1. Android изначально поддерживает обычный формат FLAC (.flac), но не Ogg FLAC (.oga). [32] была добавлена поддержка как обычного FLAC, так и Ogg FLAC Однако позже в файловый менеджер Files (Google) . | Поддержка появилась в BlackBerry OS 5.0. | Поддержка появилась в iOS 11 (но зависит от используемого оборудования). |
Поддерживаются различные другие контейнеры независимо от используемой операционной системы и используемого программного обеспечения для воспроизведения.
См. также [ править ]
Ссылки [ править ]
- ^ «FLAC 1.4.3 выпущен с дополнительными оптимизациями, в нем отсутствует код, специфичный для PowerPC» . 23 июня 2023 г. Проверено 19 февраля 2024 г.
- ^ Коулсон, Джош. «FLAC – формат» . Фонд Xiph.Org . Проверено 4 апреля 2013 г.
«fLaC», маркер потока FLAC в ASCII, что означает, что байт 0 потока равен 0x66, за которым следует 0x4C 0x61 0x43.
- ^ "ИграйОгг!" . Фонд свободного программного обеспечения . 17 марта 2010 г. Проверено 1 октября 2013 г.
- ^ «Изучение степени сжатия Flac» . Стивен Голубь. 7 февраля 2012 года . Проверено 10 мая 2018 г.
- ^ Jump up to: Перейти обратно: а б "Функции" . Фонд Xiph.Org . Проверено 23 ноября 2023 г.
- ^ «FLAC присоединяется к Xiph.org» . Фонд Xiph.org . 29 января 2003 года . Проверено 31 августа 2009 г.
- ^ Плант, Эммет. «FLAC присоединяется к Xiph!» . Фонд Xiph.org . Архивировано из оригинала 29 мая 2008 года . Проверено 31 августа 2009 г.
- ^ «FLAC – журнал изменений» . Фонд Xiph.org . Проверено 15 октября 2013 г.
- ^ ван Берден, Мартейн; Уивер, Эндрю. Бесплатный аудиокодек без потерь . Идентификатор проекта-ietf-cellar-flac . Проверено 14 мая 2023 г.
- ^ Jump up to: Перейти обратно: а б с д и ж Коулсон, Джош. «О формате FLAC» . Проверено 13 февраля 2022 г.
- ^ "stream_decoder.c" . libFLAC . Проверено 19 февраля 2022 г.
- ^ libFLAC/stream_decoder.c , строка 2734.
- ^ "lpc.c" . libFLAC . Проверено 19 февраля 2022 г.
- ^ libFLAC/lpc.c , строки 813–820.
- ^ «Спецификация формата FLAC» . ФЛАК . Проверено 19 февраля 2022 г.
- ^ «Сравнение кодировщиков FLAC CUETools» . CUETools Wiki . Проверено 27 мая 2013 г.
- ^ «Настройки кодирования» . Медиацентр JRiver . Проверено 27 мая 2013 г.
- ^ «Сравнение кодеков без потерь» . Synthetic-soul.co.uk . Архивировано из оригинала 2 февраля 2009 года . Проверено 26 ноября 2016 г.
- ^ "ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ" . ФЛАК . Проверено 23 сентября 2014 г.
- ^ «Ссылки» . ФЛАК . Проверено 24 марта 2009 г.
- ^ «Что такое система EBU Musipop?» . ЭБУ . 24 августа 2021 г.
- ^ «Любители аудио возрадуются: Windows 10 будет иметь общесистемную поддержку FLAC» . Мир ПК . Проверено 10 июля 2015 г.
- ^ «Форматы мультимедиа, поддерживаемые Android» . Android.com . 4 августа 2011 г. Проверено 27 февраля 2012 г.
- ^ «Проблема 1461 — Android — запрос на улучшение поддержки файлов FLAC» . Гугл-код . Проверено 5 августа 2011 г.
- ^ «iOS 11 обеспечивает воспроизведение аудио в формате FLAC без потерь на iPhone и iPad» . idownloadblog.com . 9 июня 2017 года . Проверено 26 сентября 2017 г.
- ^ "ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ" . ponomusic.com . 14 марта 2014 года . Проверено 14 марта 2014 г.
- ^ "Дом" . Qobuz.com . Проверено 10 апреля 2014 г.
- ^ «Как и почему мне следует загружать файлы без потерь?» . Бандкамп . Проверено 16 февраля 2022 г.
- ^ Рилке (2015). «Де- и кодировщик JavaScript FLAC» . Проверено 9 февраля 2015 г.
- ^ «MIME-типы и расширения файлов — XiphWiki» .
- ^ «FLAC против Ogg FLAC» .
- ^ «Платформа Android не полностью поддерживает форматы контейнеров OGG (OGA) [36906426] — доступно всем — система отслеживания проблем» .
Внешние ссылки [ править ]
- Официальный сайт
- Сравнение аудиоформатов без потерь : сравнение FLAC с пятью другими аудиоформатами без потерь
- Сравнение без потерь : FLAC и семь других аудиоформатов без потерь на Hydrogenaudio
- GSMArena Phone Finder : все телефоны и планшеты с поддержкой FLAC