Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/37: Рейтинг темы: голосов - 37, средняя оценка - 4.97
 Аватар для Lelik-pahan
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848

ID3 теги в mp3 файлах

06.12.2009, 20:37. Показов 6951. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Долго искал информацию, как получить из файла mp3 теги. Нашёл какой-то пример, взял из него нужный код (максимально упростив, просто, чтобы разобраться как всё работает), смог получить заголовок, исполнителя, альбом, год и комментарий, но не могу найти жанр.
Вот код
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 const int BUFS=200;
 char buf[BUFS];
 AnsiString sFN;
 
 AnsiString currDir = "C:\\";
 if(currDir[currDir.Length()] != '\\') currDir += "\\";
 
//    Application->ProcessMessages();
 
    sFN=(currDir + "1.mp3");
 
    int ih = FileOpen(sFN,fmOpenRead);
    FileSeek(ih,-128,2);
    for(int i=0; i<BUFS; i++) buf[i]=0;
    FileRead(ih,buf,BUFS-1);
    FileClose(ih);
    AnsiString sbuf = buf;
 
    AnsiString tit;
    tit = delSPACE(sbuf.SubString(1,200));
    Label1->Caption=tit;
}
получаю строку:
TAGНазвание Исполнитель Альбом 1987Комментарии

Тут всё понятно, но где жанр?

И ещё не понял, какую функцию выполняет строка
Application->ProcessMessages();
т. к. без неё всё работает точно так же.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.12.2009, 20:37
Ответы с готовыми решениями:

Работа с mp3 id3 тегами
Здравствуйте, мне нужно работать с mp3 id3 тегами, то есть название трека, альбом , исполнитель!! 1-это очистка определённых полей (можно...

Иногда не работает очистка id3 тегов
здравствуйте, используя ранние навыки в теме: https://www.cyberforum.ru/cpp-builder/thread584976.html я считывал теги, а потом...

Удалить теги ID3 (mp3)
Сабж чем можно ? В Linux я использовал Easyatag, есть порт ее под windows, но она требует Gtk+, а выкачивать 700 метров тупо. Только...

8
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
06.12.2009, 21:40
Функция Application->ProcessMessages() выполняет обработку сообщений. Если у тебя длинный цикл, который идет более нескольких секунд, ты можешь обрабатывать сообщения, и тогда у пользователя не возникнет ощущения, что программа зависла.
А насчет жанра. Это однобайтовое число: находится тут:
the layout is
ID3v1 identification -> 3 characters (the word "TAG")
Song Title -> 30 characters
Artist -> 30 characters
Album -> 30 characters
Year -> 4 characters
Comment -> 30 characters
Genre -> 1 byte <-----а вот и жанр
Расшифровка значений:
0.Blues
1.Classic Rock
2.Country
3.Dance
4.Disco
5.Funk
6.Grunge
7.Hip-Hop
8.Jazz
9.Metal
10.New Age
11.Oldies
12.Other
13.Pop
14.R&B
15.Rap
16.Reggae
17.Rock
18.Techno
19.Industrial
20.Alternative
21.Ska
22.Death Metal
23.Pranks
24.Soundtrack
25.Euro-Techno
26.Ambient
27.Trip-Hop
28.Vocal
29.Jazz+Funk
30.Fusion
31.Trance
32.Classical
33.Instrumental
34.Acid
35.House
36.Game
37.Sound Clip
38.Gospel
39.Noise
40.AlternRock
41.Bass
42.Soul
43.Punk
44.Space
45.Meditative
46.Instrumental Pop
47.Instrumental Rock
48.Ethnic
49.Gothic
50.Darkwave
51.Techno-Industrial
52.Electronic
53.Pop-Folk
54.Eurodance
55.Dream
56.Southern Rock
57.Comedy
58.Cult
59.Gangsta
60.Top 40
61.Christian Rap
62.Pop/Funk
63.Jungle
64.Native American
65.Cabaret
66.New Wave
67.Psychadelic
68.Rave
69.Showtunes
70.Trailer
71.Lo-Fi
72.Tribal
73.Acid Punk
74.Acid Jazz
75.Polka
76.Retro
77.Musical
78.Rock & Roll
79.Hard Rock
1
 Аватар для Lelik-pahan
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
08.12.2009, 17:12  [ТС]
Otaka, спасибо. Только мне не совсем понятно, я в свойствах файла в поле жанр записываю слово "жанр" (которое, естественно, не входит в этот список), и MediaPlayer при воспроизведении показывает "жанр" - откуда он берёт это слово?
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
08.12.2009, 17:39
Наверное, это еще зависит от версии. В mp3 есть по крайней мере 2 версии тегов(и они могут обе существовать в одном mp3 файле). Может быть ты записываешь слово "жанр" в ID3v2, а та таблица для версии ID3v1?
1
 Аватар для Lelik-pahan
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
08.12.2009, 17:53  [ТС]
А не подскажешь, как туда попасть? )))
0
 Аватар для Lelik-pahan
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
08.12.2009, 20:54  [ТС]
Так и не смог найти в интернете нужной информации, за то вот что дал мне WinHex

для Mp3 файла с такими тегами


(выделенный оффсет = длине соответствующего тега+1)
Это самое начало mp3 файла
0
 Аватар для Lelik-pahan
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
10.12.2009, 11:48  [ТС]
Столкнулся ещё с одной проблемой:
Пока отлаживал работу программы, "трениролвался" на одном mp3 файле, теги к которому прописал стандартными виндовыми средствами (через свойства файла). У меня Windows 7. С ним программа, кусок кода которой приведён ниже, работает. Но когда я попытался открыть файлы, теги к которым прописывал ещё в XP, обнаружил. что там они хранятся по другому... Я понимаю, что дело в разных версиях ID3, но не знаю как получить доступ к ним.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  const int BUFS=100;
  char buf[BUFS];
  AnsiString sFN;
 
if (OpenDialog1->Execute())
{
 sFN=(OpenDialog1->InitialDir+OpenDialog1->FileName);
 int ih = FileOpen(sFN,fmOpenRead);
 FileSeek(ih,-128,2);
 for(int i=0; i<BUFS; i++) buf[i]=0;
 FileRead(ih,buf,BUFS-1);
 FileClose(ih);
 AnsiString sbuf = buf;
 DBNavigator1->BtnClick(nbInsert);
 DBEdit1->Text=delSPACE(sbuf.SubString(4,30));   
 DBEdit2->Text=delSPACE(sbuf.SubString(34,30));
 DBEdit4->Text=delSPACE(sbuf.SubString(64,30));
 DBEdit5->Text=delSPACE(sbuf.SubString(94,4));
 DBNavigator1->BtnClick(nbPost);
}
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
10.12.2009, 18:15
Смотри сюда и медитируй: http://www.id3.org/
1
 Аватар для Lelik-pahan
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
10.12.2009, 22:22  [ТС]
Otaka, спасибо, но я там был. С английским у меня беда )))
Будем учить ))))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.12.2009, 22:22
Помогаю со студенческими работами здесь

ID3 теги mp3 файла Delphi
Помогите с программой. Нашел исходник, такое ощущение, что он один вообще) Не работает, выводит закорюки вместо нужных данных. Уже и мп3...

Пропали эскизы папок с mp3 файлами, отсутствуют теги в mp3 файлах
Доброго времени суток, появилась такая проблема: пропали эскизы папок с mp3 файлами, а так же исчезли теги в mp3 файлах, примерно с недели...

ID3v1 теги в mp3 файлах, получить всю информацию о треке
Hi! Вот решил реализовать &quot;вытаскивание&quot; технической информации из mp3 файла. public class MusicID3Tag класс для музыки { ...

ID3-Tag'и из MP3-файла
Здравствуйте. Для прочтения ID3 тегов из файла нашёл вот такой код: Процедура читающая теги из MP3: function...

Читать ID3 Тэг MP3 файла
Здравствуйте! Помогите пож-та с разработкой программки... Нужно считать тэг из MP3 файла(артист-название) и переименовать файл в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru