Найти тему
AIMP

XSPF — формат плейлистов по умолчанию

Как вы могли заметить, в 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.