#1 Le 27/08/2013, à 00:14
- jeanbaptistedelon
Double serveur mpd sur raspberry pi avec raspibian
Bonsoir,
Je suis actuellement en train de développer une interface web pour contrôler le MPD sur mon raspberry pi. Tout marche comme je veux : j'ai utilisé une classe toute faite : mpd class (mpd-class-php-1.2). Mon but est de faire une sorte de sampler : celui-ci est presque atteint, puisque j'arrive à obtenir une liste de musique sur ma page.
Lorsque je clique sur une chanson : la musique en cours de lecture se coupe, et la musique souhaitée se lance. (Un bouton stop permet d'arrêter la musique.)
Je souhaiterais une petite subtilité : lorsque je clique sur une musique : la musique en cours de lecture ne se coupe pas et la musique souhaitée se lance en fondu.
Je sais que c'est possible avec le HTML ; mais cela n'a rien à voir dans mon cas.
Avec mpd, j'ai essayer en créant une nouvelle connexion et en ouvrant deux connexions simultanément :
$myMpd = new mpd('localhost',6600);
$myMpd2 = new mpd('localhost',6600);
/*
Le Code [...]
*/
$myMpd->Disconnect();
$myMpd2->Disconnect();
ça ne marche pas : ce qui ne m'étonne pas vraiment
Comment dois-je faire ? Installer deux serveurs mpd sur mon raspberry pi ?
Merci d'avance pour vos réponses
Dernière modification par jeanbaptistedelon (Le 27/08/2013, à 00:15)
Hors ligne
#2 Le 27/08/2013, à 11:23
- Epehj
Re : Double serveur mpd sur raspberry pi avec raspibian
Salut,
Je ne pense pas que tu ai besoin de deux serveurs.
Par contre il faut bien lancer MPD avec le crossfade activé.
mpd crossfade x
avec x le nombre de seconde de fondu
http://mpd.wikia.com/wiki/Music_Player_ … leshooting
http://www.musicpd.org/doc/protocol/ch03s02.html
Je sais pas si ça fonctionne mais c'est ce que j'ai trouvé dans la doc'
Linux user #447629 - Ubuntu user # 21770
C'est en sciant que Léonard devint scie
Hors ligne
#3 Le 27/08/2013, à 19:20
- jeanbaptistedelon
Re : Double serveur mpd sur raspberry pi avec raspibian
Merci j'ai essayé !
...
Mais ça ne marche pas...:P
Je me permets de vous donner mon code ce sera bien plus simple :
<?php
echo '<a href="'.$_SERVER[PHP_SELF].'"">Rafraichir</a><br /><br />';
require('playlist.php');
//Fichier contenant la playlist sous forme de tableau ($songArray1())
//La playlist a été chargée dans une page précédente
require('mpd.class.php');
//http://mpd.24oz.com/ pour télécharger
$myMpd = new mpd('localhost',6600);
//Ouverture connexion
$myMpd->crossfade = 15;
// ???
$next_song = $_GET['next_song'];
if (isset($next_song)) {
if ($next_song != ""){
if (is_numeric($next_song)){
if (isset($songArray1[$next_song])) {
if ($songArray1[$next_song] != "") {
$myMpd->SkipTo($next_song);
}
}
}
}
}
//permet de skipper via méthode $_GET[]
$stat = $_GET['stat'];
if (isset($stat)) {
if ($stat != ""){
if ($stat == "stop1"){
$myMpd->Stop();
}
}
}
//permet de stopper via méthode $_GET[]
$p = 0;
while ($songArray1[$p] != "" Or isset($songArray1[$p])) {
echo '<a href="'.$_SERVER[PHP_SELF].'?next_song='.$p.'">'.substr($songArray1[$p], 0, strlen($songArray1[$p]) - 4).'</a><br />';
$p++;
}
// On affiche les chansons avec possibilité de cliquer dessus pour skipper dessus
echo '<br /><br /><a href="'.$_SERVER[PHP_SELF].'?stat=stop1">Annuler</a><br />';
// Lien pour stopper
$myMpd->Disconnect();
//Déconnexion
?>
Bien cordialement,
Dernière modification par jeanbaptistedelon (Le 27/08/2013, à 19:21)
Hors ligne
#4 Le 15/04/2014, à 11:36
- jeanbaptistedelon
Re : Double serveur mpd sur raspberry pi avec raspibian
Finalement, j'ai enlevé cette classe car elle n'est pas top
puisque certaines fonctionnalités ne sont pas prises en compte comme le cross fade par exemple.
Je suis donc avec des exec en php, et je m'en sors mieux. Cependant le cross fade permet de lire des musiques avec des fondus enchaînés de x secondes entre, mais pas de lire dans une nouvelle instance plusieurs sons qui sont mélangés ensembles.
Avez-vous d'autres idées, suggestions à me proposer ?
Hors ligne
#5 Le 24/10/2015, à 20:56
- jeanbaptistedelon
Re : Double serveur mpd sur raspberry pi avec raspibian
Bonjour,
je me permets de revenir sur ce forum un an et demi après car j'ai trouvé la réponse ! (mieux vaut tard que jamais).
Il faut revenir à la base du problème : la librairie mpd et non pas la classe PHP dans mon exemple.
Oublions l'histoire de la classe PHP et revenons au moment où l'on vient juste d'installer mpd et de le configurer...
Voici ce qu'il faut faire au minimum :
Editer le fichier /etc/mpd.conf :
Configurer le périphérique de sortie comme périphérique logiciel et non matériel
Pour cela commenter les lignes suivantes
audio_output {
type "alsa"
name "My ALSA Device"
# device "hw:0,0" # optional
# format "44100:16:2" # optional
mixer_device "default" # optional
mixer_control "PCM" # optional
# mixer_index "0" # optional
}
Puis changer le mixeur :
mixer_type "software"
Si besoin dé commenter la ligne de configuration du port réseau.
Copier le fichier de configuration /etc/mpd.conf dans un nouveau que l'on va nommer différement pour la deuxième instance
sudo cp -a /etc/mpd.conf /etc/mpd2.conf
Editer le fichier etc/mpd2.conf :
Changer le port :
port "6601"
Et remplacer mpd par mpd2 dans les chemins des variables de configurations suivantes : playlist_directory, db_file, log_file, pid_file, state_file.
Lancer la deuxième instance simplement !
mpd /etc/mpd2.conf
Si des erreurs se présentent, copier les répertoires manquants de mpd vers mpd2.
Source : https://crudelis.fr/site/sblog/2012/02/ … es-de-mpd/
Dernière modification par jeanbaptistedelon (Le 24/10/2015, à 21:02)
Hors ligne