Библиотека сайта 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.