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

Плагином поддерживается автоматическое определение и упаковка файлов следующих типов:
- .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 нужно выбрать в 7-Zip стандартную команду упаковки и выбрать в поле Archive format формат 7z:

Интерфейс программы 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-endian Big-endian Signed integer Unsigned integer Float 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) и корректно отображать доступные для изменения параметры полностью автоматически, основываясь лишь на данных, передаваемых самим плагином.