1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
import javax.media.CaptureDeviceInfo;
import javax.media.CaptureDeviceManager;
import javax.media.DataSink;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Processor;
import javax.media.protocol.DataSource;
import javax.media.protocol.FileTypeDescriptor;
import jmapps.util.StateHelper;
public class ReadOnAudioDevice {
public static void main(String[] args) {
// récupération dun capture device
CaptureDeviceInfo captureDevice=CaptureDeviceManager.getDevice("JavaSound audio capture");
// récupération du MediaLocator lié au périphérique de capture
MediaLocator mediaLocator = captureDevice.getLocator();
Processor processor = null;
StateHelper stateHelper = null;
try {
// création d'un processeur
processor = Manager.createProcessor(mediaLocator);
// création d'un objet helper permettant de simplifier la configuration
stateHelper = new StateHelper(processor);
// configuration du processeur
stateHelper.configure();
// configuration de la destination => format Wave
processor.setContentDescriptor(new FileTypeDescriptor(FileTypeDescriptor.WAVE));
//initialisations
stateHelper.realize();
// récupération de la source de sortie
DataSource source = processor.getDataOutput();
// création d'un MediaLocator lié à un fichier (destination)
MediaLocator destination = new MediaLocator("file://c:/samples/capture.wav");
// création d'un DataSink pour écrire dans le fichier le flux entrant
// (synchronisation entre la source et la destination)
DataSink fileWriter = Manager.createDataSink(source, destination);
// ouveture de la lecture / enregistrement (préparation)
fileWriter.open();
// démarrage du processor et du filewriter
fileWriter.start();
// capture 10 secondes
stateHelper.playToEndOfMedia(10000);
// fermeture de la capture
stateHelper.close();
// fermeture du fichier
fileWriter.close();
} catch (Exception e) {
System.out.println("error : " + e);
}
}
} |