Mercurial > jmeCapture
view src/com/aurellem/capture/audio/WaveFileWriter.java @ 47:74b53dfe369e
stressing similiarity between audio and video capture
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sat, 03 Dec 2011 12:48:40 -0600 |
parents | 388f9d062012 |
children | d799a0278cc9 |
line wrap: on
line source
1 package com.aurellem.capture.audio;3 import java.io.File;4 import java.io.FileNotFoundException;5 import java.io.FileOutputStream;6 import java.io.IOException;7 import java.nio.ByteBuffer;9 import javax.sound.sampled.AudioFormat;10 import javax.sound.sampled.AudioSystem;12 import org.tritonus.sampled.file.WaveAudioOutputStream;13 import org.tritonus.share.sampled.file.TDataOutputStream;14 import org.tritonus.share.sampled.file.TNonSeekableDataOutputStream;16 public class WaveFileWriter implements SoundProcessor {18 public File targetFile;19 private WaveAudioOutputStream wao;20 private TDataOutputStream tos;21 private boolean initialized = false;23 public WaveFileWriter(File targetFile) throws FileNotFoundException{24 tos = new TNonSeekableDataOutputStream(25 new FileOutputStream(targetFile));26 }28 public void init(AudioFormat format){29 wao = new WaveAudioOutputStream(format,AudioSystem.NOT_SPECIFIED, tos);30 }32 public void process(ByteBuffer audioSamples, int numSamples, AudioFormat format) {33 audioSamples.clear();34 if (!initialized){35 init(format);36 initialized = true;37 }39 byte[] data = new byte[numSamples];40 audioSamples.get(data, 0, numSamples);41 try {wao.write(data, 0, numSamples);}42 catch (IOException e) {e.printStackTrace();}43 }45 public void cleanup() {46 try {wao.close();}47 catch (IOException e) {e.printStackTrace();}48 }51 }