Overview
FreeRDP supports redirecting audio in both directions:- Sound output (
/sound) — plays audio from the remote session on the local client. - Microphone input (
/microphone) — captures audio on the client and sends it to the remote session.
rdpsnd for output, audin for input) and are negotiated with the server at connect time.
Build requirements
Audio backends
FreeRDP supports the following platform audio backends. At least one must be available.| Backend | CMake flag | Platform |
|---|---|---|
| ALSA | -DWITH_ALSA=ON (default) | Linux |
| PulseAudio | -DWITH_PULSE=ON (default) | Linux |
| OSS | -DWITH_OSS=ON (default) | Linux / BSD |
| sndio | Available when sndio headers are present | OpenBSD / FreeBSD |
| CoreAudio | Built-in | macOS |
| WinMM | Built-in | Windows |
Audio codecs
The most widely supported codec is uncompressed PCM, which requires no additional libraries. Compressed codecs improve quality and reduce bandwidth.| Codec | Build flag | Notes |
|---|---|---|
| PCM | Always available | Uncompressed, zero configuration |
| AAC | -DWITH_FAAC=ON / -DWITH_FAAD2=ON | Best quality; AAC encoding requires -DWITH_DSP_EXPERIMENTAL=ON |
| GSM | -DWITH_GSM=ON | Older low-bandwidth codec |
| FFmpeg codecs | -DWITH_DSP_FFMPEG=ON | Enables FFmpeg-based encode/decode pipeline |
| SOXR resampling | -DWITH_SOXR=ON | Optional resampling library |
AAC is the preferred compressed codec for Windows 8 and newer servers. To enable AAC encoding
(client-to-server microphone), you must also pass
-DWITH_DSP_EXPERIMENTAL=ON at build time.Sound output
Enable sound redirection with the/sound flag.
Sound sub-options
| Sub-option | Example | Description |
|---|---|---|
sys:<backend> | sys:alsa | Select the audio backend (alsa, pulse, oss) |
dev:<device> | dev:1 | Select a specific device index |
format:<n> | format:1 | Select a specific audio format index |
Microphone input
Enable microphone redirection with the/microphone flag.
/microphone option accepts the same sys:, dev:, and format: sub-options as /sound.
Using both simultaneously
Troubleshooting
No audio heard after connecting
No audio heard after connecting
-
Confirm the build includes an audio backend: check for
rdpsnd-client-pulse.soorrdpsnd-client-alsa.soin the plugin directory. -
On Linux with PulseAudio, ensure the PulseAudio daemon is running:
pulseaudio --check. -
On Linux with ALSA, verify the device is not muted:
alsamixer. -
Enable debug logging to trace the codec negotiation:
Microphone not working
Microphone not working
- Ensure the build includes
audinchannel support with the correct backend. - On Linux, check that the input device is not muted and is set as the default capture device.
- The server must support the Audio Input virtual channel (
audin). Verify it is not blocked by group policy on the server.
Poor audio quality or high latency
Poor audio quality or high latency
- PCM is uncompressed and uses the most bandwidth. If bandwidth is limited, ensure a compressed codec (AAC or GSM) was negotiated. Check the debug log for the negotiated format.
- Rebuild with
-DWITH_DSP_FFMPEG=ONor-DWITH_FAAD2=ONto enable compressed codec support. - Consider enabling SOXR resampling (
-DWITH_SOXR=ON) to improve sample rate conversion quality.
AAC codec not available
AAC codec not available
- AAC encoding requires
-DWITH_FAAC=ONand-DWITH_DSP_EXPERIMENTAL=ON. - AAC decoding requires
-DWITH_FAAD2=ONor-DWITH_DSP_FFMPEG=ON. - Rebuild with the appropriate flags and verify the codec appears in the negotiation log.
