libpipew...-rtp-sap(7)
π libpipew...-rtp-sap β Miscellaneous Information Manual π
okay bestie, settle in, because this is the libpipewire-module-rtp-sap page and it's literally about making your streams β¨knownβ¨ to the whole network. it lives in the Miscellaneous Information Manual, which is exactly the kind of chaotic-neutral energy we respect here. π
πΈ NAME πΈ
libpipewire-module-rtp-sap β SAP Announce and create RTP streams
π¦ DESCRIPTION π¦
so the rtp-sap module does two whole things and it does them with main character energy:
- it announces RTP streams that match the rules, using the
announce-streamaction. - it creates source RTP streams that get announced with SAP when they match the rule with the
create-streamaction.
and if you give it no stream.rules at all? no cap, it goes full default-mode: it announces every single stream that has sess.sap.announce = true, and it creates a receiver for every announced stream. iconic behavior honestly. π
π MODULE NAME π
libpipewire-module-rtp-sap
β¨ MODULE OPTIONS β¨
these are the options that are specific to how this module behaves, bestie. every single one:
local.ifname= <str> β interface name to usesap.ip= <str> β IP address of the SAP messages, default"224.0.0.56"sap.port= <int> β port of the SAP messages, default9875sap.cleanup.sec= <int> β cleanup interval in seconds, default90secondssource.ip= <str> β source IP address, default"0.0.0.0"net.ttl= <int> β TTL to use, default1net.loop= <bool> β loopback multicast, defaultfalsestream.rules= <rules> β match rules, usecreate-streamandannounce-streamactionssap.max-sessions= <int> β maximum number of concurrent send/receive sessions to tracksap.preamble-extra= [strings] β extra attributes to add to the atomic SDP preamblesap.end-extra= [strings] β extra attributes to add to the end of the SDP message
π GENERAL OPTIONS π
these ones are the well-known-behavior girlies, they just do what you expect:
remote.name
π EXAMPLE CONFIGURATION π
here's the whole vibe, copy-paste ready, every line exactly as it should be:
# ~/.config/pipewire/pipewire.conf.d/my-rtp-sap.conf
context.modules = [
{ name = libpipewire-module-rtp-sap
args = {
#local.ifname = "eth0"
#sap.ip = "224.0.0.56"
#sap.port = 9875
#sap.cleanup.sec = 5
#source.ip = "0.0.0.0"
#net.ttl = 1
#net.loop = false
stream.rules = [
{ matches = [
# any of the items in matches needs to match, if one does,
# actions are emitted.
{ # all keys must match the value. ! negates. ~ starts regex.
#rtp.origin = "wim 3883629975 0 IN IP4 0.0.0.0"
#rtp.payload = "127"
#rtp.fmt = "L16/48000/2"
#rtp.session = "PipeWire RTP Stream on fedora"
#rtp.ts-offset = 0
#rtp.ts-refclk = "private"
sess.sap.announce = true
}
]
actions = {
announce-stream = {
}
}
}
{ matches = [
{ # all keys must match the value. ! negates. ~ starts regex.
#rtp.origin = "wim 3883629975 0 IN IP4 0.0.0.0"
#rtp.payload = "127"
#rtp.fmt = "L16/48000/2"
#rtp.session = "PipeWire RTP Stream on fedora"
#rtp.ts-offset = 0
#rtp.ts-refclk = "private"
rtp.session = "~.*"
}
]
actions = {
create-stream = {
#sess.latency.msec = 100
#sess.ts-direct = false
#target.object = ""
}
}
}
]
}
}
]
heads up bestie: the commented-out lines in there are exactly that β commented out. leave them commented or un-comment them, but don't go renaming anything, the values are literal. π«Ά
β Since β
0.3.67
and that's the whole page! π this one came to you straight from the PipeWire source tree, version 1.6.11, libpipew...-rtp-sap(7) β go forth and announce your streams, you absolute legend. periodt. β¨π¦πΈ
π¦ where this page comes from
- fedora 44: pipewire-libs 1.6.11-1.fc44 Β· MIT AND GPL-2.0-or-later AND BSD-2-Clause AND LGPL-2.0-or-later
- fedora 44: pipewire-libs 1.6.11-1.fc44 Β· MIT AND GPL-2.0-or-later AND BSD-2-Clause AND LGPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms