MayaPosch / NymphCast

Audio and video casting system with support for custom applications.
http://nyanko.ws/nymphcast.php
BSD 3-Clause "New" or "Revised" License
2.39k stars 81 forks source link

[Feature request] Add a PipeWire client so system audio can be casted to a receiver #84

Open PureTryOut opened 7 months ago

PureTryOut commented 7 months ago

Rather than now putting in work to add Nymphcast support in a lot of applications it might be useful to add a PipeWire-based client so system audio (and thus any application running on it) could be cast to a Nymphcast receiver. Ideally any Nymphcast receiver or group would appear as an audio device so people could use their existing sound settings to change audio output to a receiver. It would also be a great alternative to both Bluetooth and PipeWire-zeroconf based speakers.

MayaPosch commented 7 months ago

That's indeed similar to an idea which I had before, though I was looking mostly at cross-platform solutions for a 'virtual audio device'. I think that now that PipeWire is becoming pretty much the standard for Linux, it would be a very useful feature to have.

I have looked at the PipeWire documentation some for how to use the API, but any specific resources you may have found are always welcome before I dive into this :)

PureTryOut commented 1 month ago

Since the last beta PipeWire actually got support to do this to Snapcast servers, see https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/26c1993e8aec4de63e95b44188a6a51009534268 and https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/78fbe6f7503be1a4c0d78b16a4bf03638db071d9.

Is this in anyway helpful on how to do the same for NymphCast?

MayaPosch commented 1 month ago

I have been looking so far at the Airplay module and trying to make that work for NymphCast. It looks similar to the Snapcast module from what I can tell.

So far I have implemented part of a NymphCast module for PipeWire, but have been rather short on time so it's been languishing. I hope to find time to resume work on it the coming weeks.