Форум программистов, компьютерный форум, киберфорум
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. Показов 6930. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru