Журнал LinuxFormat - перейти на главную

LXF99:WavPack

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание

WavPack Cжатие: с потерями, но без потерь

WavPack: Не иди на компромисс!
Убеждены, что отношение качества аудиозаписи к размеру содержащего ее файла - величина постоянная? Александр Супрунов готов сломать этот стереотип.

С ростом мощностей компьютеров, увеличением емкости жестких дисков и благодаря широкому распространению DVD начали набирать популярность так называемые lossless-кодеки для сжатия звука. Другими словами, уже можно переставать мириться с потерями форматов MPEG Layer 3 или Ogg Vorbis и перейти на следующий уровень, применяя для аудиоданных сжатие без потерь.

На сегодня существует достаточно большое семейство lossless-кодеков: FLAC (Free Lossless Audio Codec), Monkey’s Audio, WavPack и даже WMA9. Записи, сжатые такими кодеками, имеют больший размер. По крайней мере, так считалось, пока не появился гибридный режим WavPack, позволяющий использовать сжатие с потерями, ничего не теряя! О нем сегодня и пойдет речь.


Что это?

WavPack – бесплатный открытый аудиокодек, разработанный Дэвидом Брайантом [David Bryant] и распространяющийся по лицензии BSD. Изначально WavPack был сугубо lossless-кодеком, но позднее в нем появилась уникальная возможность, резко выделяющая его из череды других решений – гибридный режим.

При кодировании в этом режиме создаются два файла – один сжат по принципу lossy (.wv) и несет все преимущества такого сжатия (имеет минимальный размер) и второй – корректирующий (.wvc). Он используется при восстановлении потерянных данных с помощью утилиты WvUnpack – что позволяет бескомпромиссно решить вечную проблему выбора между качеством и количеством.

WavPack поддерживает высокие частоты дискретизации и позволяет сжимать 8/16/24/32-битные аудиофайлы. В lossless-режиме WavPack работает подобно стандартному архиватору вроде Zip, не приводит к деградации записей, как это происходит в форматах MP3 или Ogg и является идеальным способом архивирования аудиоконтента. Степень сжатия зависит от музыкального материала: композиции с более широким динамическим диапазоном сжимаются сильнее. В среднем, при lossless-режиме можно рассчитывать на 50%. В гибридном режиме lossy-файл будет лишь слегка превосходить по размерам файлы вездесущего MP3.

Прежде чем углубляться в сферу практического использования WavPack, давайте рассмотрим основные преимущества кодека. Это, в первую очередь, быстрое сжатие (существует возможность кодировать симметрично/асимметрично, что позволяет влиять на время декомпрессии), открытый исходный код, гибридный режим, поддержка многоканального звука, аппаратная поддержка (iRiver H10/H1xx/H3xx, iAudio X5, Apple iPod, Toshiba Gigabeat), мультиплатформенность, ReplayGain (технология, уравнивающая громкость разных файлов при воспроизведении) и много чего другого. Хотелось бы еще раз подчеркнуть очень быстрое сжатие – в несколько раз более быстрее, чем сжатие в MP3 кодеком Lame.

Приступим к делу

Ну что же, давайте попрактикуемся. Вероятно, кодек WavPack уже есть в вашем дистрибутиве (в моем ALT Linux 4.0 – точно), если же нет – ищите соответствующие RPM/Deb-пакеты или скачивайте исходные коды. Официальный сайт кодека – http://www.wavpack.com, но вы также можете найти WavPack на нашем DVD. Сборка из исходных текстов не вызывает сложностей и ограничивается стандартными

./configure (можете указать ключ --enable-mmx для использования MMX-инструкций вашего процессора), make и make install.

Следующий вопрос – откуда взять неискаженный звук? Можно, например, «оцифровать» CD. Этот вопрос я оставлю на самостоятельное изучение, скажу лишь, что для решения задачи существуют как графические (KAudioCreator), так и консольные утилиты. Важно лишь иметь возможность получить на выходе файл в формате WAV. В дальнейшем я буду предполагать, что он называется forest.wav.

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

 wavpack [-options] [@]infile[.wav]|- [...] [-o [@]outfile[.wv]|

В простейшем случае достаточно указать оригинальный файл и название выходного файла в формате WavPack (.wv), используя ключ -o:

wavpack forest.wav -o forest.wv

В результате будет создан файл forest.wv, сжатый lossless-кодеком. В моем случае его размер файла уменьшился с 24,1 МБ до 10,9 МБ, и заметьте – без деградации аудиоматериала. Пожелав улучшить (или ухудшить) этот результат, я мог бы воспользоваться следующими ключами:

  • -bn Включает гибридный режим. Значение n указывает число бит на сэмпл (от 2.0 до 23.9).
  • -c Создает корректирующий файл (.wvc) для гибридного режима;
  • -cc обеспечивает максимальную (для гибридного же режима) степень сжатия.
  • -f Быстрый режим: повышает скорость работы, понижает степень сжатия.
  • -h Опция, обратная -f. Сжимает медленно, но верно. Если же вам и этого мало, используйте -hh: качество и степень сжатия будут очень высокими, но использовать такой файл в портативном проигрывателе не рекомендуется.
  • -x Увеличивает скорость декодирования в будущем за счет замедления кодирования в настоящм.

Полный список ключей можно получить, набрав wavpack --help.

Высший пилотаж

Настало время активировать самый интересный, гибридный режим. За него отвечают ключи -b и -c. Если не использовать , то корректирующий файл создан не будет и вы получите обычное lossy-сжатие без возможности восстановить оригинал. Например, набрав

wavpack -b2.0 forest.wav -o forest.wv

вы получите ролик наихудшего возможного качества и отсутствие корректирующего файла. Можете считать это аналогом MP3. В варианте

wavpack -b16 forest.wav -o forest.wv

качество будет повыше, но и размер выходного файла, соответственно, увеличится.

Но мы, помнится, собрались здесь вовсе не для того, чтобы сжимать аудио lossy-кодеком. Давайте создадим корректирующий файл, способный вернуть оригинальное звучание без потерь. Для это пригодится ключ :

wavpack -cb16 forest.wav -o forest.wv

В результате будет создан выходной файл forest.wv и корректирующий файл forest.wvc. Оптимальный, на мой взгляд, результат дает строка вида:

wavpack -chhdb16 forest.wav -o forest.wv

Она создает корректирующий файл и одновременно удаляет оригинальный. При таком раскладе размер файла уменьшается с 24 МБ до 3,4 МБ (forest.wv), а корректирующий файл forest.wvc занимает 8,4 МБ.

Но в вашей аудиоколлекции наверняка будет больше одного файла. Чтобы разобраться с ними скопом, используйте команду вида

wavpack -chdb2.0 *.wav -o /home/suprunov/music/

Остается последний вопрос: на чем прослушать эту новенькую,только что сконвертированную в коллекцию «.wv + .wvc»? О, здесь изобилие вариантов: поддержка WavPack добавлена в FFmpeg и xine-lib, а значит, доступна через большинство популярных оболочек. Попробуйте Amarok, Audacious, Quod  Libet, XMMS... А удовлетворившись программными проигрывателями, присмотритесь к аппаратным. Забудьте MP3, живите в XXI веке, используйте lossless-кодеки, Linux, бластеры и флаеры. Будущее не остановить! LXF

Персональные инструменты
купить
подписаться
Яндекс.Метрика