windows java audio capture in and out? (mic + speaker) -
i'm testing code question:
capturing audio streams in java
is possible perform input , output recording in same file? i'm getting microphone.
i save audio input , output devices. example, user using headphones , speakers.
here's example of i'm using:
void start() { audioformat format = new audioformat(44100, 16, 2, true, true); dataline.info targetinfo = new dataline.info(targetdataline.class, format); mixer.info[] minfolist = audiosystem.getmixerinfo(); dataline.info info = null; vector<audioformat> taudioformatlist = getsupportedformats(targetdataline.class); javafilelogger.logit(0, "for in mixers info"); (final mixer.info mi : minfolist) { javafilelogger.logit(0, "mierinfo: " + mi.tostring()); mixer m = audiosystem.getmixer(mi); javafilelogger.logit(0, "mierinfo: " + m.tostring()); try { javafilelogger.logit(0, " try open mixer "); m.open(); javafilelogger.logit(0, "for audioformat"); (audioformat f : taudioformatlist) { javafilelogger.logit(0, " format " + f.tostring()); info = new dataline.info(targetdataline.class, f); if (audiosystem.islinesupported(info) && audiosystem.getmixer(mi).islinesupported(info)) { javafilelogger.logit(0, " suported "); final targetdataline tline = (targetdataline) audiosystem.getline(info); javafilelogger.logit(0, " line "); tline.open(f); tline.start(); javafilelogger.logit(0, " cast "); final audioinputstream ais = new audioinputstream(tline); javafilelogger.logit(0, " passou cast "); final thread writer = new thread(new runnable() { public void run() { try { thread.sleep(1000); } catch (exception e) { } final thread stopper = new thread(new runnable() { public void run() { javafilelogger.logit(0, " iniciou thread " + this.hashcode()); try { thread.sleep(10000); } catch (interruptedexception ex) { ex.printstacktrace(); } javafilelogger.logit(0, " escrevendo " + this.hashcode()); javafilelogger.logit(0, " jofando no arquivo " + this.hashcode()); try { thread.sleep(record_time); } catch (interruptedexception ex) { ex.printstacktrace(); } javafilelogger.logit(0, " terminou o sleep " + this.hashcode()); tline.stop(); tline.close(); javafilelogger.logit(0, "fechou line " + this.hashcode()); try { ais.close(); } catch (ioexception ex) { // logger.getlogger(audiocapture.class.getname()).log(level.severe, null, ex); } javafilelogger.logit(0, "fechou o arq e fnalizou thread " + this.hashcode()); } }); stopper.start(); try { audiosystem.write(ais, filetype, new file("c:/s4/recordaudio_"+stopper.hashcode()+".wav")); } catch (ioexception ex) { javafilelogger.logit(0, "erro ao gravar " + this.hashcode()); } } }); writer.start(); } } } catch (exception e) { javafilelogger.logit(0, "falha na identificação mixer " + e.getmessage()); } }
Comments
Post a Comment