Как вы могли заметить, в AIMP v5.03 для Windows и в AIMP v3.30 для Android формат XSPF стал форматом плейлистов по умолчанию. Что это за формат и зачем это было сделано?
О формате
XSPF (XML Shareable Playlist Format) это стандарт формата данных для плейлистов, основанный на XML. Формат был разработан Xiph.Org Foundation и выпущен в 2005 году. Главными особенностями формата являются: открытость, бесплатность, портативность и расширяемость.
В AIMP поддержка XSPF появилась v2.60 в 2009 году. Однако плеер научился только импортировать плейлисты этого формата — возможности экспорта не было. Поддержка экспорта появилась лишь сейчас, в v5.03, когда XSPF стал форматом плейлистов по умолчанию.
Формат по умолчанию
Экспериментируя с синхронизацией между устройствами, мы решили начать с малого — обеспечить преемственность форматов между мобильной и настольной версиями плеера.
До недавнего времени, мобильная версия использовала по умолчанию бинарный формат плейлистов (AIMPBPL), а настольная — текстовый (AIMPPL4). Обусловлено это было тем, что разбор текстового плейлиста на андроид занимал на порядок больше времени, чем бинарного. Единственным вариантом перенести плейлист с ПК на телефон было экспортировать его в формат M3U8. Однако M3U8 не поддерживал и половины возможностей, что есть в AIMP. Например, разбиение файлов с использованием CUЕ — ссылки на такие файлы просто становились некорректными.
По началу, мы рассматривали вариант научить мобильную версию работать с форматом AIMPPL4, но после первого прототипа стало понятно, что имеющихся возможностей для кросс-платформенного взаимодействия недостаточно и формат нужно расширять. Но стоит ли делать AIMPPL5, который будет поддерживать только AIMP последних версий?
Выбор пал на XSPF:
- Открытый и бесплатный
- Четкая спецификация
Спецификация четко регламентирует, как заполнять стандартные поля.
Никаких разночтений. - Кросс-платформенный
Пути к файлам записываются определенным образом, c учетом особенностей и Linux, и Windows. Поддерживаются относительные пути. - Расширяемый
В файл можно будет записать настройки форматирования, группировки и прообраза смарт-плейлиста. - Поддерживается многими плеерами
Экспортируемый плейлист можно будет открыть не только в AIMP, но и в любом другом плеере с поддержкой XSPF.
Кросс-платформенность
Плейлисты стали легкопереносимыми между мобильной и ПК версией AIMP. Не важно, сохраняли в их с абсолютными путями или относительными — главное, чтобы они переносились вместе с папкой с музыкой.
Помимо этого, теперь так же переносятся:
- Аудио-сеты, разделенные на треки с помощью файла разметки (CUE)
- Смарт-плейлисты на основе папок и плейлистов
Стоит заметить, что мобильная версия пока еще поддерживает не все настройки выборки данных, что доступны в ПК версии для смарт-плейлистов указанных типов.
Таким образом, переход на XSPF стал первым шагом к синхронизации между мобильной и ПК версией AIMP.
Производительность
В ходе полевых испытаний нашелся главный минус нового формата: разметка XML занимает много места, что негативно влияет как на размер файла, так и на скорость его чтения.
В качестве тестового образца был взят плейлист на 50 000 файлов с полностью заполненными тегами (те, что поддерживаются AIMP и пишутся в файл плейлиста):
XSPF: 37.2 МБ / 1.6 сек
M3U8: 6.8 МБ / 0.4 сек
AIMPPL4: 20.7 МБ / 0.9 сек
Большая ли это плата за кросс-платформенность?
Список всех расширений AIMP для XSPF и их описание можно найти в документе AIMP Extensions for XSPF в составе SDK.