Introduction
TagLib est une bibliothèque open-source écrite en C++ qui permet la lecture, l’écriture et la manipulation de Tags (étiquettes) de fichiers sons (Mp3, FLAC, MPC, Speex, WavPack and TrueAudio).
Ce tutorial doit vous donner les bases pour utiliser TagLib dans vos applications.
Installer TagLib
La première étape pour utiliser TagLib est bien sûr de l’installer sur son systême. Pour de nombreuses distributions GNU/Linux, TagLib existe dans le gestionnaire de paquets. Il est très important d’installer la bibliothèque ainsi que ses en-têtes (souvent un paquet avec un suffixe -dev ou -devel).
Sous Ubuntu 8.04:
sudo apt-get install libtag1c2a libtag1-dev
Bien sûr, vous pouvez compiler vous-même la bibliothèque. En téléchargeant le code source sur le site:
TagLib 1.5Pour les utilisateurs de Windows, il existe deux possibilités:
Télécharger et compiler les sources
Une version binaire de la bibliothèque est disponible
.
Compiler avec TagLib
Pour des environnements linux, il suffit d’installer la bibliothèque et à l’édition des liens, ajouter
-ltag
à la ligne de compilation. Attention: il est obligatoire d’ajouter le chemin des includes dans le includepath.
#include <taglib/tag.h>
seul ne marchera pas.
Exemple d’un petit makefile:
all:main
main: main.o MP3_File.o
g++ -Wall -g -o main main.o MP3_File.o -ltag
main.o: main.cpp
g++ -Wall -g -c main.cpp
MP3_File.o:MP3_File.cpp MP3_File.h
g++ -Wall -g -c MP3_File.cpp
Lire des tags
Dans ce chapitre, nous allons voir comment TagLib doit être utilisé pour lire des tags. La bibliothèque est entièrement contrôlée par la classe
TagLib::FileRef
(Design pattern: Façade). L’initialisation commence par la création d’une instance
TagLib::FileRef
. Il faut ensuite la lier directement avec un fichier audio.
#include <tagli/tag.h>
#include <taglib/audioproperties.h>
myTaggger = new TagLib::FileRef(filename);//filename est un char* contenant l'adresse du fichier
TagLib::String artist = myTaggger->tag()->artist ();
Comme vous le voyez, depuis l’objet FileRef, on appelle tag(). Pour ensuite appeler la fonction de la donnée désirée. Ici le nom de l’interprète de la chanson. Pour plus d’information voir
).
Le format de chaîne de caractères renvoyé par TagLib est un format “à leur sauce” (TagLib::String) pour la conversion vers des formats de chaînes plus courrant voir FAQ.
Écrire des tags
L’écriture de tag avec TagLib est l’exacte réciproque de la lecture. En effet, la bibliothèque fournit des fonctions prennant en paramètre une chaîne de caractères.
#include <taglib/tag.h>
#include <taglib/audioproperties.h>
myTaggger = new TagLib::FileRef("chemin_du_mp3.mp3");
myTaggger->tag()->setTitle(TagLib::String("9ème Symphonie"),TagLib::String::UTF8);
myTaggger->save();
Il y a principalement 3 étapes :
- créer une instance de TagLib::FileRef liée à un fichier.
- Modifier les tags souhaités.
- Sauvegarder les changements
Accès aux propriétés audio
Certaines informations comme le “bitrate” et la durée du fichier son ne sont pas contenu dans des tags. Il caractérise plus le flux audio que la chanson. Les auteurs de TagLib appellent ce genre de données des propriétés audio. Un petit exemple pour récupérer le bitrate.
#include <taglib/tag.h>
#include <taglib/audioproperties.h>
myTaggger = new TagLib::FileRef("chemin_du_mp3.mp3");
myTaggger->audioProperties()->bitrate();
Il est également possible de récuperer la longueur en milliseconde par l’appel à “audioProperties()->length()”
Conclusion
Ce tutorial vous a montré comment utiliser la bibliothèque
. Ce tutorial ne couvre bien sûr pas toutes les fonctionnées que peut fournir cette bibliothèque. En ce qui conserne les exemples de ce tutorial, c’est à vous de créer l’architecture de votre application et d’intégrer les exemples au bon endroit.(renseignez vous sur le design pattern : adapter)
Personnellement, je l’utilise pour lire et modifier les tags de tous les formats excepté les mp3 car je trouve id3lib plus complète pour le mp3.