I'm looking into developing an application that will require live streaming of audio. I would prefer to use some cross-platform (windows/linux/BSD) open source library written in C or C++ even though writing it using the respective OSs' Sound APIs is still an option.
I have read a bit about various sound libraries, including SFML, SDL and PortAudio. Admittedly, I have not yet researched enough about Sound in FreeBSD and Linux (how similar is it between these 2?)
The main requirements will be
- get audio from a chosen microphone/microphones to send over the network,
- send data to a selection of output devices,
- process the sound (filtering, cleaning up noise, multiplexing streams etc) but this can be done once I have the audio data, the library itself does NOT need to be able to do any of this.
- have reasonably low latency
My main concern is that these mentioned APIs seem to be mainly targeted for Games (where sound is usually loaded from disk and there is not much, if any, sound recording involved rather than streamed over the network with equal importance between recording and playback.
Does anyone have any pointers/warnings/suggestions regarding these or other sound APIs or about the advantages/disadvantages of going the long way and implementing this in the respective OSs' APIs?
NOTE: while this: "Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow " DOES make the question off-topic, when one also considers "as they tend to attract opinionated answers and spam" then I do not think this question should be closed. Someone looking for such a library as described will be hard-pressed to find anything and the answers to this question practically summarize all available options. This is thus in the "generally covers...software tools commonly used by programmers;" category of accepted answers.