{"id":13,"date":"2008-07-01T13:40:07","date_gmt":"2008-07-01T13:40:07","guid":{"rendered":"http:\/\/liberty.fdn.fr\/?p=13"},"modified":"2025-08-17T20:13:48","modified_gmt":"2025-08-17T20:13:48","slug":"utiliser-taglib-dans-vos-applications","status":"publish","type":"post","link":"http:\/\/renaudguezennec.eu\/index.php\/2008\/07\/01\/utiliser-taglib-dans-vos-applications\/","title":{"rendered":"Utiliser TagLib dans vos applications"},"content":{"rendered":"<div id=\"moz-reader-content\">\n<div id=\"readability-page-1\" class=\"page\">\n<div class=\"abstract\">\n<h2>Introduction<\/h2>\n<p><a href=\"http:\/\/TagLib.sourceforge.net\/\">TagLib<\/a> est une biblioth\u00e8que open-source \u00e9crite en C++ qui permet la lecture, l&#8217;\u00e9criture et la manipulation de Tags (\u00e9tiquettes) de fichiers sons (Mp3, FLAC, MPC, Speex, WavPack and TrueAudio).<br \/>\nCe tutorial doit vous donner les bases pour utiliser TagLib dans vos applications.<\/p>\n<\/div>\n<div class=\"article\" lang=\"fr\">\n<p><a name=\"install\"><\/a><\/p>\n<h2>Installer TagLib<\/h2>\n<p class=\"readability-styled\">La premi\u00e8re \u00e9tape pour utiliser TagLib est bien s\u00fbr de l&#8217;installer sur son syst\u00eame. Pour de nombreuses distributions GNU\/Linux, TagLib existe dans le gestionnaire de paquets. Il est tr\u00e8s important d&#8217;installer la biblioth\u00e8que ainsi que ses en-t\u00eates (souvent un paquet avec un suffixe -dev ou -devel).<\/p>\n<p>Sous Ubuntu 8.04:<\/p>\n<pre class=\"code\"><code>sudo apt-get install libtag1c2a libtag1-dev<\/code><\/pre>\n<p class=\"readability-styled\">Bien s\u00fbr, vous pouvez compiler vous-m\u00eame la biblioth\u00e8que. En t\u00e9l\u00e9chargeant le code source sur le site:<\/p>\n<p><a href=\"http:\/\/developer.kde.org\/%7Ewheeler\/files\/src\/taglib-1.5.tar.gz\">TagLib 1.5<\/a>Pour les utilisateurs de Windows, il existe deux possibilit\u00e9s:<\/p>\n<p class=\"readability-styled\">T\u00e9l\u00e9charger et compiler les sources<\/p>\n<p><a href=\"http:\/\/sourceforge.net\/project\/showfiles.php?group_id=979\">ici<\/a><\/p>\n<p class=\"readability-styled\">Une version binaire de la biblioth\u00e8que est disponible<\/p>\n<p><a href=\"http:\/\/ftp.musicbrainz.org\/pub\/musicbrainz\/users\/luks\/taglib\/\">ici<\/a><\/p>\n<p class=\"readability-styled\">.<\/p>\n<\/div>\n<div class=\"article\" lang=\"fr\">\n<p><a name=\"Compile\"><\/a><\/p>\n<h2>Compiler avec TagLib<\/h2>\n<p class=\"readability-styled\">Pour des environnements linux, il suffit d&#8217;installer la biblioth\u00e8que et \u00e0 l&#8217;\u00e9dition des liens, ajouter<\/p>\n<p><code class=\"filename\">-ltag<\/code><\/p>\n<p class=\"readability-styled\">\u00e0 la ligne de compilation. Attention: il est obligatoire d&#8217;ajouter le chemin des includes dans le includepath.<\/p>\n<p><code class=\"filename\">#include &lt;taglib\/tag.h&gt;<\/code><\/p>\n<p class=\"readability-styled\">seul ne marchera pas.<\/p>\n<p class=\"readability-styled\">Exemple d&#8217;un petit makefile:<\/p>\n<pre class=\"code\"><code>\r\nall:main\r\n\r\nmain: main.o MP3_File.o\r\n        g++ -Wall -g -o main main.o MP3_File.o -ltag\r\n\r\nmain.o: main.cpp\r\n        g++ -Wall -g -c main.cpp\r\n\r\nMP3_File.o:MP3_File.cpp MP3_File.h\r\n        g++ -Wall -g -c MP3_File.cpp\r\n<\/code><\/pre>\n<\/div>\n<div class=\"article\" lang=\"fr\">\n<p><a name=\"Lire\"><\/a><\/p>\n<h2>Lire des tags<\/h2>\n<p class=\"readability-styled\">Dans ce chapitre, nous allons voir comment TagLib doit \u00eatre utilis\u00e9 pour lire des tags. La biblioth\u00e8que est enti\u00e8rement contr\u00f4l\u00e9e par la classe<\/p>\n<p><code class=\"filename\">TagLib::FileRef<\/code><\/p>\n<p class=\"readability-styled\">(Design pattern: Fa\u00e7ade). L&#8217;initialisation commence par la cr\u00e9ation d&#8217;une instance<\/p>\n<p><code class=\"filename\">TagLib::FileRef<\/code><\/p>\n<p class=\"readability-styled\">. Il faut ensuite la lier directement avec un fichier audio.<\/p>\n<pre class=\"code\"><code>\r\n#include &lt;tagli\/tag.h&gt;\r\n#include &lt;taglib\/audioproperties.h&gt;\r\n\r\n\r\n myTaggger = new TagLib::FileRef(filename);\/\/filename est un char* contenant l'adresse du fichier\r\nTagLib::String artist = myTaggger-&gt;tag()-&gt;artist ();\r\n\r\n<\/code><\/pre>\n<p class=\"readability-styled\">Comme vous le voyez, depuis l&#8217;objet FileRef, on appelle tag(). Pour ensuite appeler la fonction de la donn\u00e9e d\u00e9sir\u00e9e. Ici le nom de l&#8217;interpr\u00e8te de la chanson. Pour plus d&#8217;information voir<\/p>\n<p><a href=\"http:\/\/developer.kde.org\/%7Ewheeler\/taglib\/api\/\">TagLib API documentation<\/a><\/p>\n<p class=\"readability-styled\">).<\/p>\n<p class=\"readability-styled\">Le format de cha\u00eene de caract\u00e8res renvoy\u00e9 par TagLib est un format &#8220;\u00e0 leur sauce&#8221; (TagLib::String) pour la conversion vers des formats de cha\u00eenes plus courrant voir FAQ.<\/p>\n<\/div>\n<div class=\"article\" lang=\"fr\">\n<p><a name=\"ecrire\"><\/a><\/p>\n<h2>\u00c9crire des tags<\/h2>\n<p class=\"readability-styled\">L&#8217;\u00e9criture de tag avec TagLib est l&#8217;exacte r\u00e9ciproque de la lecture. En effet, la biblioth\u00e8que fournit des fonctions prennant en param\u00e8tre une cha\u00eene de caract\u00e8res.<\/p>\n<pre class=\"code\"><code>\r\n#include &lt;taglib\/tag.h&gt;\r\n#include &lt;taglib\/audioproperties.h&gt;\r\n\r\n\r\nmyTaggger = new TagLib::FileRef(\"chemin_du_mp3.mp3\");\r\n\r\nmyTaggger-&gt;tag()-&gt;setTitle(TagLib::String(\"9\u00e8me Symphonie\"),TagLib::String::UTF8);\r\n\r\nmyTaggger-&gt;save();\r\n<\/code><\/pre>\n<p class=\"readability-styled\">Il y a principalement 3 \u00e9tapes :<\/p>\n<ul>\n<li>cr\u00e9er une instance de TagLib::FileRef li\u00e9e \u00e0 un fichier.<\/li>\n<li>Modifier les tags souhait\u00e9s.<\/li>\n<li>Sauvegarder les changements<\/li>\n<\/ul>\n<div>\n<div class=\"article\" lang=\"fr\">\n<p><a name=\"headers\"><\/a><\/p>\n<h2>Acc\u00e8s aux propri\u00e9t\u00e9s audio<\/h2>\n<p class=\"readability-styled\">Certaines informations comme le &#8220;bitrate&#8221; et la dur\u00e9e du fichier son ne sont pas contenu dans des tags. Il caract\u00e9rise plus le flux audio que la chanson. Les auteurs de TagLib appellent ce genre de donn\u00e9es des propri\u00e9t\u00e9s audio. Un petit exemple pour r\u00e9cup\u00e9rer le bitrate.<\/p>\n<pre class=\"code\"><code>\r\n#include &lt;taglib\/tag.h&gt;\r\n#include &lt;taglib\/audioproperties.h&gt;\r\n\r\n\r\nmyTaggger = new TagLib::FileRef(\"chemin_du_mp3.mp3\");\r\nmyTaggger-&gt;audioProperties()-&gt;bitrate();\r\n\r\n<\/code><\/pre>\n<p class=\"readability-styled\">Il est \u00e9galement possible de r\u00e9cuperer la longueur en milliseconde par l&#8217;appel \u00e0 &#8220;audioProperties()-&gt;length()&#8221;<\/p>\n<\/div>\n<div>\n<h2><a name=\"conclusion\"><\/a>Conclusion<\/h2>\n<p class=\"readability-styled\">Ce tutorial vous a montr\u00e9 comment utiliser la biblioth\u00e8que<\/p>\n<p><a href=\"http:\/\/TagLib.sourceforge.net\/\">TagLib<\/a><\/p>\n<p class=\"readability-styled\">. Ce tutorial ne couvre bien s\u00fbr pas toutes les fonctionn\u00e9es que peut fournir cette biblioth\u00e8que. En ce qui conserne les exemples de ce tutorial, c&#8217;est \u00e0 vous de cr\u00e9er l&#8217;architecture de votre application et d&#8217;int\u00e9grer les exemples au bon endroit.(renseignez vous sur le design pattern : adapter)<\/p>\n<p class=\"readability-styled\">Personnellement, je l&#8217;utilise pour lire et modifier les tags de tous les formats except\u00e9 les mp3 car je trouve id3lib plus compl\u00e8te pour le mp3.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Introduction TagLib est une biblioth\u00e8que open-source \u00e9crite en C++ qui permet la lecture, l&#8217;\u00e9criture et la manipulation de Tags (\u00e9tiquettes) 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\u00e8re \u00e9tape pour utiliser TagLib est bien s\u00fbr de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[80,23],"tags":[],"class_list":["post-13","post","type-post","status-publish","format-standard","hentry","category-fr","category-tutorial"],"_links":{"self":[{"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/posts\/13","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/comments?post=13"}],"version-history":[{"count":2,"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/posts\/13\/revisions"}],"predecessor-version":[{"id":5082,"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/posts\/13\/revisions\/5082"}],"wp:attachment":[{"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/media?parent=13"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/categories?post=13"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/tags?post=13"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}