How to stream audio across the net (Advice wanted)


#1

Could any experienced JUCE audio programmer advise me on the components I need for the following:

I need to capture audio from an input device (typically a freestanding or webcam mic) on one computer and stream it live across the net to an output device (typically headphone or spkr) on another computer.

I have my P2P data transfer across the Internet coded and working and I know enough JUCE to have figured out how to enumerate the available devices and how to select the devices I want to use, so my question relates purely to capturing the audio straight into memory buffers which I will send off with my P2P TCP connection. At the other end I just need to send the received buffers direct to the chosen output device.

There are a large number of JUCE audio classes, which is great, but I have been looking at examples and forum posts and my concern is that I may end up coding unecesssary complexity into what I hope is a very simple task.  Obviously Internet data transfer introduces delays and uncertainties and the transferred data needs buffering at the receiving end for smooth playback. I can do this myself, but maybe JUCE will do this for me (if I know the right classes to plug together). The other thing I need is to be able to select the audio format, and further compress the data if possible for fast transport. Again I see pointers in the documentation to what I need, but for a newcomer it is not easy figuring out which is the minimum combination of classes that will achieve the desired aim.  I have 25 years experience of programming in C++, so I know how to use callbacks and so on, my uncertainty relates to knowing which classes are important to use for my task and which are not.

 


#2

I have something like that on my agenda, but the feeling that some thing in juce are missing.

So buffering you must build for your own. The data pump from audio player ask for data every n mlii seconds. So you need a queue with first latency buffer or not and deliver silence when you have no network data.

The audio compressor / decompressor classes looks like file based and not designed for network streams. But this is my feeling. Hopefully I'm wrong here, but not sure.

Yes in the samples a important sample is missing, playing (mp3,...) audio from network stream.

regards

 elli