2012-09-06 106 views
2

我嘗試從C++中使用ID3lib。 我測試了近50個mp3文件,最常見的答案是文件沒有任何標籤。 但實際上,他們在那裏(我檢查它使用其他軟件,並正確顯示它們)id3lib提取標籤

其實,我做了什麼,我只鏈接庫和複製例如從offficial documentation

void next_try() 
{ 
    ID3_Tag tag; 
    tag.Link("file.mp3"); 
    cout<<"success\n"; 
    cout<<tag.GetFileSize()<<"\n"; 

    ID3_Frame *frame; 
    if (frame = tag.Find (ID3FID_TITLE)) 
     { 
     char title[ 1024 ]; 
     frame->Field (ID3FN_TEXT).Get (title, 1024); 
     cout << "Title: " << title << endl; 
     } 
    else 
    cout<<"not found\n"; 
} 

和一個文件,確實有標籤http://zalil.ru/33733757

但我得到答案,它沒有標記。但它已經!!! 這不是一次發生。我想知道這個庫是否真的有用。

也許有人對此圖書館有經驗。 此外,我很困惑,因爲工作項目上有official page鏈接,所以已經證明庫可以正常工作。
在此先感謝您的任何提示。

回答

2

id3lib不再維護,相當過時,因爲它不支持ID3v2.4。

你可以很容易地看到,隨着hexdump -C -n4 your.mp3

00000000 49 44 33 03 |ID3.| 00000004

如果MP3文件ID3與開始,第4個字節是03,它會與id3lib工作。如果有04,它使用ID3v2.4。

+1

感謝,仍然很高興知道爲什麼在多年後 – Tebe

+0

我今天有問題,發現你的問題試圖理解,所以它可能仍然與其他人相關:-)。還有幾個程序依賴於id3lib而不是保持良好的taglib。 – bhaak