2010-06-13 2 views
0

Как получить контроллер громкости микрофона в JMF?Контроллер громкости микрофона JMF

это то, что у меня есть:

Я попробовал эту концепцию реализации твоего, но я получаю нуль от первого процессора тома, когда я пытаюсь получить поток, вот как я это делаю:

// 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); 

это выход Он генерирует:

volumeProcessorState: сконфигурирован формат установлен для отслеживания контроля - com.sun.media.ProcessEngine $ ProcTControl @ 1627c16: линейна, 48000,0 Гц, 16-бит, стерео, LittleEndian, Подпись volumeProcessorState: Реализованный

и выходных данных из процессора является нуль.

Должно быть ясно, что когда дескриптор содержимого! = Null, я получаю выходной поток, но не контроллер тома, а когда он равен нулю, я получаю контроллер, но нет потока.

я пытаюсь подключить к звуковому устройству микрофона

Адам.

ответ

0

Микрофон не имеет компонента громкости! Обязательно реализуйте его самостоятельно.

Смежные вопросы