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@27: private boolean initialized = false; rlm@27: private FileOutputStream fos; rlm@27: rlm@24: public WaveFileWriter(File targetFile) throws FileNotFoundException{ rlm@27: this.fos = 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@27: private void initiaize(AudioFormat format){ rlm@27: wao = new WaveAudioOutputStream(format, rlm@27: (long)AudioSystem.NOT_SPECIFIED, rlm@27: (TDataOutputStream) new TNonSeekableDataOutputStream( rlm@27: fos)); rlm@27: } rlm@27: rlm@27: public void process(ByteBuffer audioSamples, AudioFormat format, int numSamples) { rlm@27: rlm@27: if (!initialized){initiaize(format);} rlm@27: rlm@24: byte[] data = new byte[numSamples]; rlm@24: audioSamples.get(data, 0, numSamples); rlm@24: try {wao.write(data, 0, numSamples);} rlm@24: catch (IOException e) {e.printStackTrace();} rlm@24: } rlm@9: }