6

チュートリアルhttp://download.oracle.com/javase/tutorial/sound/capturing.html では、マイクの選択方法について説明していません。

次のコードでミキサーを列挙しています

System.out.println("Searching for microphones");
for(Mixer.Info mixerinfo : AudioSystem.getMixerInfo()) {
    mixer = AudioSystem.getMixer(mixerinfo); 

    //System.out.println(mixerinfo.toString());
    if( mixer.isLineSupported(Port.Info.MICROPHONE) ) {
        mixers.add(mixer);
        System.out.println(Integer.toString(mixers.size()) + ": " + mixerinfo.toString());
    }
}

すなわち、マイク入力の存在によって。しかし、次に、ミキサーを使用すると、行を読み取ることができません。

を使用するmixer.getTargetLineInfo()と、 one の配列を受け取りますInfo。これを に渡すとmixer.getLine、タイプ のオブジェクトが返されますがcom.sun.media.sound.PortMixer$PortMixerPort、これは文書化されていません。

使用するmixer.getTargetLines()と、空の配列が得られます。

自分で作成DataLine.Infoしてミキサーに渡すと、getLineサポートされていない例外が発生します。

じゃあ何をすればいいの?

4

2 に答える 2

2

レフト フィールドの提案。

AudioPlotPanelまたは単純なRMS volumeのラインに沿ったコンポーネントで、各サウンド ラインの視覚的なレンダリングを提供します。ユーザーがどのサウンド ラインを介してヨーデルを演奏しているかを理解するのに、あまり時間がかからないようにしてください。;)

于 2011-06-07T13:37:04.457 に答える
0

私は同じことをしようとしています。私はまだ良い解決策を見つけていませんが、Port ミキサーから DataLine を取得しようとしているため、うまくいきません。私がそれを理解するならば、私はあなたに知らせるでしょう.

于 2013-04-17T13:08:32.887 に答える