2010-06-13 24 views
0

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.

Répondre

0

Le microphone n'a pas de composant de volume! Doit en mettre un vous-même.