Mopidy
Mopidy (WebUI Link siehe Dashboard) läuft in einem Docker-Container auf mopidy.nerdberg.de. Mopidy gibt seinen audio output per TCP auf einen pipewire server, der lokal auf dem Host (außerhalb des Containers) läuft. Von dort wird das Audio vom Snapcast Server per TCP abgeholt (der Server ist ein TCP-Client vom Pipewire) und verbreitet.
Snapcast Client
Host: mopidy.nerdberg.de Stream-Port: 1704 Control-Port: 1705
Eigenes Audio einspeisen
Der Pipewire auf mopidy.nerdberg.de lässt eingehende (Port 4710) und ausgehende (Port 4711) TCP-Verbindungen zu. Dazu wird das Protocol Simple-Modul verwendet.
Um eigenes Audio einzuspeisen:
# ~/.config/pipewire/pipewire.conf.d/nerdberg.conf
context.modules = [
{ name = libpipewire-module-protocol-simple
args = {
# Provide sink
capture = true
audio.rate = 48000
audio.format = S16
audio.channels = 2
audio.position = [ FL FR ]
node.name = "Nerdberg"
# The addresses this server listens on for new
# client connections
server.address = [
"tcp:127.0.0.1:4711"
]
capture.props = {
# Make this a sink instead of a capture stream
media.class = Audio/Sink
}
}
}
]
# ~/.config/systemd/user/nerdberg-audiosink.service
[Unit]
Description=Nerdberg PipeWire Output
[Service]
ExecStart=/bin/bash -c 'nc localhost 4711 | nc mopidy.nerdberg.de 4710'
systemctl --user restart pipewire
systemctl --user start nerdberg-audiosink