Java tutorial
/* Java Media APIs: Cross-Platform Imaging, Media and Visualization Alejandro Terrazas Sams, Published November 2002, ISBN 0672320940 */ import javax.media.*; import javax.media.format.*; import javax.media.protocol.*; public class DoAudioCapture { public static void main(String[] args) { Location2Location capture; CaptureDeviceInfo audioDevice; MediaLocator audioLocation; MediaLocator destination; audioDevice = CaptureDeviceManager.getDevice("DirectSoundCapture"); audioLocation = audioDevice.getLocator(); Format[] format = new Format[1]; format[0] = new AudioFormat(AudioFormat.LINEAR); ContentDescriptor container = new ContentDescriptor(FileTypeDescriptor.WAVE); destination = new MediaLocator("file://d:\\jmf\\book\\media\\capturedSound.wav"); capture = new Location2Location(audioLocation, destination, format, container, 1.0); System.out.println("Started recording..."); capture.setStopTime(new Time(10.0)); int waited = capture.transfer(35000); int state = capture.getState(); System.out.println("Waited " + waited + " milliseconds. State now " + state); waited /= 1000; while (state != Location2Location.FINISHED && state != Location2Location.FAILED) { try { Thread.sleep(10000); } catch (InterruptedException ie) { } System.out.println("Waited another 10 seconds, state = " + capture.getState()); waited += 10; } System.out.println("Waited a total of " + waited + " seconds"); System.exit(0); } }