Pulseaudio streaming from Linux to Windows PC

Hello,

I have been trying to stream my Linux pc audio to windows pc. So far I have managed to install pulseaudio on windows and setup a server. On my linux machine I added ip of the windows machine as default-server in config file. So far it works really good. But all my output and input devices from my local Linux machine disappear. I want to have the option to play audio from my local machine and remote windows machine at the same time (its a unique situation) . I have read in the pulseaudio documentation I can do this with zeroconf module. However how does one install zeroconf on pulseaudio on a windows machine. I really want to have it as an output device that I can select.

If there is any better way of doing this with low latency please recommend, with pulseaudio the latency is almost none.
I did try with ffmpeg but the latency is too much.

Thanks!

Probably not what your looking for, but you could share the audio folder with windows. Then play the audio on windows directly.

This should be doable using vlc player.

On the server:
Media >> Stream >> point at content >> Stream >> Destination Setup: http
On the client:
Media >> Open Network Stream

Yea the problem is I want to play all sounds from pc.

Yea but that cannot stream system sounds.

I think it can.
Media >> Stream >> Capture Device:
Set ‘Capture Mode’ to ‘Desktop’

If you need more flexibility install Jack, set it to ‘Jack Audio Connection Kit’ and use Jack to route whatever inputs to your outs.

If IP addresses are configured correctly and audio stream is working you probably don’t need zeroconf to publish and discover the audio sink on the network – Network Setup – PulseAudio

You might want to check out using RTP connection instead of TCP that does not require zeroconf
and does not require PulseAudio on remote system
PulseAudio/Documentation/User/Network/RTP

I want to have the option to play audio from my local machine and remote windows machine at the same time

PulseAudio has module module-combine-sink to connect two or more sinks for simultaneous playback
If the local system only has one sink for audio playback the module can be loaded with a simple command:

pactl load-module module-combine-sink

and then set the combined sink as default for audio playback

pactl set-default-sink combined

If the local system has more than one sink output it is better to specify the name of one local sink and the remote sink.
Get the names of available sinks from pactl list sinks short and use a command like this:

pactl load-module module-combine-sink slaves=NAME1,NAME2

Hi,

Yes but with zeroconf on linux the sink gets added automaticly in the audio output devices.

It would be great if I can just add the ip of the windows pc in a config to create a sink instead of setting is as default-server on my linux machine.

I can then easily output audio on both machines by using that option to create virtual output to combine all.

I just need to add pulse audio server on windows machine as a output device on my linux machine. Because if I add it as default-server on linux machine, I lose my local output devices.

It has to be low latency, I tried ffmpeg and vlc and the latency is just too big. Pulseaudio is almost without latency.

I have been thinking about just putting raspberry pi and setup pulseaudio server on that. But I would need to run an ethernet cable which is kinda troublesome, so if I can use windows pc to do it that would be great.

Update:

Ok I have tried to use module-tunnel-sink-new to add remote windows pc as a sink on my linux pc. That is exactly what I wanted, it plays fine. However when I try to combine my Line Out and tunnel, pulseaudio just halts. And my system bricks. Standalone it works fine.

I used your commands to combine and also some of my own:

Connect to remote windows pc (works fine):
pactl load-module module-tunnel-sink-new sink_name=win_tun server=tcp:192.168.6.9:4713

To combine them I tried 2 commands (non of them worked):
pactl load-module module-combine-sink sink_name=spojeno slaves=win_tun,alsa_output.pci-0000_00_1b.0.analog-stereo adjust_time=5 resample_method=src-sinc-medium-quality
And
pactl load-module module-combine-sink slaves=alsa_output.pci-0000_00_1b.0.analog-stereo,win_tun

Also tried setting it manually as default:
pactl set-default-sink spojeno

But everytime it will break. I don’t know reason or solution.