Capture all audio on a PC and stream it to another?
Imagine this scenario: You have a desktop and a laptop. The desktop has a high end set of speakers, the laptop does not. You currently use Synergy to share your mouse and keyboard, but audio is a problem.
Is there a way in C# to create a client that c开发者_高级运维aptures all of the sound on a PC(I'm thinking like a virtual sound card) and streams it to server that hosts the real sound card?
Not a programming solution - but airfoil with airfoil speakers will do what you want and it's not expensive.
http://rogueamoeba.com/airfoil/speakers.php
Streaming sound shouldn't be a problem if you design something like a ring buffer in case you have lags in the network to avoid breaking the sound wave.
For capture though, I don't see any easy solution short of creating a virtual WDM driver that you put on top of the sound card (either input or output) you want to capture.
There is AirFoil, as morechilli mentioned. It works with minimal setup, however the output is very noticeably latent.
The PulseAudio project might hold the key to low-latency. A lot of relevant questions on SuperUser.
I'm not sure if this is the solution you're looking for, but I quite often shoutcast over my home network using winamp and the shoutcast server. If it's just music you want to listen to, this will do the trick. However (and I admit I have not tested this), you can tell the encoder what to listen to - normally you just get it to listen to the output buffer of winamp, but there is a setting that allows it to listen to the output to your soundcard.
http://www.shoutcast.com/download
Yeah, you write a driver that is a virtual sound card and IPC's off the information to a service that streams the data out.
精彩评论