DepUnPr

MPD su RaspberryPI

Installazione di MPD su raspberry con output su stream http

Cosa serve

Podman per l’interfaccia web. Si puo’ fare senza, ma non l’ho testato.

MPD

Installazione

# apt install mpd

Configurazione

editiamo /etc/mpd.conf

Ecco cosa ho modificato nel mio file di configurazione. Se erano commentati (la riga cominciava con #), sono stati decommentati

music_directory     "/media/sda1/Musica"

questa è la cartella che contiene la mia musica

bind_to_address         "0.0.0.0"
bind_to_address         "/run/mpd/socket"

Il primo è l’indirizzo di rete su cui risponderà mpd, 0.0.0.0 per rispondere su tutte le interfacce di rete.

Il secondo per potersi collegare via socket locale. Servirà per l’interfaccia web.

zeroconf_enabled        "yes"
zeroconf_name           "Music Player @ %h"

Sul mio raspberry ho installato Avahi, quindi ho abilitato le opzioni. Non ho ancora visto se funziona

audio_output {
    type        "httpd"
    name        "My HTTP Stream"
    encoder     "lame"          # optional, vorbis or lame
    port        "8000"
    bind_to_address "0.0.0.0"       # optional, IPv4 or IPv6
##  quality     "5.0"           # do not define if bitrate is defined
    bitrate     "128"           # do not define if quality is defined
#   format      "44100:16:1"
#   max_clients "0"         # optional 0=no limit
}

Qui abilito l’output via stream http, usando il server di streaming http integrato in mpd.

L’encoder è impostato a “lame” per avere lo stream in mp3. Dai miei test, il client per android malp funziona molto meglio con lo stream in mp3. Io ho deciso di impostare il bitrate a 128, vedete voi.

Non ho impostato una password nel file di configurazione perché il mio mpd sarà raggiungibile solo in rete locale a casa.

Avvio

Configurato, non resta che avviare il servizio

# systemctl enable --now mpd

A questo punto dovreste potervi collegare all’indirizzo di controllo:

http://vostroserver:6600

che dovrebbe rispondere qualcosa tipo

OK MPD 0.23.5

e anche all’indirizzo dello streaming

http://vostroserver:8000

che non risponde perché non c’è nessun brano in esecuzione.

Client android malp

mapl è installabile da f-droid.

Per prima chiede di creare il profilo.

A questo punto si puo’ andare su Library, cercare una canzone, selezionarla pigiare “play”. Dovrebbe partire l’indicatore di avanzamento ma non si sente nulla.

Aprendo il player, menu si seleziona “star streaming” e si aspetta. dopo una decina di secondi dovrebbe partire l’audio. Si, bisogna farlo ogni volta.

Client web

Come client web usiamo myMPD, la documentazione è qui: https://jcorporation.github.io/myMPD/

Per l’installazione ci sono tre opzioni:

La compilazione non sembra complicata, ma per questa volta ho scelto di usare Podman, che ho già installato sul raspino per altre cose (pihole).

L’interfaccia web sarà raggiungibile all’indirizzo

htttp://vostroserver:6680/

installazione

Per tenere le cose in ordine, creo una cartella /opt/mympd dove ci metto quello che serve

Creo lo script bash che avvierà il container: /opt/mympd/run.sh

#!/bin/bash
set -e

NAME="${1:-mympd}"

# girerà come utente pi:pi, che è il mio utente sul raspi
# e che ha accesso alla cartella musica
RUNAS="1000:1000"

# creo le due cartelle per salvare configurazione e cache tra i riavvi
# del container
MYMPD_BASE="${MYMPD_BASE:-$(dirname "$0")}"
[[ -d "$MYMPD_BASE" ]] || mkdir -p "$MYMPD_BASE" || { echo "Couldn't create storage directory: $MYMPD_BASE"; exit 1; }
mkdir -p "${MYMPD_BASE}/workdir"
mkdir -p "${MYMPD_BASE}/cachedir"

chown -R "$RUNAS" "${MYMPD_BASE}/workdir" "${MYMPD_BASE}/cachedir"

# avvio il container
podman run \
    --rm \
    --name "$NAME" \
    -p 6680:8080 \
    -u 1000:1000 \
    -e UMASK_SET=022 \
    -e MYMPD_SSL=false \
    -e MYMPD_HTTP_PORT=8080 \
    -v /run/mpd:/run/mpd \
    -v "${MYMPD_BASE}/workdir:/var/lib/mympd" \
    -v "${MYMPD_BASE}/cachedir:/var/cache/mympd" \
    \
    -v "/media/sda1/Musica:/media/sda1/Musica:ro" \
    -v "/var/lib/mpd/playlists:/var/lib/mpd/playlists:ro" \
    \
    ghcr.io/jcorporation/mympd/mympd

⚠ OCCHIO!

Ricodarsi di modificare "/media/sda1/Musica":/media/sda1/Musica:ro" con il percorso alla giusta cartella musica

rendo lo script eseguibile

# chmod +x run.sh

creo il service unit per systemd: /opt/mympd/mympd.service

[Unit]
Description=Web-based MPD client
After=network-online.target mpd.service

[Service]
TimeoutStartSec=0
Restart=always
ExecStart=/bin/bash /opt/mympd/run.sh %n

[Install]
WantedBy=multi-user.target

Lo installo nel sistema e lo avvio

# ln -s /opt/opt/mympd/mympd.service /etc/systemd/system/
# systemctl daemon-reload
# systemctl start mympd

Ora la vostra interfaccia dovrebbe essere raggiungibile su

htttp://vostroserver:6680

Configurazione

myMPD si collega a mpd via socket unix, quindi non c’è bisogno di dirgli dove trovare mpd, pero’ possiamo dirgli dove trovare lo stream e di farlo partire in automatico quando c’è qualche brano in esecuzione

Facciamo: menu (icona in alto a sx) -> Impostazioni -> Caratteristiche

Poi pigiamo “Salva” in fondo alla finestra.

Il resto delle impostazioni a discrezione.

Cose da provare