Provided by: libpipewire-0.3-modules_1.2.7-1_amd64
NAME
libpipewire-module-protocol-simple - Protocol Simple
DESCRIPTION
The simple protocol provides a bidirectional audio stream on a network socket. It is meant to be used with the simple protocol player app, available on Android to play and record a stream. Each client that connects will create a capture and/or playback stream, depending on the configuration options. You can also use it to feed audio data to other clients such as the snapcast server.
MODULE NAME
libpipewire-module-protocol-simple
MODULE OPTIONS
• capture: boolean if capture is enabled. This will create a capture stream or sink for each connected client. • playback: boolean if playback is enabled. This will create a playback or source stream for each connected client. • local.ifname = <str>: interface name to use • local.ifaddress = <str>: interface address to use • server.address = []: an array of server addresses to listen on as tcp:(<ip>:)<port>. • capture.props: optional properties for the capture stream • playback.props: optional properties for the playback stream
GENERAL OPTIONS
Options with well-known behavior. • remote.name • audio.rate • audio.format • audio.channels • audio.position • node.latency • node.rate • stream.capture.sink • node.name • target.object By default the server will work with stereo 16 bits samples at 44.1KHz.
EXAMPLE CONFIGURATION
# ~/.config/pipewire/pipewire.conf.d/my-protocol-simple.conf context.modules = [ { name = libpipewire-module-protocol-simple args = { # Provide capture stream, clients can capture data from PipeWire capture = true # # Provide playback stream, client can send data to PipeWire for playback playback = true # #audio.rate = 44100 #audio.format = S16 #audio.channels = 2 #audio.position = [ FL FR ] # # The addresses this server listens on for new # client connections server.address = [ "tcp:4711" ] capture.props = { # The node name or id to use for capture. #target.object = null # # To make the capture stream capture the monitor ports #stream.capture.sink = false # # Make this a sink instead of a capture stream #media.class = Audio/Sink } playback.props = { # The node name or id to use for playback. #target.object = null # # Make this a source instead of a playback stream #media.class = Audio/Source } } } ]
EXAMPLE CONFIGURATION FOR A SNAPCAST SERVER
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 ] # The addresses this server listens on for new # client connections server.address = [ "tcp:4711" ] capture.props = { # Make this a sink instead of a capture stream media.class = Audio/Sink } } } ] On the snapcast server, add the following to the `snapserver.conf` file: \code{.unparsed} [stream] sampleformat = 48000:16:2 source = tcp://127.0.0.1:4711?name=PipeWireSnapcast&mode=client Snapcast will try to connect to the protocol-simple server and fetch the samples from it. Snapcast tries to reconnect when the connection is somehow broken.