0

I have a number of voice sound streams encoded in PCM (PCM_SIGNED 8000.0 Hz, 16 bit, mono, 2 bytes/frame, little-endian) which I want to send over the network. To save bandwidth I currently encode the streams using JSpeex. However to save even more bandwidth I would like to (if possible) combine these multiple streams into a single stream before encoding with JSpeex. My DSP knowledge is severely lacking & I am wondering how to go about combining the streams in Java?

dbotha
  • 1,501
  • 4
  • 20
  • 38
  • What do you mean by "combine these multiple streams into a single stream" ? Concatenate them, one after the other, or what ? – leonbloy Jul 30 '10 at 17:43
  • No combine them such that they 'overlay' eachother. Basically this is a voice chat server that will take in a bunch of voice streams from all connected clients, mix/combine them into a single stream and then send that single stream back out to all the clients. – dbotha Jul 30 '10 at 18:11

1 Answers1

0

I combine multiple audio streams with this MixingAudioInputStream. The mentioned AudioConcat example uses the same class and it gives you a good idea of how to do the mixing.

You hand it a chosen format and a List of AudioInputStream objects and it mixes them down into one mixed AudioInputStream that you can send back to the clients.

I found it works well provided that your input stream lengths are more or less the same size in length.

Garg Unzola
  • 376
  • 1
  • 4
  • 9