stringtranslate.com

FLAC

FLAC ( / f l æ k / ; Free Lossless Audio Codec ) — формат аудиокодирования для сжатия цифрового звука без потерь , разработанный фондом Xiph.Org , а также название проекта свободного программного обеспечения, создающего инструменты 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 может уменьшить размер аудиофайла CD-качества на 10–20%, FLAC способен уменьшить размер аудиоданных на 40–50%, используя характеристики аудио. [ необходима цитата ]

Технические преимущества FLAC по сравнению с другими форматами без потерь заключаются в его способности быстро передаваться и декодироваться, независимо от уровня сжатия. [ необходима цитата ]

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

Принятие и реализация

Эталонная реализация FLAC реализована как библиотека кодировщика и декодера ядра libFLAC , при этом основной распространяемой программой flacявляется эталонная реализация API libFLAC. Этот API кодека также доступен на C++ как libFLAC++. Эталонная реализация FLAC компилируется на многих платформах, включая большинство операционных систем Unix (таких как Solaris , BSD ) и Unix-подобных (включая Linux ), Windows , BeOS и OS/2 . Существуют системы сборки для 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 для распространения высококачественного звука через свою сеть Euroradio. [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] Фонд Wikimedia спонсировал бесплатный и открытый исходный код онлайн- инструмента ECMAScript FLAC для браузеров, поддерживающих требуемые функции HTML5 . [29]

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

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

Ссылки

  1. ^ «FLAC 1.4.3 выпущен с большим количеством оптимизаций, без кода, специфичного для PowerPC». 23 июня 2023 г. Получено 19 февраля 2024 г.
  2. ^ Коулсон, Джош. "FLAC – формат". Xiph.Org Foundation . Получено 4 апреля 2013 г.«fLaC», маркер потока FLAC в ASCII, означающий, что байт 0 потока равен 0x66, за которым следует 0x4C 0x61 0x43
  3. ^ "PlayOgg!". Free Software Foundation . 17 марта 2010 г. Получено 1 октября 2013 г.
  4. ^ «Looking at Flac Compression Ratios». Стивен Пиджен. 7 февраля 2012 г. Получено 10 мая 2018 г.
  5. ^ ab "Features". Xiph.Org Foundation . Получено 23 ноября 2023 г.
  6. ^ "FLAC присоединяется к Xiph.org". Фонд Xiph.org . 29 января 2003 г. Получено 31 августа 2009 г.
  7. ^ Плант, Эмметт. «FLAC присоединяется к Xiph!». Фонд Xiph.org . Архивировано из оригинала 29 мая 2008 года . Получено 31 августа 2009 года .
  8. ^ "FLAC – changelog". Xiph.org Foundation . Получено 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. ^ "lpc.c". libFLAC . Получено 19 февраля 2022 г. .
  14. ^ libFLAC/lpc.c, строки 813–820.
  15. ^ "Спецификация формата FLAC". FLAC . Получено 19 февраля 2022 г. .
  16. ^ "Сравнение кодировщиков FLAC CUETools". CUETools Wiki . Получено 27 мая 2013 г.
  17. ^ "Настройки кодирования". JRiver Media Centre . Получено 27 мая 2013 г.
  18. ^ "Lossless Codec Comparison". Synthetic-soul.co.uk . Архивировано из оригинала 2 февраля 2009 . Получено 26 ноября 2016 .
  19. ^ "FAQ". FLAC . Получено 23 сентября 2014 .
  20. ^ "Ссылки". FLAC . Получено 24 марта 2009 .
  21. ^ «Что такое система EBU Musipop?». EBU . 24 августа 2021 г.
  22. ^ "Аудиоснобы радуются: Windows 10 будет иметь общесистемную поддержку FLAC". PC World . Получено 10 июля 2015 г.
  23. ^ "Поддерживаемые Android форматы мультимедиа". Android.com . 4 августа 2011 г. Получено 27 февраля 2012 г.
  24. ^ "Проблема 1461 – android – запрос на улучшение поддержки файлов FLAC". Google Code . Получено 5 августа 2011 г.
  25. ^ "iOS 11 обеспечивает воспроизведение аудио FLAC без потерь на iPhone и iPad". idownloadblog.com . 9 июня 2017 г. Получено 26 сентября 2017 г.
  26. ^ "FAQ". ponomusic.com . 14 марта 2014 . Получено 14 марта 2014 .
  27. ^ "Home". Qobuz.com . Получено 10 апреля 2014 г. .
  28. ^ «Как и почему мне следует загружать файлы без потерь?». Bandcamp . Получено 16 февраля 2022 г.
  29. ^ Rillke (2015). "JavaScript FLAC de- and encoder" . Получено 9 февраля 2015 г. .
  30. ^ «Типы MIME и расширения файлов — XiphWiki».
  31. ^ «FLAC против Ogg FLAC».
  32. ^ «Платформа Android не полностью поддерживает форматы контейнеров OGG (OGA) [36906426] — Доступно для общественности — Система отслеживания ошибок».

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