rlm@9: package com.aurellem.capture.audio; rlm@9: rlm@9: import java.io.File; rlm@24: import java.io.FileNotFoundException; rlm@24: import java.io.FileOutputStream; rlm@9: import java.io.IOException; rlm@9: import java.nio.ByteBuffer; rlm@9: rlm@9: import javax.sound.sampled.AudioFormat; rlm@9: import javax.sound.sampled.AudioSystem; rlm@9: rlm@23: import org.tritonus.sampled.file.WaveAudioOutputStream; rlm@24: import org.tritonus.share.sampled.file.TDataOutputStream; rlm@24: import org.tritonus.share.sampled.file.TNonSeekableDataOutputStream; rlm@23: rlm@9: public class WaveFileWriter implements SoundProcessor { rlm@9: rlm@9: public File targetFile; rlm@24: private WaveAudioOutputStream wao; rlm@9: rlm@24: public WaveFileWriter(File targetFile) throws FileNotFoundException{ rlm@24: wao = new WaveAudioOutputStream(new AudioFormat(44100.0f, 32, 1, true, false), rlm@24: AudioSystem.NOT_SPECIFIED, rlm@24: (TDataOutputStream) new TNonSeekableDataOutputStream(new FileOutputStream(targetFile))); rlm@9: } rlm@9: rlm@24: public void cleanup() { rlm@24: try {wao.close();} rlm@24: catch (IOException e) {e.printStackTrace();} rlm@9: } rlm@9: rlm@24: rlm@24: public void process(ByteBuffer audioSamples, int numSamples) { rlm@24: byte[] data = new byte[numSamples]; rlm@24: audioSamples.get(data, 0, numSamples); rlm@24: rlm@24: try {wao.write(data, 0, numSamples);} rlm@24: catch (IOException e) {e.printStackTrace();} rlm@24: } rlm@9: }