mpd in conflitto con altre applicazioni - prendendo il controllo del polso?


8

Spiegazione semplice

Se mpd è in riproduzione e l'audio tenta di riprodurre un'altra applicazione, x , l'audio di x non verrà emesso.

Se il suono proveniente da un'altra applicazione, x , è in riproduzione e mpd tenta di riprodurre, nessun suono verrà emesso da mpd mentre il suono da x continua a essere riprodotto.

Dettagli

Ho notato per la prima volta questo problema con Flash e questo continua ad essere lo scenario più comune. Ho pubblicato una domanda su questo prima di rendermi conto che non era strettamente correlato a Flash, ma invece ha a che fare con mpd.

La mia più grande frustrazione proviene dal tentativo di far funzionare di nuovo mpd, dato che non riesco a fissare alcun metodo. A volte pulseaudio -ksembra aiutare, altre volte sudo /etc/init.d/mpd restart, altri uccidendo Chromium (a causa di Flash) con SIGTERM. Il più delle volte è una combinazione di quanto sopra.

Penso che questo potrebbe essere perché eseguo mpd come un altro utente e utilizzo pulseaudio. Non viene eseguito come utente root o corrente. Inoltre, mpd è compilato con il supporto degli impulsi.

Ho provato numerose cose, tuttavia onestamente non potevo recitare cosa, come è stato un po 'di tempo da allora. Preferirei non andare in giro senza una direzione, ma sarei davvero felice di risolvere questo problema una volta per tutte.

mpd.conf

Semplificato rimuovendo commenti / righe vuote.

music_directory     "/var/lib/mpd/music"
playlist_directory      "/var/lib/mpd/playlists"
db_file         "/var/lib/mpd/tag_cache"
log_file            "/var/log/mpd/mpd.log"
pid_file            "/var/run/mpd/pid"
state_file          "/var/lib/mpd/state"

user                "mpd"
bind_to_address     "wilson"

input {
        plugin "curl"
}

audio_output {
    type        "pulse"
    name        "My Pulse Output"

}

filesystem_charset      "UTF-8"
id3v1_encoding          "UTF-8"

Domanda

Per mantenere una domanda: qualcuno sa cosa lo sta causando o come risolverlo senza eseguire mpd come utente corrente?


1
Quando si riproduce qualcosa tramite mpd (e il suono da esso funziona) caricare la finestra delle proprietà del suono, premere la scheda Applicazioni e questo ti dirà con certezza se mpd sta usando PA o no.
Oli

L'esecuzione di mpd come utente corrente, secondo le istruzioni di Alibara Iduas, risolve il problema. Sono comunque interessato al perché questo non funzionerà correttamente come l'utente "mpd", comunque.
Jamie Schembri,

Risposte:


5

Ho avuto questo problema quando ho iniziato a usare mpd, ma è stato un po 'di tempo fa, quindi non ricordo esattamente cosa ho fatto per risolverlo!

Hai installato le preferenze PulseAudio? Ho trovato questo suggerimento su un forum: sudo apt-get install paprefs

Quindi apri le prefrenze PulseAudio dal menu: Sistema-> Preferenze-> Preferenze PulseAudio Fai clic sulla scheda Server di rete, quindi seleziona la casella "Abilita accesso alla rete ai dispositivi audio locali" e infine seleziona la casella "Non richiedere autenticazione". Successivamente, riavvia mpd:sudo /etc/init.d/mpd restart

Tuttavia ... mi sono appena reso conto che mpd funziona bene per me e non ho abilitato "l'accesso alla rete ai dispositivi audio locali".

Penso che potresti aver ragione a dover eseguire mpd come utente corrente, che è quello che sto facendo. (Non ho idea del perché questo sia!)

Una semplice guida alla configurazione di mpd da eseguire come utente è disponibile qui: http://gmpc.wikia.com/wiki/MPD_INSTALL_USER_SERVICE_UBUNTU

Per riassumere, dal momento che hai già installato mpd:

1.) Smettila: sudo update-rc.d mpd disable

2.) Copia il tuo mpdconf nella directory home (come .mpdconf) e modifica le seguenti voci in luoghi in cui l'utente può accedere e scrivere:

music_directory
playlist_directory
db_file
log_file
error_file
pid_file
state_file 

La pagina da cui prendo questo suggerisce che sto solo creando una cartella .mpd nella tua home directory per questa roba, salvandola per la tua vera directory musicale.

3.) Commenta la riga utente in .mpdconf: #user "mpd"

4.) Ora puoi eseguire mpd e aggiornare il database.

5.) Per fare in modo che mpd si avvii automaticamente come utente durante l'accesso, vai su Startup Applications e aggiungi una voce per mpd, quindi crea un file di avvio automatico in ~ / .config / autostart /.

[Desktop Entry]
Type=Application
Exec=mpd
Hidden=false
NoDisplay=false
Terminal=false
X-GNOME-Autostart-enabled=true
Name[en_US]=Music Player Daemon
Name=Music Player Daemon
Comment[en_US]=plays the music
Comment=plays the music

Probabilmente ci sono aspetti negativi nell'esecuzione come utente, quindi forse questo non soddisferà le tue esigenze.


Prima di leggere questo, ho eliminato pulseaudio e mpd. Pulseaudio ha funzionato praticamente dopo l'installazione, ma per qualche motivo non sono riuscito a ripristinare l'audio su mpd. Ad ogni modo, ho finito per seguire la guida e ora sto eseguendo mpd come utente corrente e funziona benissimo. Avrei preferito eseguirlo come utente "mpd" e dato che si tratta più di una soluzione alternativa che di una risposta, non lo accetterò come risposta. Sono ancora interessato al motivo per cui mpd non funzionerà come utente "mpd" nel modo in cui mi piacerebbe farlo (forse pulseaudio dovrebbe funzionare sotto root?). Indipendentemente da ciò, spero che tu capisca e tu abbia i miei ringraziamenti!
Jamie Schembri,

1
Nessun problema, contento che almeno funzioni ora. L'unica altra cosa a cui potrei pensare sarebbe accertarmi, quando lo eseguo come utente mpd, che "mpd" sia elencato come membro del gruppo nel gruppo ad accesso ad impulsi (e forse anche ad impulso). Immagino che sarebbe un problema solo se non avessi alcun suono, non questo strano conflitto. Vedi anche le sezioni "MPD & Alsa" e "MPD & PulseAudio" in questa pagina wiki di Archlinux: wiki.archlinux.org/index.php/Music_Player_Daemon
Aibara

Grazie ancora, Aibara. In precedenza avevo assicurato che mpd era nei gruppi corretti per il polso, quindi non era questo il problema in questo caso. Il link che hai pubblicato è molto interessante, in particolare perché descrive il mio esatto problema nella sezione "MPD & Alsa" menzionata! Questo sarebbe adattabile a Pulse?
Jamie Schembri

È strano che lo stesso problema abbia una soluzione facile con Alsa, ma non sono davvero sicuro che la soluzione Alsa possa essere applicata a Pulse - questo è davvero al di là di me. Tutto ciò che ho letto su persone che hanno questo problema con Pulse finisce per eseguire MPD come utente o cambia le preferenze di PulseAudio. Scusate!
Aibara,

Anche questo problema mi ha causato qualche problema, fino a quando non l'ho isolato in MPD. A proposito, la prima soluzione che coinvolge i papref non ha funzionato per me, ma la seconda ha funzionato.
Laurence,

2

Non sono sicuro che si tratti esattamente dello stesso problema, ma con la mia vecchia configurazione mpd predefinita, is mpd stava cercando di avviare il proprio audio a impulsi come un altro utente (l'utente mpd). Ho trovato che l'impostazione della mia uscita ad impulsi in /etc/mpd.conf sull'uso di un socket per la connessione è più semplice per evitare questo tipo di problema.

audio_output {
        type            "pulse"
        name            "My Pulse Output"
        server          "localhost"
}

Quindi potresti voler controllare i papref che accetti connessioni locali


Su Gentoo, devo anche copiare i miei utenti .pulse-cookieper /var/lib/mpdfarlo funzionare, o il pulseaudio non è riuscito failed to connect: Access denied, anche se non sono sicuro che sia il modo giusto.
rebus,

0

Quando eseguito come proprio utente secondo le istruzioni del wiki, mpd non sarà in grado di inviare l'audio al server pulseaudio di un altro utente. Invece di impostare pulseaudio come demone a livello di sistema, una pratica fortemente scoraggiata dall'upstream, puoi invece configurare mpd per usare il modulo tcp di pulseaudio per inviare l'audio a localhost:

Innanzitutto, decommenta il modulo tcp in /etc/pulse/default.pa o $ XDG_CONFIG_HOME / pulse / default.pa (in genere ~ / .config / pulse / default.pa) e imposta 127.0.0.1 come indirizzo IP consentito; la directory home ha la precedenza:

### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
#load-module module-esound-protocol-tcp
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
#load-module module-zeroconf-publish

È possibile aggiungere ulteriori intervalli IP in notazione digitale usando; come separatore. Una volta completato, riavvia pulseaudio:

$ pulseaudio --kill
$ pulseaudio --start -or- start-pulseaudio-x11/kde

Quindi, modifica /etc/mpd.conf e aggiungi un nuovo output di impulsi che punta a 127.0.0.1 come server "remoto":

audio_output {
       type     "pulse"
       name     "Local Music Player Daemon"
       server       "127.0.0.1"
}

da https://wiki.archlinux.org/index.php/Music_Player_Daemon/Tips_and_tricks

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.