Mac OS X - Snow Léopard

Quelle solution avez-vous à me proposer pour lire et écrire des tags audio ?

Avec la dernière version de Qt4.7, Phonon ne lit plus les tags sauf le titre. Quant à l'écriture, je n'est pas trouvé d'exemple ou de solution.

Avec la librairie libtag installé avec Macport, lorsque j'ai le code suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Code TagLib::FileRef f(path et nom du fichier audio);
TagLib::Tag *tag = f.tag();
TagLib::String artist = tag->artist();:

Qt m'indique "invalid use of incomplete type 'struct TagLib::Tag'" pour la 3ème ligne

J'ai lu qu'il y avait une nouvelle classe dans Qt Mobile qui permettait de lire et d'écrire des tags : QMediaObject. J'ai donc installé la version de Qt4 qui a Qt Mobile (nokiaqtsdkinstaller-x32-2010-06-21-public), mais je sais pas comment intégré QMediaObject dans mon projet.

Merci pour votre aide

****************************************************************

Finalement, j'ai réussi à utiliser la librairie TagLib

J'ai installé TagLib avec Macport

Dans le .pro :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
LIBS += -L/opt/local/lib -ltag
Dans le .h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
#include </opt/local/include/taglib/taglib.h>
#include </opt/local/include/taglib/tfile.h>
#include </opt/local/include/taglib/fileref.h>
#include </opt/local/include/taglib/tstring.h>
#include </opt/local/include/taglib/tag.h>
Dans le cpp pour la lecture:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TagLib::FileRef f = TagLib::FileRef(string.toUtf8().data());// string nom du fichier avec son path
TagLib::Tag * metaData = f.tag();
TagLib::String artist = metaData->artist();
QString qArtist = TStringToQString(artist);
TagLib::String album = metaData->album();
QString qAlbum = TStringToQString(album);
uint track = metaData->track();
if (track < 10 ) qTrack = "0" + QString::number(track);
else qTrack = QString::number(track);
TagLib::String title = metaData->title();
QString qTitle = TStringToQString(title);
uint year = metaData->year();
QString qYear = QString::number(year);
TagLib::String genre = metaData->genre();
QString qGenre = TStringToQString(genre);
Dans le cpp pour l'écriture:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
TagLib::FileRef(fichier.toUtf8().data());
TagLib::Tag * metaData = f.tag();
uint track = tagsTable->item(row,1)->text().toUInt();//tagsTable -> QTableWidget
metaData->setTrack(track);
QString qTitle = tagsTable->item(row,2)->text();
TagLib::String title = qTitle.toUtf8().data();
metaData->setTitle(title);
QString qArtist = tagsTable->item(row,3)->text();
TagLib::String artist = qArtist.toUtf8().data();
metaData->setArtist(artist);
QString qAlbum = tagsTable->item(row,4)->text();
TagLib::String album = qAlbum.toUtf8().data();
metaData->setAlbum(album);
uint year = tagsTable->item(row,5)->text().toUInt();
metaData->setYear(year);
QString qGenre = tagsTable->item(row,6)->text();
TagLib::String genre = qGenre.toUtf8().data();
metaData->setGenre(genre);
 f.save();
En espérant que cela pourra aider un utilisateur ayant à travailler sur des tags audio.