0

JMFでマイクボリュームコントローラーを入手するにはどうすればよいですか?

これは私が持っているものです:

私はあなたのこの実装コンセプトを試しましたが、ストリームを取得しようとすると、最初のボリュームプロセッサからnullを取得し続けます。これを行う方法は次のとおりです。

// 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:LINEAR、48000.0 Hz、16ビット、ステレオ、LittleEndian、署名付きvolumeProcessorState:実現

プロセッサから出力されるデータはNullです。

コンテンツ記述子!= nullの場合、出力ストリームは取得しますが、ボリュームコントローラーは取得しません。また、nullの場合、コントローラーは取得しますが、ストリームは取得しません。

オーディオマイクデバイスに接続しようとしています

アダム。

4

1 に答える 1

0

マイクにはボリュームコンポーネントがありません!自分で実装する必要があります。

于 2011-04-25T12:55:59.533 に答える