stringtranslate.com

ФЛАК

FLAC ( / f 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-текст и другие дополнительные данные, такие как тексты песен и графика CD+G . [19]

Принятие и внедрение

Эталонная реализация 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]

Поддерживаются различные другие контейнеры независимо от используемой операционной системы и используемого программного обеспечения для воспроизведения.

Смотрите также

Рекомендации

  1. ^ «FLAC 1.4.3 выпущен с дополнительными оптимизациями, в нем отсутствует код, специфичный для PowerPC» . 23 июня 2023 г. Проверено 19 февраля 2024 г.
  2. ^ Коулсон, Джош. «FLAC – формат». Фонд Xiph.Org . Проверено 4 апреля 2013 г.«fLaC», маркер потока FLAC в ASCII, что означает, что байт 0 потока равен 0x66, за которым следует 0x4C 0x61 0x43.
  3. ^ "PlayOgg!". Фонд свободного программного обеспечения . 17 марта 2010 г. Проверено 1 октября 2013 г.
  4. ^ «Глядя на степень сжатия Flac» . Стивен Голубь. 7 февраля 2012 года . Проверено 10 мая 2018 г.
  5. ^ аб «Особенности». Фонд Xiph.Org . Проверено 23 ноября 2023 г.
  6. ^ «FLAC присоединяется к Xiph.org» . Фонд Xiph.org . 29 января 2003 года . Проверено 31 августа 2009 г.
  7. ^ Плант, Эммет. «FLAC присоединяется к Xiph!». Фонд Xiph.org . Архивировано из оригинала 29 мая 2008 года . Проверено 31 августа 2009 г.
  8. ^ "FLAC - журнал изменений" . Фонд Xiph.org . Проверено 15 октября 2013 г.
  9. ^ ван Берден, Мартейн; Уивер, Эндрю. Бесплатный аудиокодек без потерь. Идентификатор проекта-ietf-cellar-flac . Проверено 14 мая 2023 г.
  10. ^ abcdef Коулсон, Джош. «О формате FLAC» . Проверено 13 февраля 2022 г.
  11. ^ "stream_decoder.c". libFLAC . Проверено 19 февраля 2022 г.
  12. ^ libFLAC/stream_decoder.c, строка 2734.
  13. Ссылки libFLAC . Проверено 19 февраля 2022 г.
  14. ^ libFLAC/lpc.c, строки 813–820.
  15. ^ «Спецификация формата FLAC» . ФЛАК . Проверено 19 февраля 2022 г.
  16. ^ «Сравнение кодировщиков FLAC CUETools» . CUETools Wiki . Проверено 27 мая 2013 г.
  17. ^ «Настройки кодирования». Медиацентр JRiver . Проверено 27 мая 2013 г.
  18. ^ «Сравнение кодеков без потерь» . Synthetic-soul.co.uk . Архивировано из оригинала 2 февраля 2009 года . Проверено 26 ноября 2016 г.
  19. ^ «Часто задаваемые вопросы». ФЛАК . Проверено 23 сентября 2014 г.
  20. ^ «Ссылки». ФЛАК . Проверено 24 марта 2009 г.
  21. ^ «Что такое система EBU Musipop?». ЭБУ . 24 августа 2021 г.
  22. ^ «Аудиоснобы радуются: Windows 10 будет иметь общесистемную поддержку FLAC» . Мир ПК . Проверено 10 июля 2015 г.
  23. ^ «Форматы мультимедиа, поддерживаемые Android» . Android.com . 4 августа 2011 г. Проверено 27 февраля 2012 г.
  24. ^ «Проблема 1461 — Android — запрос на улучшение поддержки файлов FLAC» . Гугл-код . Проверено 5 августа 2011 г.
  25. ^ «iOS 11 обеспечивает воспроизведение звука FLAC без потерь на iPhone и iPad» . idownloadblog.com . 9 июня 2017 года . Проверено 26 сентября 2017 г.
  26. ^ «Часто задаваемые вопросы». ponomusic.com . 14 марта 2014 года . Проверено 14 марта 2014 г.
  27. ^ «Дом». Qobuz.com . Проверено 10 апреля 2014 г.
  28. ^ «Как и почему мне следует загружать файлы без потерь?». Лагерь группы . Проверено 16 февраля 2022 г.
  29. ^ Рилке (2015). «Де- и кодировщик JavaScript FLAC» . Проверено 9 февраля 2015 г.
  30. ^ «Типы MIME и расширения файлов — XiphWiki» .
  31. ^ "FLAC против Ogg FLAC" .
  32. ^ «Платформа Android не полностью поддерживает форматы контейнеров OGG (OGA) [36906426] — доступно всем — система отслеживания проблем» .

Внешние ссылки