Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Введение во FLAC: Free Lossless Audio Codec

Оригинал: Introduction: FLAC, the Free Lossless Audio Codec
Автор: Anthony James
Дата публикации: 8 октября 2012 года
Перевод: А. Кривошей
Дата перевода: июнь 2013 г.

В данной статье говорится о FLAC: что это, почему мы ним пользуемся, и как его использовать.

Примечание: в этой статье вы встретите обозначения FLAC и flac. Версия в верхнем регистре используется для обозначения формата, а в нижнем - для файлов и команды flac.

Что такое FLAC?

Как вы могли понять из заголовка статьи, FLAC - это аббревиатура для Free Lossless Audio Codec. Первое слово ("free") должно быть понятно без объяснений (это проект с открытым исходным кодом), но что такое "lossless audio codec"? Итак, хорошо известный формат mp3 является аудиокодеком. Он используется для сжатия аудиоданных. MP3 также называют "lossy" (сжатие с потерями). Например, если вы конвертируете wav-файл в mp3, а затем конвертируете его обратно wav, вы не получите тот же самый файл. MP3 уменьшает качество аудио при конвертировании и часть данных теряется безвозвратно. С другой стороны, FLAC - это "lossless". Если вы конвертируете wav-файл во flac, а затем преобразуете его обратно в wav, вы получите абсолютно тот же самый файл. Тем не менее, файл flac намного меньше исходного wav.
Файл flac можно рассматривать как некую разновидность архива: если вы сжимаете какие-либо данные, а затем распаковываете их, вы получаете те же самые данные, никакой потери "качества" не происходит. Конечно, FLAC полностью оптимизирован для работы с аудио данными, которые он сжимает значительно лучше, чем winzip или gzip. Также flac может воспроизводиться напрямую, без предварительной распаковки.

Почему FLAC?

Так как FLAC обеспечивает cd-качество воспроизведения при меньшем размере файлов, чем, например, wav. Я регулярно использую FLAC, и он регулярно показывает степень сжатия 0,6, то есть файл flac обычно на 40% меньше, чем исходный файл wav. Кроме того, его поддерживают мои любимые плейеры (MPlayer и xmms2).

Как использовать FLAC?

Вы можете как кодировать, так и декодировать файлы flac, поэтому объяснение необходимо разделить на две части:

Для кодирования cd во flac я обычно использую Sound Juicer. Он очень прост в использовании и имеет некоторые полезные возможности. Тем не менее, он не может конвертировать wav-файлы с вашего винчестера. Хотя имеется большое количество различных фронтендов, я использую непосредственно утилиту командной строки flac. Посмотрите следующий пример:

$ flac --best examplefile.wav

Это самый простой способ конвертировать файл wav во flac. С помощью опций можно задать степень сжатия (--best соответствует наилучшему сжатию). Сжатие займет некоторое время, которое зависит от скорости вашей системы, длины трека и выбранной степени сжатия. В общем рекомендуется выбирать всегда наилучшую степень сжатия, чтобы получить файл наименьшего размера. При воспроизведении происходит распаковка файла в режиме реального времени.

Прежде чем прослушивать полученные файлы, убедитесь, что ваш плейер поддерживает формат flac. Для некоторых требуется установка специальных плагинов. Если вам необходимо конвертировать flac обратно в wav, для этого используется опция -d:

$ flac -d examplefile.flac

Обратите внимание, что команда flac не удаляет исходный файл: после ее выполнения у вас будут оба файла examplefile.flac и examplefile.wav. Также имеются опции, позволяющие модифицировать процесс конвертирования и изменить целевой файл.

Опция -o позволяет задать имя конечного файла.

$ flac --best examplefile.wav -o alteredname.flac

Она работает и для обратного преобразования:

$ flac -d examplefile.flac -o alteredname.wav

Опции --skip and --until позволяют кодировать только часть исходного файла (в примере ниже с момента 06:31 до 07:31).

$ flac --best examplefile.wav --skip 06:31 --until 07:31

Время можно задать с точностью до сотых долей секунд:

$ flac --best examplefile.wav --skip 06:31.43 --until 07:31.78

Если вы поставите перед временем --until знак "+", то оно будет отсчитываться от времени --skip:

$ flac --best examplefile.wav --skip 06:31.43 --until +01:00.35

Приведенная здесь команда кодирует ту же часть файла, что и предыдущая. Вы также можете задать время --until относительно конца файла, используя знак "-":

$ flac --best examplefile.wav --skip 06:31.43 --until -03:22.14

Если время --until будет меньше, чем время --skip, то flac вернет ошибку и закроется. Вы также можете задавать времена --skip и --until в сэмплах:

$ flac --best examplefile.wav --skip 81920000 --until 163840000

Хотя в этом случае вы не можете использовать знаки плюс и минус.

Опция -c позволяет перенаправить вывод в stdout для использования его в других программах:

$ flac -c -d examplefile.flac

Это может быть полезно, например, если вы хотите конвертировать файл flac далее в mp3:

$ flac -c -d examplefile.flac | lame -h - examplefile.mp3

Более подробную информацию можно получить, изучив man-страницу flac.