engrus

7-Zip плагины\WavPack7z

WavPack7z – это плагин для для популярного архиватора 7-Zip, добавляющий в 7-Zip возможность упаковки несжатых аудио данных в формате PCM с помощью высокоэффективного алгоритма сжатия WavPack.

О высоком качестве сжатия можно судить по цифрам на скриншоте:

WavPack codec

Плагином поддерживается автоматическое определение и упаковка файлов следующих типов:

  • .wav (включая варианты bwf/rf64 и Multiple Data Chunks (Legasy Audition Format))
  • .caf (Core Audio Format)
  • .w64 (Sony Wave64)
  • .dff (Philips DSDIFF)
  • .dsf (Sony DSD stream)
  • .aif, .afc (Аudio Interchange File Format, включая формат AIFF-C)

Также поддерживается возможность упаковки файлов с необработанными (raw) аудио данными.

Допустимы следующие параметры сжимаемых аудио данных:

  • Количество каналов: 1-256
  • Количество бит на семпл: 1-32
  • Тип данных: integer или float, допустимы как знаковые, так и без знаковые значения.

Также плагин позволяет распаковывать из zip архивов файлы, упакованные методом WavPack.

Установка

Установочный дистрибутив WavPack7z представляет собой простой Zip-архив, содержащий файл ReadMe.txt и две папки с именами 32 и 64. В этих папках находятся 32-битная и 64-битная версии плагина, соответственно. Внутри папок находятся непосредственно файлы плагина. Для установки плагина в папке, в которую установлена программа 7-Zip, необходимо создать папку Codecs. В созданную папку необходимо скопировать либо содержимое папки 32, либо содержимое папки 64, в зависимости от разрядности программы 7-Zip. После этого 7-Zip при запуске будет автоматически находить плагин и использовать его для работы с дополнительным методом сжатия WavPack.

Использование

Важно! Используйте метод сжатия Wavpack только для упаковки несжатых аудио данных в формате PCM. При попытке сжатия любых других данных 7-Zip покажет сообщение с описанием ошибки: WavPack error

Для упаковки файла алгоритмом WavPack нужно выбрать в 7-Zip стандартную команду упаковки и выбрать в поле Archive format формат 7z:

Упаковка в формат ZSTD в 7-Zip

Интерфейс программы 7-Zip не позволяет напрямую выбрать алгоритм Wavpack в качестве метода сжатия, который будет использоваться при упаковке в формат 7z, поэтому для использования метода сжатия Wavpack нужно заполнить поле Parameters параметрами упаковки. Рекомендуется использовать следующую строку:

yx=0 0=WavPack2 1=lzma:d20 b0s1:1

Данная строка состоит из трех логических частей. Первая часть (yx=0) отключает интеллектуальную систему определения типа файла, используемую в программе 7-Zip, которая автоматически будет использовать дополнительный фильтр Delta при обнаружении wav файла. Вторая часть 0=WavPack2 непосредственно включает использование метода сжатия WavPack. Третья часть (1=lzma:d20 b0s1:1) определяет метод сжатия заголовков и окончаний аудио файлов, что дополнительно улучшает уровень сжатия.

Хотя вы можете выбрать любой из уровней сжатия от Fastest до Ultra, оптимальным уровнем сжатия по соотношению скорость/размер является уровень Normal.

Сжатие необработанных аудиоданных

Необработанные аудиоданные не имеют заголовков, поэтому не могут быть определены автоматически. Примером таких данных может быть, например, образ аудио CD диска в виде файла. Для сжатия таких данных нужно дополнить строку 0=WavPack2 следующими параметрами (N обозначает значение параметра):

0=WavPack2:a=N:fb=N:o=N:mc=N:lp=N:d=Nb:c=Nb

Все параметры кроме параметра "a" могут быть опущены, если имеют значение по умолчанию.

  • Параметр "a" определяет тип данных:
    ЗначениеПорядок байтовТип данных
    Little-endianBig-endianSigned integerUnsigned integerFloat
    1++
    2++
    3++
    4++
    5++
    6++
  • Параметр "fb" определяет количество бит на семпл. По умолчанию данный параметр имеет значение 16.
  • Параметр "o" определяет маску каналов. С более подробным описание этого параметра можно ознакомится на сайте Microsoft. По умолчанию данный параметр имеет значение 0, что обозначает отсутствие информации о типе каналов.
  • Параметр "mc" определяет количество каналов. По умолчанию данный параметр имеет значение 2.
  • Параметр "lp" определяет значение частоты дискретизации в герцах. По умолчанию данный параметр имеет значение 44100.
  • Параметр "d" определяет размер заголовка в файле в байтах. По умолчанию данный параметр имеет значение 0, что обозначает отсутствие заголовка.
  • Параметр "с" определяет размер аудио данных в файле в байтах. По умолчанию данный параметр имеет значение 0, что обозначает, что аудио данные следуют до конца файла. Если данный параметр определен, то размер окончания файла будет высчитан автоматически на основании размера заголовка и размера аудио данных.

Значения параметров по умолчанию подобраны таким образом, что бы упаковка образа аудио CD диска могла быть выполнена с использованием короткой записи 0=WavPack2:a=1

Актуальная версия

  • Версия плагина: 1.3
  • Размер установочного дистрибутива: 475 KB
  • Дата установочного дистрибутива: 12 Feb 2019

Примечание для разработчиков

По ссылке вы можете ознакомиться с некоторыми техническими деталями реализации.

Разработчики, желающие добавить поддержку плагина WavPack7z в свою программу, могут сильно упростить жизнь своим пользователям, избавив их от необходимости ручного ввода параметров. WavPack7z поддерживает механизм получения и передачи параметров 7z Parameter API. Данный механизм позволяет приложению использовать любой новый плагин (поддерживающий 7z Parameter API) и корректно отображать доступные для изменения параметры полностью автоматически, основываясь лишь на данных, передаваемых самим плагином.