У меня есть стерео аудиофайл. Преобразование его в моно просто случай пропуска каждого второго байта (после заголовка)? Он закодирован в 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. Единственная проблема заключается в том, что в результате получается стерео, и мне нужно, чтобы оно было моно, поэтому, если есть другое решение, я рад его услышать!