motofan logo
2 страниц V  1 2 >        
> 

Формат плейлистов, 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 килобайт ) Кол-во скачиваний: 334
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AlexNecro
сообщение 6.2.2010, 2:54


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 6.2.2010
Пользователь №: 213 572
Модель телефона: V360

Рейтинг: 0



Выложил генератор плейлистов на
http://necro.nightmail.ru/Programming/motorola.html
тестировал на V360; могу предоставить версию для Linux

ссылку выложил потому что пока программа обновляется именно там

Сообщение отредактировал AlexNecro - 6.2.2010, 5:44
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 6.2.2010, 9:08


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



AlexNecro, а что мешает качать и вылаживать именно тут?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
stigr
сообщение 6.2.2010, 9:25


Авторитет
********

Группа: Администраторы
Сообщений: 8 286
Регистрация: 12.3.2007
Из: Україна
Пользователь №: 126 559
Модель телефона: Motorola Edge 30 Neo

Рейтинг: 3190



На данном ресурсе виуснячков лёгко можно подхватить.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AlexNecro
сообщение 6.2.2010, 11:53


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 6.2.2010
Пользователь №: 213 572
Модель телефона: V360

Рейтинг: 0



Ну так уж сложилось, что моя страничка именно там.
Прикрепленный файл fat.zip   ( 46.34 килобайт ) Кол-во скачиваний: 173
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DJ DenS
сообщение 10.2.2010, 8:56


Мастер
****

Группа: Пользователи
Сообщений: 155
Регистрация: 23.3.2008
Пользователь №: 167 427
Модель телефона: L9, Motorola XT720

Рейтинг: 23.5



глючит что то она всё ошибки показывает
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AlexNecro
сообщение 10.2.2010, 12:22


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 6.2.2010
Пользователь №: 213 572
Модель телефона: V360

Рейтинг: 0



Знать бы еще, как глючит и что показывает
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AlexNecro
сообщение 13.2.2010, 17:20


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 6.2.2010
Пользователь №: 213 572
Модель телефона: V360

Рейтинг: 0



Я так понимаю, программа никому не нужна?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
eselchen
сообщение 2.3.2010, 8:22


Новичок
*

Группа: Начинающие
Сообщений: 2
Регистрация: 2.3.2010
Пользователь №: 214 569
Модель телефона: Motorola RAZR V3x

Рейтинг: 0



Цитата(AlexNecro @ 13.2.2010, 20:20) *

Я так понимаю, программа никому не нужна?

Очень нужна! crazy.gif Я сам сейчас как раз на C++Builder 5 пишу эту функцию.Если не в лом поделитесь вашими исходничками(на чём бы вы не писали) лучше прямо eselchen@yandex.ru helpsmilie.gif А я вам перешлю всё,что плучилось!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AlexNecro
сообщение 8.3.2010, 1:26


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 6.2.2010
Пользователь №: 213 572
Модель телефона: V360

Рейтинг: 0



Цитата(eselchen @ 2.3.2010, 15:22) *

Очень нужна! crazy.gif Я сам сейчас как раз на C++Builder 5 пишу эту функцию.Если не в лом поделитесь вашими исходничками(на чём бы вы не писали) лучше прямо eselchen@yandex.ru helpsmilie.gif А я вам перешлю всё,что плучилось!


Программа компилируется на любои С++ и работает, предположительно, на любой платформе (тестировал Linux)? исходников две страницы - чем делиться, глюками?

Добавлено позже (8.3.2010, 8:29):
Для написания достаточно первого сообщения и описания FAT (хотя нужно смотреть, что делать, если длинного имени нет - у меня не реализовано), к тому же у меня читает только первый кластер каталога, если много удаленных файлов - программа берет не всё

Добавлено позже (8.3.2010, 8:46):
Исходники доступны на сайте necro.nightmail.ru
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Формат плейлистов, pla, apl, pvl · Ломаем и строим! · Forum
 

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

 



Текстовая версия Сейчас: 29.4.2024, 5:39

Форум живёт: