Чем читать метаденные из mp3?
Участников: 4
FreeBasic :: Программирование :: Общее
Страница 1 из 1
Чем читать метаденные из mp3?
Привет.
Во -первых, хочу поблагодарить создателей этого форума, за их работу. Наконец - то и нашому брату есть где потусоватся.
А теперь проблема.
Задумал написать плеер, специально для проигрования аудио - книг в mp3. Наверное буду использовать FMOD. Но вот как читать метаданные (теги) из файлов? То -есть мне надо чтобы в окне отображались названия глав и статей (а не файлов), так как это делается, например, в Winamp. Кажись у FMODа есть функции для работы с тегами, но я их никогда не использовал. Может кто имел с такой байдой дело, хотелось бы получить совет профи
Во -первых, хочу поблагодарить создателей этого форума, за их работу. Наконец - то и нашому брату есть где потусоватся.
А теперь проблема.
Задумал написать плеер, специально для проигрования аудио - книг в mp3. Наверное буду использовать FMOD. Но вот как читать метаданные (теги) из файлов? То -есть мне надо чтобы в окне отображались названия глав и статей (а не файлов), так как это делается, например, в Winamp. Кажись у FMODа есть функции для работы с тегами, но я их никогда не использовал. Может кто имел с такой байдой дело, хотелось бы получить совет профи
mishana- Сообщения : 8
Дата регистрации : 2008-11-09
Возраст : 38
Откуда : Україна, Шепетівка
Re: Чем читать метаденные из mp3?
Наверно на ету тему лучше посоветоваться с Eric-S, а тут к сожалению несилен((
Re: Чем читать метаденные из mp3?
Я предполагаю, что здесь идёт речь о MP3-тэгах.
Файлы mp3 могут хранить информацию об исполнителе, названии песни, альбоме и т.д. в так называемом тэге ID3. Располагается этот тэг в последних 128 байтах файла (но его наличие в файле необязательно). Таким образом, для извлечения информации нужно считать последние 128 байтов файла, проверить специальную сигнатуру (первые три символа - TAG), и если она совпала, то считаем эти самые 128 байтов ID3-тэгом. Сам тэг в свою очередь делится на небольшие фрагменты по несколько байтов, в которых и содержится информация.
Как видите, название песни, альбома, исполнитель и комментарий представляются не более чем 30 символами, если же в строке меньше 30 символов, то она дополняется символами с кодом 0 (первый символ с кодом 0 считается концом строки). Имеется также небольшое расширение формата - ID3-тэг версии 1.1, позволяющий сохранять номер трека компакт-диска, с которого оцифровывалась музыка. Для этого выделен последний байт комментария. Чтобы быть уверенным, что это номер трэка, а не символ из очень длинного комментария, нужно проверить предпоследний байт на равенство нулю. Кроме того, существует спецификация ID3 версии 2.0, в которую вошли дополнительные данные.
Последний байт тэга отвечает за жанр. Была разработана таблица соответствия названий жанров значению байта.
Не исключено, что названия жанров будут пополняться. Поищите информацию также в интернете.
Файлы mp3 могут хранить информацию об исполнителе, названии песни, альбоме и т.д. в так называемом тэге ID3. Располагается этот тэг в последних 128 байтах файла (но его наличие в файле необязательно). Таким образом, для извлечения информации нужно считать последние 128 байтов файла, проверить специальную сигнатуру (первые три символа - TAG), и если она совпала, то считаем эти самые 128 байтов ID3-тэгом. Сам тэг в свою очередь делится на небольшие фрагменты по несколько байтов, в которых и содержится информация.
Смещение (байт) | Размер в байтах | Название | Содержание |
0 | 3 | Signature | "TAG" (если сигнатуры нет, то это не ID3-тэг) |
3 | 30 | Title | Название песни |
33 | 30 | Artist | Исполнитель |
63 | 30 | Album | Название альбома |
93 | 4 | Year | Год выпуска |
97 | 30 | Comment | Комментарий |
127 | 1 | Genre | Жанр |
Как видите, название песни, альбома, исполнитель и комментарий представляются не более чем 30 символами, если же в строке меньше 30 символов, то она дополняется символами с кодом 0 (первый символ с кодом 0 считается концом строки). Имеется также небольшое расширение формата - ID3-тэг версии 1.1, позволяющий сохранять номер трека компакт-диска, с которого оцифровывалась музыка. Для этого выделен последний байт комментария. Чтобы быть уверенным, что это номер трэка, а не символ из очень длинного комментария, нужно проверить предпоследний байт на равенство нулю. Кроме того, существует спецификация ID3 версии 2.0, в которую вошли дополнительные данные.
Последний байт тэга отвечает за жанр. Была разработана таблица соответствия названий жанров значению байта.
Жанр | Значение байта |
Blues | 0 |
ClassicRock | 1 |
Country | 2 |
Dance | 3 |
Disco | 4 |
Funk | 5 |
Grunge | 6 |
HipHop | 7 |
Metal | 9 |
NewAge | 10 |
Oldies | 11 |
Other | 12 |
Pop | 13 |
RnB | 14 |
Rap | 15 |
Reggae | 16 |
Rock | 17 |
Techno | 18 |
Industrial | 19 |
Alternative | 20 |
Ska | 21 |
DeathMetal | 22 |
Pranks | 23 |
Soundtrack | 24 |
EuroTechno | 25 |
Ambient | 26 |
TripHop | 27 |
Vokal | 28 |
JazzFunk | 29 |
Fusion | 30 |
Trance | 31 |
Classical | 32 |
Instrumental | 33 |
Acid | 34 |
House | 35 |
Game | 36 |
SoundClip | 37 |
Gospel | 38 |
Noise | 39 |
AlternRock | 40 |
Bass | 41 |
Soul | 42 |
Punk | 34 |
Space | 44 |
Meditative | 45 |
InstrumentalPop | 46 |
InstrumentalRock | 47 |
Ethnic | 48 |
Gothic | 49 |
Darkware | 50 |
TechnoIndustrial | 51 |
Electronic | 52 |
PopFolk | 53 |
Eurodance | 54 |
Dream | 55 |
SouthemRock | 56 |
Comedy | 57 |
Cult | 58 |
Gangsta | 59 |
Top40 | 60 |
ChristianRap | 61 |
PopFunk | 62 |
Jungle | 63 |
NativeAmerican | 64 |
Cabaret | 65 |
NewWave | 66 |
Psychadelic | 67 |
Rave | 68 |
Showtunes | 69 |
Trailer | 70 |
LoFi | 71 |
Tribal | 72 |
AcidPunk | 73 |
AcidJazz | 74 |
Polka | 75 |
Retro | 76 |
Musical | 77 |
RocknRoll | 78 |
HardRock | 79 |
None | 255 |
Не исключено, что названия жанров будут пополняться. Поищите информацию также в интернете.
Re: Чем читать метаденные из mp3?
Большое спасибо всем кто откликнулся на эту тему. Очень ценная информация. Но к сожалению, оказалось, что мне нужно читать тэги id3v2, а их формат совсем другой. Во - первых размещаются они не в конце,а в начале mp3 файла, к тому же, имеют переменную длину полей, которые у них, насколько я понял, могут быть чуть ли не по 16 Мб.
Оказывается, библиотека BASS читает id3v2 тэги. Там и специальная функция есть, и структура(BASS_ChannelGetTags,TAG_ID3). Но структура, задокументирована под id3v1. Кароче буду пробовать может чё получится. Просто времени нету. Буду рад помощи.
Оказывается, библиотека BASS читает id3v2 тэги. Там и специальная функция есть, и структура(BASS_ChannelGetTags,TAG_ID3). Но структура, задокументирована под id3v1. Кароче буду пробовать может чё получится. Просто времени нету. Буду рад помощи.
mishana- Сообщения : 8
Дата регистрации : 2008-11-09
Возраст : 38
Откуда : Україна, Шепетівка
Re: Чем читать метаденные из mp3?
Привет!
К сожалению, я ничего хорошего сказать не могу. Ковырялся, но не на очень низком уровне.
Где-то видел библиотечку, специально чтобы читать тэги. Но кроме того, что такая есть, ничего больше не могу сказать.
Плеер для аудио книг, это хорошая и правильная мысль. Сам уже над этим давно думал. Где-то даже на форуме клуба любителей аудио книг, об этом писал. И про его предполагаемые функции.
Так что идею поддерживаю, но пока только морально!
К сожалению, я ничего хорошего сказать не могу. Ковырялся, но не на очень низком уровне.
Где-то видел библиотечку, специально чтобы читать тэги. Но кроме того, что такая есть, ничего больше не могу сказать.
Плеер для аудио книг, это хорошая и правильная мысль. Сам уже над этим давно думал. Где-то даже на форуме клуба любителей аудио книг, об этом писал. И про его предполагаемые функции.
Так что идею поддерживаю, но пока только морально!
Re: Чем читать метаденные из mp3?
Хай, пипл!
Значит, попробовал я на днях розчехлится с BASSовскими тэг-функциями. Сразу скажу, нифига не получилось.
Когда я попробовал использовать функцию BASS_ChannelGetTags, компилятор выдал, что переменной с таким именем не существует. Я полез в файл bass.bi и оказалось таки да - нет такой функции. Зато есть точно такая же BASS_StreamGetTags, о которой в документации ни слова. При попытке использовать эту функцию, компилятор ругается, что такой точки входа в файл bass.dll не существует.
Я рискнул было прописать функцию в заголовочном файле, но при компиляции все равно что-то там не клеится. Как правильно задекларировать функцию? Может прямо в программе? Буду пробовать, о результатах доложу.
пысы. кстати, я немного ошибся, BASS_ChannelGetTags таки читает id3v2 тэги. Поэтому, я и хочу ее использовать. Не надо будет еще одной библиотеки для чтения тэгов. Хотя онную поискать стоит.
Значит, попробовал я на днях розчехлится с BASSовскими тэг-функциями. Сразу скажу, нифига не получилось.
Когда я попробовал использовать функцию BASS_ChannelGetTags, компилятор выдал, что переменной с таким именем не существует. Я полез в файл bass.bi и оказалось таки да - нет такой функции. Зато есть точно такая же BASS_StreamGetTags, о которой в документации ни слова. При попытке использовать эту функцию, компилятор ругается, что такой точки входа в файл bass.dll не существует.
Я рискнул было прописать функцию в заголовочном файле, но при компиляции все равно что-то там не клеится. Как правильно задекларировать функцию? Может прямо в программе? Буду пробовать, о результатах доложу.
пысы. кстати, я немного ошибся, BASS_ChannelGetTags таки читает id3v2 тэги. Поэтому, я и хочу ее использовать. Не надо будет еще одной библиотеки для чтения тэгов. Хотя онную поискать стоит.
mishana- Сообщения : 8
Дата регистрации : 2008-11-09
Возраст : 38
Откуда : Україна, Шепетівка
FreeBasic :: Программирование :: Общее
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|