SnapCast is what I've been looking at in that space.
The main thing I haven't been able to figure out is how to have multiple Snapcast streams and control which room listens to what. I don't actually think it's possible to do.. (though I could be wrong?)