Audio Streaming
lamco-rdp-server supports bidirectional audio via the RDPSND channel. Desktop audio is captured through PipeWire, encoded, and streamed to the connected RDP client.
Supported Codecs
Codecs are auto-negotiated between the server and the RDP client during connection setup. The server advertises all available codecs, and the client selects the best match.
| Codec | Priority | Description |
|---|---|---|
| opus | Preferred | High-quality, low-latency lossy codec. Best for most connections. |
| pcm | Fallback | Uncompressed audio. Maximum quality, highest bandwidth usage. |
| adpcm | Legacy | Adaptive Differential PCM. Compatibility with older RDP clients. |
| g711 | Legacy | G.711 u-law/A-law. Telephony-grade audio for low-bandwidth links. |
Configuration
enabled = true
codec = "auto"
sample_rate = 48000
channels = 2
buffer_ms = 40
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | Enable audio streaming |
| codec | string | "auto" | Codec selection: auto, opus, pcm, adpcm, g711 |
| sample_rate | integer | 48000 | Sample rate in Hz |
| channels | integer | 2 | Number of audio channels (1 = mono, 2 = stereo) |
| buffer_ms | integer | 40 | Buffer size in milliseconds |
How It Works
Audio requires PipeWire. The server captures desktop audio via PipeWire and encodes it for the RDP client. Codec selection is automatic via capability negotiation — the server and client exchange supported codec lists during the RDPSND channel setup, and the highest-priority mutually supported codec is selected.
Note: When codec = "auto", the server will prefer Opus if the client supports it, falling back through the priority list automatically.
Requirement: PipeWire must be running. Verify with: systemctl --user status pipewire