Wave PCM fichier de stéréo à mono

J'ai un fichier audio stéréo. Est convertir en mono juste une affaire de sauter tous les autres octets (après l'en-tête)? Il est codé en 16 bits signé au format PCM. J'ai javax.sound.sampled disponibles.

Voici le code que j'ai essayé cela ne fonctionne pas:

WaveFileWriter wfw = new WaveFileWriter();
AudioFormat format = new AudioFormat(Encoding.PCM_SIGNED, 44100, 16, 2, 2, 44100, false);
AudioFormat monoFormat = new AudioFormat(Encoding.PCM_SIGNED, 44100, 16, 1, 2, 44100, false);

byte[] audioData = dataout.toByteArray();
int length = audioData.length;
ByteArrayInputStream bais = new ByteArrayInputStream(audioData);

AudioInputStream stereoStream = new AudioInputStream(bais,format,length);
AudioInputStream monoStream = new AudioInputStream(stereoStream,format,length/2);

wfw.write(monoStream, Type.WAVE, new File(Environment.
                 getExternalStorageDirectory().getAbsolutePath()+"/stegDroid/un-ogged.wav"));

Ce code est utilisé après la lecture d'un .ogg fichier à l'aide de Jorbis pour le convertir en données PCM. Le seul problème est que le résultat est stéréo et j'ai besoin d'être mono, donc si il y a une autre solution, je suis heureux de l'entendre!

OriginalL'auteur fredley | 2011-01-17