motofan logo
> 

Формат плейлистов, pla, apl, pvl

blackbox
сообщение 15.4.2008, 14:09


Control Freak
******

Группа: Разработчики
Сообщений: 838
Регистрация: 23.9.2005
Пользователь №: 52 431
Модель телефона: iPhone
Прошивка: 2.2.1

Рейтинг: 627.5



Наверное все знают, что в моторолах встроенный плеер (не DAP) может играть только одну песню, либо плейлисты.
Причем создавать плейлисты на самом телефоне очень неудобно, т.к. вся музыка вываливается в общем списке, без поиска и сортировки по алфавиту. С флешкой объемом 1 гиг или более этот процесс становится изощренной формой мазохизма.
Налицо потребность в средстве создания плейлистов на компьютере.

Формат плейлистов .pla (или .apl на старых телефонах) длительное время не был разобран, но недавно FaberfoX с ModMyMoto выложил программу Playlist Maker. Программа консольная, глючная, тяжелая, не имеет настроек и требует очень специфической организации папок с музыкой, но при этом работает.
Причем камрад FaberfoX не горит желанием публиковать исходники или хотя бы спецификацию формата, предлагая всем желающим разбираться самостоятельно.

Я подумал: "чем мы хуже?", посидел над .pla файлами и расковырял этот формат. Вообще я хотел бы написать свою прогу для работы с плейлистами, но сейчас мне не хватает свободного времени. Так что выкладываю информацию, может кому-нибудь пригодится.

Для интересующихся: необходимо владение хекс-редактором с доступом к диску, например WinHex (XVI32 не подходит) и представление о структурах файловой системы FAT. Также обязательно понимание принципа организации длинных имен (т.наз. LFN).

1. Где встречаются эти плейлисты и с чем их едят?
Описываемый формат плейлистов используется во всех GSM P2K телефонах Моторола. В данном случае нас интересуют только модели с картой памяти MicroSD (E398, E1, V635, V3i, L7, L7e, L9, K1, Z3, W510).
В "старых" моделях плейлисты имеют расширение .apl, в "новых" (семейство K1/Z3/L7e/L9/W510) - .pla. И в тех и других есть также файлы слайдшоу .pvl, они представляют значительно меньший интерес, но формат у них тот же самый.
Независимо от расширения, формат файлов .pla, .apl, .pvl одинаковый.

2. Структура плейлистов
Файлы имеют бинарный формат с записями фиксированной длины. Вместо пути к файлам там находятся указатели на структуры файловой системы, относящиеся к этим файлам. Все числа представлены в формате big-endian.

Заголовок - 8 байт
- 2 байта - число записей
- 2 байта - интервал между файлами в секундах (только для слайдшоу; для плейлистов всегда 1)
- 4 байта - не используются


Запись - 8 байт
- 2 байта - тип памяти (для L9: 01 01 - карта, 02 00 - телефон; для L7: 01 40 - карта, код телефона проверяйте сами smile.gif
- 2 байта - индекс последней по счету LFN записи файла (первой по очереди, т.к. записи идут в обратном порядке) в директории
- 4 байта - номер логического сектора директории


Примечания:
  1. Естественно, прочитать запись можно только в том случае, если файл находится на карте, телефон подключен к компьютеру в режиме съемного диска или сама карта находится в ридере.
    Записи для файлов, находящихся в памяти телефона, прочитать нельзя.
  2. В 3-м параметре всегда находится текущий сектор, а не начальный, при этом 2-й параметр (индекс записи в директории) указывается от начала этого сектора, а не от начала директории (даже если директория занимает больше одного сектора).
    Смещение от начала сектора = индекс * 32.
Думаю, все это довольно трудно понять без примера smile.gif

Изображение
Рис. 1. Файл плейлиста в WinHex

На рис.1 мы видим файл .pla, содержащий 4 записи, 2-я запись соответствует файлу \mobile\audio\New Music\AC-DC - Highway to Hell.mp3
В директории \mobile\audio\New Music этот файл (точнее, его последняя LFN запись) находится в логическом секторе 0x00000f48 (3912), индекс записи - 0x0c (12).

Изображение
Рис. 2. Сектор директории в WinHex

На рис.2 мы видим сектор 3912 диска, принадлежащий директории \mobile\audio\New Music.
Записи с 12 по 14 содержат длинное имя файла "AC-DC - Highway to Hell.mp3", запись 15 - его короткое имя и остальные параметры (размер, № первого кластера, даты создания и модификации).

Хорошую спецификацию по LFN можно найти здесь: http://home.teleport.com/~brainy/lfn.htm

Добавлено позже (15.4.2008, 17:38):
В качестве примера написал небольшую консольную прогу, которая читает плейлист и выдает имена файлов.
Требуется один параметр - полный путь к плейлисту, включая букву диска. Плейлист должен быть на карте памяти, которая должна находиться в телефоне (подключенном в режиме mass storage), или в ридере. Не используйте прогу с файлами на жестком диске - защита от дурака не предусмотрена.

Пример:
Код
playlist.exe "J:\mobile\audio\All Music.pla"


Сообщение отредактировал blackbox - 15.4.2008, 14:10
Прикрепленный файл playlist.7z   ( 27.53 килобайт ) Кол-во скачиваний: 354
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить

Сообщений в этой теме

Формат плейлистов, pla, apl, pvl · Ломаем и строим! · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 5.8.2025, 10:24

Форум живёт: