{"id":218,"date":"2021-12-28T16:41:57","date_gmt":"2021-12-28T14:41:57","guid":{"rendered":"https:\/\/tartine.linkpc.net\/?p=218"},"modified":"2021-12-28T16:41:57","modified_gmt":"2021-12-28T14:41:57","slug":"raspberry-pi-radio-partie-4-ajouter-une-source","status":"publish","type":"post","link":"https:\/\/blog.nibelheim.fr\/?p=218","title":{"rendered":"Raspberry Pi Radio partie 4 : ajouter une source"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Cet article est la suite de <a href=\"https:\/\/tartine.linkpc.net\/?p=214\">celui-ci<\/a>!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pr\u00e9requis<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Au moins avoir suivi les parties 1 et 2 de cette s\u00e9rie de tutos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Objectif<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L\u00e0, on rentre dans le dur des sp\u00e9cificit\u00e9s de Raspbian et je suis fier (m\u00eame si vous vous en foutez) de vous dire que les lignes suivantes sont le fruit de ma propre transpiration! Je suis donc ravi de vous en faire profiter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;ajout d&#8217;une source n&#8217;est pas facile car MPD n&#8217;existe que pour faire tourner <strong>une source \u00e0 la fois<\/strong>, m\u00eame si elle est propag\u00e9e sur plusieurs sorties simultan\u00e9ment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ce qui veut dire, en toute logique, que pour avoir plusieurs sources simultan\u00e9es, il faut&#8230; Plusieurs MPD. Suivez le guide!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Proc\u00e9dure<\/h2>\n\n\n\n<ol class=\"wp-block-list\"><li><strong>Duplication des fichiers utilis\u00e9s<\/strong><\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Dans un premier temps, nous allons dupliquer l&#8217;ensemble des \u00e9l\u00e9ments de MPD qui nous int\u00e9ressent vers une instance que nous appellerons MPD2 :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo cp -a \/etc\/mpd.conf \/etc\/mpd2.conf\nsudo cp -a \/var\/lib\/mpd \/var\/lib\/mpd2\nsudo cp -a \/run\/mpd \/run\/mpd2\nsudo cp -a \/usr\/bin\/mpd \/usr\/bin\/mpd2\nsudo cp -a \/etc\/init.d\/mpd \/etc\/init.d\/mpd2\nsudo cp -a \/lib\/systemd\/system\/mpd.service \/lib\/systemd\/system\/mpd2.service\nsudo cp -a \/etc\/default\/mpd \/etc\/default\/mpd2\nsudo cp -a \/var\/log\/mpd \/var\/log\/mpd2<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2. <strong>Mise \u00e0 jour de \/etc\/init.d\/mpd2<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo nano\/etc\/init.d\/mpd2<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ce fichier permet de lancer notre seconde instance de mpd au d\u00e9marrage. Afin que cela fonctionne, il va falloir alt\u00e9rer les lignes suivantes :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Provides: <span class=\"has-inline-color has-vivid-red-color\">mpd2<\/span>\n...\nNAME=<span class=\"has-inline-color has-vivid-red-color\">mpd2<\/span>\nDESC=\"Music Player Daemon <span class=\"has-inline-color has-vivid-red-color\">#2<\/span>\"\nDAEMON=\/usr\/bin\/<span class=\"has-inline-color has-vivid-red-color\">mpd2<\/span>\nMPDCONF=\/etc\/<span class=\"has-inline-color has-vivid-red-color\">mpd2<\/span>.conf\n...\nif dpkg-statoverride --list --quiet \/run\/<span class=\"has-inline-color has-vivid-red-color\">mpd2 <\/span>&gt; \/dev\/null; then\n...\ndpkg-statoverride --force --quiet --update --add $( dpkg-statoverride --list --quiet \/run\/<span class=\"has-inline-color has-vivid-red-color\">mpd2 <\/span>) 2&gt; \/dev\/null<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sauvegardez et quittez.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3. <strong>Mise \u00e0 jour de \/lib\/systemd\/system\/mpd2.service<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo nano \/lib\/systemd\/system\/mpd2.service <\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La suite consiste \u00e0 mettre \u00e0 jour le fichier de service de notre nouvelle instance. Alt\u00e9rez donc les lignes suivantes :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">EnvironmentFile=\/etc\/default\/<span class=\"has-inline-color has-vivid-red-color\">mpd2<\/span><br>ExecStart=\/usr\/bin\/mpd2 --no-daemon <span class=\"has-inline-color has-vivid-red-color\">\/etc\/mpd2.conf<\/span><br>...<br>Also=mpd<span class=\"has-inline-color has-vivid-red-color\">2<\/span>.socket<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sauvegardez et quittez.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4. <strong>Mise \u00e0 jour de mpd2.conf<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le coeur du probl\u00e8me! Maintenant que les fichiers p\u00e9riph\u00e9riques sont mis \u00e0 jour, il est temps de s&#8217;attaquer \u00e0 notre seconde source.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo nano \/etc\/mpd2.conf<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Deux mani\u00e8res de faire : soit vous s\u00e9parez tout le monde (chaque source a sa librairie), soit les deux sources ont la m\u00eame librairie. Personnellement (faites votre choix), j&#8217;ai opt\u00e9 pour s\u00e9parer tout le monde, MAIS le lien symbolique dans <strong>music_directory <\/strong>pointe sur la m\u00eame librairie que ma source principale.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">music_directory \"\/var\/lib\/mpd<span class=\"has-inline-color has-vivid-red-color\">2<\/span>\/music\"\n...\nplaylist_directory \"\/var\/lib\/mpd<span class=\"has-inline-color has-vivid-red-color\">2<\/span>\/playlists\"\n...\ndb_file \"\/var\/lib\/mpd<span class=\"has-inline-color has-vivid-red-color\">2<\/span>\/tag_cache\"\n...\nlog_file \"\/var\/log\/mpd<span class=\"has-inline-color has-vivid-red-color\">2<\/span>\/mpd.log\"\n...\nsticker_file \"\/var\/lib\/mpd<span class=\"has-inline-color has-vivid-red-color\">2<\/span>\/sticker.sql\"<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Maintenant, pour les lignes suivantes, c&#8217;est de l&#8217;obligatoire :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pid_file \"\/run\/mpd<span class=\"has-inline-color has-vivid-red-color\">2<\/span>\/pid\"\n...\nstate_file \"\/var\/lib\/mpd<span class=\"has-inline-color has-vivid-red-color\">2<\/span>\/state\"\n...\nport \"6601\" #Sinon MPD2 sera sur le m\u00eame port que MPD, donc niet!<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Pour ce qui est du bloc audio_output{} :<\/strong><br>&#8211; Changez imp\u00e9rativement <strong>mount<\/strong> <em>(pour la suite, j&#8217;utiliserai <strong><span class=\"has-inline-color has-vivid-red-color\">\/radio2.ogg<\/span><\/strong>)<\/em><br>&#8211; Gardez imp\u00e9rativement le <strong>port 8000<\/strong> <em>(qui ne change jamais pour Icecast!)<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ceci fait, sauvegardez et fermez.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">5. <strong>Mise \u00e0 jour de \/etc\/icecast2\/icecast.xml<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo nano  \/etc\/icecast2\/icecast.xml <\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ici, nous allons simplement rajouter la fallback mount entre les deux que nous avons renseign\u00e9es lors de la partie 2 de ce guide :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;mount&gt;\n    &lt;mount-name&gt;\/radio2.ogg&lt;\/mount-name&gt;\n    &lt;fallback-mount&gt;\/silence.mp3&lt;\/fallback-mount&gt;\n    &lt;fallback-override&gt;1&lt;\/fallback-override&gt;\n&lt;\/mount&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Enregistrez et fermez.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> 6. <strong>Lancez!<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Attention, astuce ici : il faut avant chaque lancement de MPD2 faire une copie du fichier PID de mpd. Je n&#8217;ai pas trouv\u00e9 comment faire \u00e7a autrement \ud83d\ude41<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo cp -a \/run\/mpd \/run\/mpd2\nsudo systemctl start mpd2<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Suivi de, si tout va bien :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo systemctl status mpd2<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si vous n&#8217;avez aucune erreur et Active (running), alors vous avez gagn\u00e9!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configurer la playlist pour votre seconde source<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Attention! Lors de l&#8217;\u00e9criture de cet article, <strong>ympd <\/strong>qui est le l&#8217;\u00e9diteur web ne fonctionne pas pour la seconde instance de mpd, malgr\u00e9 le <strong>-p 6601 <\/strong>sp\u00e9cifi\u00e9 pour le lancement <em>(je m&#8217;y prends comme un pied probablement)<\/em>.<br>Du coup, seul ncmpc fonctionne pour l&#8217;\u00e9dition de playlist!<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo ncmpc -p 6601<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Conqueluzion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nous avons une seconde source qui tourne. A noter que si la stabilit\u00e9 de Icecast+une seule source est bonne m\u00eame avec Jeedom et WordPress \u00e0 c\u00f4t\u00e9, j&#8217;ai des r\u00e9serves sur Icecast+2 sources dans les m\u00eames circonstances, en tout cas sur mon Raspberry Pi 3.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/tartine.linkpc.net\/?p=221\" data-type=\"URL\" data-id=\"https:\/\/tartine.linkpc.net\/?p=221\">Dans le prochain chapitre, nous allons nous d\u00e9barrasser d&#8217;Icecast!<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cet article est la suite de celui-ci! Pr\u00e9requis Au moins avoir suivi les parties 1 et 2 de cette s\u00e9rie de tutos. Objectif L\u00e0, on rentre dans le dur des sp\u00e9cificit\u00e9s de Raspbian et je suis fier (m\u00eame si vous vous en foutez) de vous dire que les lignes suivantes [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[16,20,24,25],"class_list":["post-218","post","type-post","status-publish","format-standard","hentry","category-raspberry-pi","tag-icecast","tag-mpd","tag-radio","tag-raspberry"],"_links":{"self":[{"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/posts\/218","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=218"}],"version-history":[{"count":0,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/posts\/218\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}