Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > mp3


Автор: HalkaR 21.12.2002, 02:35
Как собственно говоря писать и читать mp3 теги?

Автор: Baa 21.12.2002, 03:20
Код

void CMfc1Dlg::OnBnClickedButton2()
{
typedef struct tagID1 {
char szTAG[3];
char szSongName[30];
char szArtist[30];
char szAlbum[30];
char szYear[4];
char szComment[30];
char cGenre;
} ID1, *LPID1;
HANDLE hFile = CreateFile ("c:\\001.mp3",
GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
SetFilePointer (hFile, GetFileSize (hFile, NULL)-128, 0, FILE_BEGIN);
ID1 id1;
DWORD dwBytes;
ReadFile (hFile, &id1, sizeof(ID1), &dwBytes, NULL);
if (memcmp (id1.szTAG, "TAG", 3)) AfxMessageBox ("Not an id1 TAG");
CString str;
CloseHandle (hFile);
}

Автор: Baa 21.12.2002, 03:25
Ах, да, совсем забыл, чтобы писать их, поищи на форуме тему про работу с файлами.
з.ы. если найдешь как читать ID3v2 - дай знать... времени с ним разбираться у меня ща нету, но на первый взгляд он показался мне не таким простым как ID3v1

Автор: Vaulter 30.12.2002, 13:38
чтобы читать ID3v2 нужно всего лишь знать имена полей для артистов и т.д.
идет с начала файла, если первые байты "ID3" значит он.
далее ищем "TALB" для поля альбом
"TPE1" для артиста
"TIT2" для имени.
формат всех полей такой
typedef struct
{
char TagIndet[4];//4 символа на тип поля
       DWORD length;//подозрение на длину строки, однако встречал несоответсвия, редко, один раз. :)
       char zeros[3];//там просто нули!!! я их пропускал
std::string field;//собственно за чем и охота, длиной в length
} MP3TAGV2;

Автор: Baa 30.12.2002, 17:15
Не такой варинт не подходит... так хитрее система... там вроде смещения прописываются на след. тэг (или на размер текущего)(но эт не точно :\ потому как опять же, вплотную этим вопросом не занимался :( )... надо читать все... (еще умудряются текст песни засунуть в файл...)

Автор: Vaulter 30.12.2002, 18:46
я написал же про размер стринга, и про индификатор
а их там много индификаторов - картинки, текста и т.д.
кстати, официального описания все никак не могу найти, очень нужно. можт кто знает где лежит

Автор: Baa 30.12.2002, 18:57
У меня есть полное описание... правдо скорее всего у тебя такое тоже есть... вобщем, если хочешь, то могу выслать (оно дома, так что как токо домой приду) :) заодно если разберешься, потом мне расскажешь :)


Автор: Vaulter 31.12.2002, 05:16
высылай! мне очень нужно, потому как я написал/пишу/и еще буду писать прогу (plugin for Winamp - Winamp Statistician) а там как раз надо читать инфу, а если есть еще мона на WMA и где там еще артисты.
[email protected]
заранее благодарен

Автор: luck 2.1.2003, 04:51
народ и мне, плиз,  скиньте на мыло инфу по поводу ID3.
[email protected]

Автор: neutrino 2.1.2003, 18:12
Lord Baa, кинь ее в ФАК. Там ей и место.

Автор: Baa 3.1.2003, 00:58
Цитата(neutrino @ 02.1.2003, 10:12)
Lord Baa, кинь ее в ФАК. Там ей и место.

Статье? она огромна... да и она не привязана к языку... а по технологиям и алгоритмам форума нету...

Автор: neutrino 3.1.2003, 01:59
Ну, тогда в портал. Он, кстати, доделан или нет?

Автор: Baa 3.1.2003, 07:34
Вовка вроде еще работает над ним... так что рано... я думаю, что я разберусь с тэгами и тогда свою статью повешу, дабы проблем с копирайтами не было.

Автор: DrMasik 4.1.2003, 07:20
Да на FTP-шник киньте. а тут только ссылочку, да и все!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)