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 :
Dans le .h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part LIBS += -L/opt/local/lib -ltag
Dans le cpp pour la lecture:
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 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 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);
En espérant que cela pourra aider un utilisateur ayant à travailler sur des tags audio.
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();
Partager