Bonjour,
Je veux faire une capture de son à partir de mon micro, j'ai trouvé un petit bout de code mais il me génère une exception .voilà le bout de code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 d’un 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);
}
}
}
voilà l'erreur géneré :
Exception in thread "main" java.lang.NullPointerException
at ReadOnAudioDevice.main(ReadOnAudioDevice.java:15)