Magazine Tecnologia

MPD (Music Player Daemon) è un player audio con struttura client-server, seconda parte.

Creato il 30 luglio 2012 da Linuxlandia
mpd_jinzora2Metodo 2.

Un metodo più semplice consiste nell'aggiungere mpd all'array DAEMONS di rc.conf e aggiungere mpc stop oppure mpc pause a /etc/rc.local.shutdown e a /etc/rc.local. (Ricordarsi che è necessario avere mpc installato per sfruttare questo metodo).

Aggiungere il comando al solo /etc/rc.local non assicura che mpd non riproduca assolutamente nulla, in quanto potrebbe esserci un ritardo prima che il comando di stop sia eseguito. D'altro canto, se si aggiunge il comando unicamente a /etc/rc.local.shutdown, ci si assicura che mpd non riproduca nulla, fintantoché si spenga il sistema in modo corretto. Anche se sono ridondanti, aggiungerli a /etc/rc.local potrebbe servire per quelle, presumibilmente, rare occasioni in cui il sistema non si spenga in modo appropriato.

Metodo 3.

L'idea di base di questo metodo è chiedere ad mpd di mettere in pausa la musica quando l'utente esegue il logout, così al prossimo avvio mpd si bloccherà nello stato di pausa. È possibile inviare questo comando usando mpc, l'interfaccia a linea di comando di mpd:

pacman -S mpc

Gli utenti di GDM possono aggiungere la riga seguente a /etc/gdm/PostSession/Default (assicurarsi di aggiungerla prima di "exit 0"):


/usr/bin/mpc pause

Gli altri utenti possono similmente utilizzare il loro login manager per lanciare il comando al logout.


mpd2


MPD & ALSA.

A volte, quando si usano altri output audio, ad esempio alcune pagine web contenenti applet Flash, MPD non può riprodurre nulla fino al riavvio. L'errore, se si guarda /var/log/mpd/mpd.error, assomiglierà a:


Error opening alsa device "hw:0,0": Device or resource busy

E qui c'è la soluzione (dmix salva nuovamente la vita). Applicare le righe seguenti al proprio /etc/mpd.conf:


audio_output {
type "alsa"
name "Sound Card"
options "dev=dmixer"
device "plug:dmix"
}

E riavviare con /etc/rc.d/mpd restart.


Nel wiki di Gentoo si trovano alcune spiegazioni di tale inconveniente:



  • La scheda audio non supporta il mixing hardware (utilizza il plugin dmix)

  • Un'applicazione non è compatibile con ALSA nelle sue configurazioni di default


Per una descrizione dettagliata, si raccomanda di dare un'occhiata a questo link. Qui è possibile trovare un esempio di asound.conf su cui basarsi per una corretta configurazione di ALSA.


Elevato utilizzo della CPU con ALSA.

Quando si utilizza MPD con ALSA, è possibile che MPD impieghi molta CPU (circa il 20-30%). Questo è causato dal fatto che molte schede audio supportano i 48kHz mentre la maggior parte della musica è a 44kHz, costringendo quindi MPD a ricodificare la traccia. Questa operazione impiega molti cicli di CPU e un elevato utilizzo della stessa.


Per molti utenti il problema dovrebbe risolversi istruendo MPD a non ricodificare, aggiungendo auto_resample "no" alla sezione audio_output di /etc/mpd.conf. Tuttavia, ciò peggiorerà leggermente la qualità di alcune tracce.


Esempio da mpd.conf:


audio_output {
type "alsa"
name "My ALSA Device"
auto_resample "no"
}

Anche se non in modo drastico, abilitare mmap può accelerare le cose:


audio_output {
type "alsa"
name "My ALSA Device"
use_mmap "yes"
}

Alcuni utenti potrebbero anche voler comunicare a dmix di utilizzare i 44kHz. Maggiori informazioni su come migliorare le performance di MPD si possono trovare nel wiki di MPD.


default-nowplaying


Controllare MPD con lirc.

Esistono già alcuni client realizzati per interfacciare lircd e MPD, tuttavia, all'utilizzo pratico non sono molto utili in quanto le loro funzionalità sono estremamente limitate.


Si raccomanda di usare mpc con irexec. mpc è un player da linea di comando che invia un'istruzione a MPD ed esce immediatamente, il che è perfetto per irexec, il parser di comandi incluso in lirc. Ciò che irexec fa è lanciare uno specifico comando una volta ricevuto un controllo dal telecomando.


Prima di tutto, configurare il telecomando come indicato nell'articolo Lirc.


Modificare il file di configurazione di lirc, usualmente situato in ~/.lircrc, seguendo questa struttura base:


begin
prog = irexec
button = <button_name>
config = <command_to_run>
repeat = <0 or 1>
end

Un utile esempio:


## irexec
begin
prog = irexec
button = play_pause
config = mpc toggle
repeat = 0
end
begin
prog = irexec
button = stop
config = mpc stop
repeat = 0
end
begin
prog = irexec
button = previous
config = mpc prev
repeat = 0
end
begin
prog = irexec
button = next
config = mpc next
repeat = 0
end
begin
prog = irexec
button = volup
config = mpc volume +2
repeat = 1
end
begin
prog = irexec
button = voldown
config = mpc volume -2
repeat = 1
end
begin
prog = irexec
button = pbc
config = mpc random
repeat = 0
end
begin
prog = irexec
button = pdvd
config = mpc update
repeat = 0
end
begin
prog = irexec
button = right
config = mpc seek +00:00:05
repeat = 0
end
begin
prog = irexec
button = left
config = mpc seek -00:00:05
repeat = 0
end
begin
prog = irexec
button = up
config = mpc seek +1%
repeat = 0
end
begin
prog = irexec
button = down
config = mpc seek -1%
repeat = 0
end

mpc dispone di molte altre funzioni. man mpc per maggiori informazioni.


white-browse


Controllare MPD tramite cellulare bluetooth.

È anche possibile controllare MPD (fino ad un certo punto) utilizzando un cellulare con bluetooth. È necessario eseguire le seguenti operazioni:



  • installare remuco -- un controller wireless per molti media player Linux (aur)

  • trasferire il client remuco (file jar/jad) da /usr/share/remuco/client/ al proprio telefono e installarlo

  • avviare remuco-mpd (come utente)

  • avviare remuco sul proprio cellulare, definire una nuova connessione bluetooth per remuco (connettere il cellulare se non è stato fatto prima) ed esplorare le sue capacità


Maggiori informazioni su remuco inclusa la risoluzione dei problemi si trovano nella sua homepage


MPD & PulseAudio.

Modificare /etc/mpd.conf, e decommentare la sezione audio_output per la tipologia "pulse". Il server e le relative righe dovrebbero essere commentate a meno che non si sappia quello che si sta facendo.


Successivamente, aggiungere l'utente mpd (e il proprio se non è già stato fatto) ai gruppi pulse richiesti. Il gruppo pulse-access dovrebbe essere sufficiente, ma se si desidera aggiungere anche pulse-rt. Il gruppo "pulse" non sembra essere necessario.


# gpasswd -a mpd pulse-access
# gpasswd -a mpd pulse-rt

Infine, potrebbe essere necessario copiare ~/.pulse-cookie dalla propria directory di lavoro di pulse alla propria directory di mpd. È probabile che sia /var/lib/mpd se si è seguita la prima parte di questo wiki. Questo probabilmente consentirà solo all'utente attuale di ascoltare MPD su pulse. Si dovrebbe considerare di lanciare pulse per tutti gli utenti se ciò non dovesse rivelarsi sufficiente.


mpd3


Risoluzione dei problemi.


Autorilevamento fallito.

All'avvio, MPD cerca di rilevare il sistema e di configurare l'outout e il volume in accordo. Anche se nella maggior parte dei casi questo avviene senza problemi, in alcuni sistemi non succede. Potrebbe aiutare comunicare ad MPD cosa utilizzare come output e come mixer. Se è stato copiato /etc/mpd.conf da /etc/mpd.conf.example come precedentemente menzionato, basta semplicemente decommentare


per output su ALSA:


audio_output {
type "alsa"
name "My ALSA Device"
device "hw:0,0" # optional
format "44100:16:2" # optional
}

per mixer alsa:


mixer_type			"alsa"
mixer_device "default"
mixer_control "PCM"

Nota: in caso di problemi di permessi utilizzando ESD con MPD, lanciare questo come root:


# chsh -s /bin/true mpd

 

Permessi di esecuzione.

Attenzione: Questa azione non è sicura e potrebbe non essere necessaria.


MPD ha bisogno dei permessi di esecuzione su TUTTE le directory della collezione musicale (ad esempio se essa si trova al di fuori della home di mpd /var/lib/mpd). Di default useradd imposta i permessi della home come 1700 drwx------. Potrebbe quindi esserci necessità di cambiare i permessi di /home/user. Ad esempio, se la collezione si trova in /home/user/music:


# chmod a+x /home/$USER
# chmod -R a+X /home/$USER/music


Soluzione alternativa.

Una soluzione alternativa potrebbe essere quella di usare il gruppo dell'utente per condividere alcuni file, tra cui la collezione musicale. Per prima cosa rimuovere tutti i permessi per il gruppo e successivamente aggiungere al gruppo i permessi di lettura ed esecuzione di home e di music:


# chmod -R g-rwx /home/$USER
# chmod g+rx /home/$USER
# chmod -R g+rX /home/$USER/music


Altra soluzione alternativa.

Un'altra alternativa è montare la collezione all'interno di una directory accessibile a MPD. Questo è un rischio per la sicurezza minore di modificare i permessi della home di un utente:


# mkdir /var/lib/mpd/music
# echo "/home/$USER/music /var/lib/mpd/music none bind" >> /etc/fstab
# mount -a
# /etc/rc.d/mpd restart

E questo dovrebbe risolvere il problema. Vedere anche questo thread del forum inglese.


Evitare i timeout

Per sbarazzarsi dei timeout (ad esempio, quando si mette in pausa per lungo tempo) in gpmc e altri client, decommentare ed incrementare l'opzione connection_timeout in mpd.conf.


Impostare le codifiche

Se i file o i titoli sono mostrati con una codifica non corretta, decommentare e modificare le opzioni filesystem_charset e id3v1_encoding.


Nota: Non è possibile impostare la codifica per i tag ID3 v2. Per risolvere questo inconveniente è possibile utilizzare lettori di tag esterni.


Controllare MPD in rete.

Tango-dialog-warning.png


This article or section is out of date.


Reason: please use the first argument of the template to provide a brief explanation. (Discuss)


Tango-dialog-warning.png


Se si desidera controllare MPD tramite un altro computer in rete, l'opzione bind_to_address in mpd.conf dovrà essere impostata all'indirizzo IP desiderato, oppure ad any se l'IP cambia in continuamente. Ricordarsi di aggiungere mpd al file /etc/hosts.allow per permettere l'accesso esterno.


 

Streaming.

Dalla versione 0.15 di MPD è disponibile lo streaming http.


Per attivare questa funzionalità, è necessario aggiungere un nuovo output di tipo httpd in mpd.conf:


audio_output {
type "httpd"
name "What you want"
encoder "lame" # supportati vorbis o lame
port "8000"
bitrate "128"
format "44100:16:2" # impostare a 2 per MONO
}


Riavviare il demone MPD e, da un altro computer, semplicemente caricare lo stream come qualsiasi altro URL:


$ mplayer http://<IP DEL SERVER>:8000


Nota: Bisogna aprire la porta sul router/firewall perché ci si possa connettere allo stream da un altro computer.


Molti lettori, come vlc o xmms2, dovrebbero essere in grado di aprire lo stream da un opzione del menu come "add url...".


Questo è un metodo semplice e pulito per rimpiazzare un setup di icecast con qualcosa di nativamente supportato da MPD.


mpd --create-db si blocca

Questo è un errore comune causato da tag mp3 corrotti. Di seguito un metodo sperimentale per risolvere questo problema. Necessari:



  • kid3

  • easytag


Questo metodo è estremamente tedioso, specialmente con un grande database. Giusto come riferimento, sono necessario 2 ore e mezza per sistemare un database da 16Gb.


mpd4

Easy Tag.

Lo funzione di easytag è individuare l'errore nel tag, ma come MPD si blocca e termina. Il trucco è che easytag indica il file che causa il problema nella barra di stato. Prima di avviare easytag ci si assicuri di avere un terminale a portata di mano per killare easytag in modo da evitare che si blocchi. Una volta pronti, nella vista ad albero selezionare le directory contenenti la libreria. Easytag comincerà a nelle sottodirectory i file mp3. Appena si nota che easytag si ferma, prendere nota del file e killare il processo.


KID3.

Con kid3 spostarsi al file in questione e riscrivere uno dei tag, poi salvare il file. Questo costringe kid3 a riscrivere tutto il tag risolvendo il problema del blocco con MPD e easytag.


Ripetere la procedura fino alla riparazione di tutti i file corrotti.


Cannot connect to mpd: host "localhost" not found: Temporary failure in name resolution

Impossibile connettersi a MPD (con ncmpcpp), se non si è connessi alla rete. La soluzione è disabilitare il modulo IPv6 oppure aggiungere la seguente linea a /etc/hosts:


::1 localhost.localdomain localhost

Port 6600 already in use

MPD ha bisogno di collegarsi alla porta 6600 e non può avviarsi se questa è già in uso. La ragione più comune per questo errore è che l'utente ha già avviato MPD e successivamente ha lanciato mpd --create-db. Il nuovo comportamento di mpd è che l'opzione --create-db tenta anche di avviare il demone; se questo è già stato avviato, l'operazione fallisce. Se questo è il caso, provare:


$ mpd --kill
$ mpd --create-db

Un approccio più brutale:


$ killall mpd
$ mpd --create-db

Nota: Se tipicamente si lancia MPD come root, i comandi precedenti sono da eseguire come root..


Nella versione git di MPD, mpd --create-db è completamente deprecata. Il database verrà creato automagicamente al primo avvio e successivamente si aggiornerà tramite il client (ad esempio mpc update). Inoltre, il supporto a inotify fornisce un aggiornamento completamente automatico quando si aggiunge qualcosa alla propria collezione.


Se la porta 6600 è bloccata per qualche ragione, si può usare il seguente comando per identificare il processo bloccante:


# netstat -tulpan | grep 6600

Questo mostrerà IP:Porta e nome del processo detenente la connessione (servono i privilegi di root per vedere tutti i processi).


Crepitii con alcuni file audio.

Questo è solitamente un problema di velocità di riproduzione e si può risolvere decommentando e modificando la riga audio_output_format in:


/etc/mpd.conf

audio_output_format "44100:16:2"

Solitamente questi sono valori adatti per la maggior parte dei file mp3.


daemon: cannot setgid for user "mpd": Operation not permitted

Questo errore afferma che l'utente che avvia il processo non ha il permesso di diventare l'altro utente (mpd) che la configurazione ha indicato come proprietario del processo.


Per risolvere, semplicemente avviare mpd come root:


su -c "/etc/rc.d/mpd start"

oppure:


sudo /etc/rc.d/mpd start

Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:



MPD (Music Player Daemon) è un player audio con struttura client-server, seconda parte.


Potrebbero interessarti anche :

Ritornare alla prima pagina di Logo Paperblog

Possono interessarti anche questi articoli :