JMF - lässt sich nicht im ausgewählten Format aufnehmen

Devil Jul

Mitglied
Hallo,

ich möchte mit dem JMF Sound aufnehmen mit folgenden Parametern: 8000Hz, 16-bit, mono, gespeichert soll es im WAVE-Format werden.
Ich habe alles angegeben und es sollte auch möglich sein, mit diesen Einstellung Sound aufzunehmen, jedoch wird Sound immer mit 44000HZ und stereo aufgenommen, ob wohl ersteres im Code steht.
Hat jemand schon mal so ein Problem gehabt und kann mir weiter helfen? Ich habe dazu bisher noch nichts gefunden...

Danke schon mal für jede Hilfe! Lansam weiß ich nicht mehr weiter und muss jedoch den Sound in genau der Qualität aufnehmen...
Julia

Code:
Java:
Processor p = null;
		StateHelper stateHelper = null;
		CaptureDeviceInfo di = null;
		
		Vector deviceList = CaptureDeviceManager.getDeviceList(new AudioFormat(AudioFormat.LINEAR, 8000, 16, 1));

		if (deviceList.size() > 0) {
			di = (CaptureDeviceInfo)deviceList.firstElement();

		} else {
			System.out.println("konnte keine Audio-Device finden!");
			System.exit(-1);
		}
		
		try {
			p = Manager.createProcessor(di.getLocator());
		} catch (Exception e) {
			e.printStackTrace();
			System.exit(1);
		}

		
		stateHelper = new StateHelper(p);
		if(!stateHelper.configure(10000)) {
			System.out.println("irgendwas hat zu lange gedauert...!");
			System.exit(-1);
		}
		
		p.setContentDescriptor(new FileTypeDescriptor(FileTypeDescriptor.WAVE));
		if(!stateHelper.realize(10000)) {
			System.out.println("irgendwas hat zu lange gedauert...!");
			System.exit(-1);
		}
		
		javax.media.protocol.DataSource source = p.getDataOutput();
		MediaLocator dest = new MediaLocator(speicherort);
		
		DataSink filewriter = null;
		try {
			filewriter = Manager.createDataSink(source, dest);
			
			filewriter.open();
			
			StreamWriterControl swc = (StreamWriterControl) p.getControl("javax.media.control.StreamWriterControl");
			if (swc != null) {
				swc.setStreamSizeLimit(5000000);
			}
			
			filewriter.start();
			stateHelper.playToEndOfMedia(maxlaenge);
			
			stateHelper.close();
			filewriter.close();
		} catch (Exception e) {
			
			System.out.println("Irgendwas hat mit der Aufnahme nicht geklappt... doof...");
			e.printStackTrace();
			System.exit(1);
		}
 
Zuletzt bearbeitet:
a) Ich sehe nirgends dass du einstellst, dass mit 8kHz aufgenommen werden soll, oder die API ist wirklich so komisch, dass jedes Device nur eine spezielle Konfig hat
b) Wenn das der Code ist, dann sollte in Zeile 8 eh eine NPE fliegen und nie aufgenommen werden
 
Au, verdammt... Ich hab außerversehen die falsche Codezeile beim erstellen des Posts gelöscht! (Die steht in meinem Programm drin, es funktioniert trotzdem nicht...)

Jetzt stimmt der Code!

Tut mir leid!
 

Neue Themen


Zurück
Oben