libpipewire-module-rtp-sap(7) Miscellaneous Information Manual libpipewire-module-rtp-sap(7)

# [NAME](#NAME)

libpipewire-module-rtp-sap - SAP Announce and create RTP streams

# [DESCRIPTION](#DESCRIPTION)

The rtp-sap module announces RTP streams that match the rules with the announce-stream action.

It will create source RTP streams that are announced with SAP when they match the rule with the create-stream action.

If no stream.rules are given, it will announce all streams with sess.sap.announce = true and it will create a receiver for all announced streams.

# [MODULE NAME](#MODULE_NAME)

libpipewire-module-rtp-sap

# [MODULE OPTIONS](#MODULE_OPTIONS)

Options specific to the behavior of this module

- local.ifname = &lt;str&gt;: interface name to use
- sap.ip = &lt;str&gt;: IP address of the SAP messages, default "224.0.0.56"
- sap.port = &lt;int&gt;: port of the SAP messages, default 9875
- sap.cleanup.sec = &lt;int&gt;: cleanup interval in seconds, default 90 seconds
- source.ip =&lt;str&gt;: source IP address, default "0.0.0.0"
- net.ttl = &lt;int&gt;: TTL to use, default 1
- net.loop = &lt;bool&gt;: loopback multicast, default false
- stream.rules = &lt;rules&gt;: match rules, use create-stream and announce-stream actions
- sap.max-sessions = &lt;int&gt;: maximum number of concurrent send/receive sessions to track
- sap.preamble-extra = \[strings]: extra attributes to add to the atomic SDP preamble
- sap.end-extra = \[strings]: extra attributes to add to the end of the SDP message

# [GENERAL OPTIONS](#GENERAL_OPTIONS)

Options with well-known behavior:

•

**remote.name**

# [EXAMPLE CONFIGURATION](#EXAMPLE_CONFIGURATION)

```
# ~/.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 = ""


                    }


                }


            }


        ]


    }
}
]
```

**Since**

0.3.67

1.6.11 PipeWire

---

Document: libpipewire-module-rtp-sap(7) from pipewire 1.6.11-r2 (Chainguard OS)
Source: https://gitlab.freedesktop.org/pipewire/pipewire
