Файл PCM Wave - стерео в моно

У меня есть стерео аудиофайл. Преобразование его в моно просто случай пропуска каждого второго байта (после заголовка)? Он закодирован в 16-битном подписанном формате PCM. У меня есть javax.sound.sampled .

Вот код, который я пробовал, но он не работает:

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"));

Этот код используется после чтения файла .ogg с помощью Jorbis для преобразования его в данные PCM. Единственная проблема заключается в том, что в результате получается стерео, и мне нужно, чтобы оно было моно, поэтому, если есть другое решение, я рад его услышать!

9
задан B770 21 August 2013 в 11:21
поделиться