Comment obtenir le contrôleur de volume de microphone dans JMF?Contrôleur de volume de microphone JMF
c'est ce que j'ai:
J'ai essayé ce concept de mise en œuvre de la vôtre, mais je continue à avoir une valeur nulle du premier processeur de volume lorsque je tente d'obtenir le flux, voici comment je le fais:
// the device is the media device specifically audio
Processor processorForVolume = Manager.createProcessor(device.getLocator());
// wait until configured
ProcessorStates newState = new ProcessorStateListener(Processor.Configured).waitForProcessorState(processorForVolume);
System.out.println("volumeProcessorState: "+newState);
// setting the content descriptor to null - read in another thread this allows to get the gain control
processorForVolume.setContentDescriptor(null);
// set the track control format to one supported by the device and the track control.
// I didn't match it to an RTP allowed format, but I don't think this has anything to do with it...
TrackControl[] trackControls = processorForVolume.getTrackControls();
if (trackControls.length == 0)
throw new MC_Exception("No track controls where found for this device:", new Object[]{device});
for (TrackControl control : trackControls)
trackManipulator.manipulateTrackControls(control);
// wait until the processor is realized
newState = new ProcessorStateListener(Controller.Realized).waitForProcessorState(processorForVolume);
System.out.println("volumeProcessorState: "+newState);
// receives the gain control
micVolumeController = processorForVolume.getGainControl();
// cannot get the output stream to process further... any suggestions?
processor = Manager.createProcessor(processorForVolume.getDataOutput());
new ProcessorStateListener(Processor.Configured).waitForProcessorState(processor);
processor.setContentDescriptor(DeviceCapturingManager.RAW_RTP);
new ProcessorStateListener(Controller.Realized).waitForProcessorState(processor);
c'est la sortie Il génère:
volumeProcessorState: configuré Format définie sur la piste de contrôle - com.sun.media.ProcessEngine $ ProcTControl @ 1627c16: LINEAR, 48000,0 Hz, 16 bits, stéréo, littleEndian, Signé volumeProcessorState: Réalisés
et la sortie de données du processeur est nul.
Je devrais préciser que lorsque le descripteur de contenu! = Null, je reçois un flux de sortie mais pas le contrôleur de volume, et le quand il est nul je reçois le contrôleur, mais pas de flux.
J'essaie de se connecter à un dispositif de microphone audio
Adam.