我正在尋找一種方法來選擇一個特定的麥克風來捕捉聲音。我發現有攪拌器,有isLineSupported(Port.Info.MICROPHONE)==true
。什麼是com.sun.media.sound.PortMixer-s類?
但這些混合器是無證的類com.sun.media.sound.PortMixer
,我無能爲力。
例如,我無法從這些混音器的TargetLines
中讀取數據,因爲它們不是TargetDataLine
類型。
這些調音臺是什麼?只是爲了創造一些混亂?
我正在尋找一種方法來選擇一個特定的麥克風來捕捉聲音。我發現有攪拌器,有isLineSupported(Port.Info.MICROPHONE)==true
。什麼是com.sun.media.sound.PortMixer-s類?
但這些混合器是無證的類com.sun.media.sound.PortMixer
,我無能爲力。
例如,我無法從這些混音器的TargetLines
中讀取數據,因爲它們不是TargetDataLine
類型。
這些調音臺是什麼?只是爲了創造一些混亂?
我希望這個source code可以對你有任何用處。
在仔細觀察後,我認爲這可能有所幫助。
從AudioSystem.getMixerInfo()
mixerDetails.getDescription()
mixerDetails.getName()
上的返回值運行此給出以下:
Direct Audio Device: DirectSound Playback
Primary Sound Driver
Direct Audio Device: DirectSound Playback
Realtek HD Audio output
Direct Audio Device: DirectSound Playback
Microsoft LifeChat LX-3000
Direct Audio Device: DirectSound Capture
Primary Sound Capture Driver
Direct Audio Device: DirectSound Capture
Microsoft LifeChat LX-3000
Direct Audio Device: DirectSound Capture
Realtek HD Audio Input
Software mixer and synthesizer
Java Sound Audio Engine
Port Mixer
Port Realtek HD Audio output
Port Mixer
Port Realtek HD Audio Input
Port Mixer
Port Microsoft LifeChat LX-3000
我有同樣的問題與「端口混頻器「港口微軟LifeChat LX -3000',這是'com.sun.media.sound.PortMixer'的一個實例。在此混頻器調用
AudioSystem.getTargetDataLine(format, mixerInfo)
給出如下:
Exception in thread "main" java.lang.IllegalArgumentException: Line unsupported: interface TargetDataLine
下載源和Eclipse中的調試運行表明,我的這個端口的情況下,它只有javax.sound.sampled中.Port.class可用,因此調用AudioSystem.getTargetDataLine其在幕後做:
DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
Mixer mixer = AudioSystem.getMixer(mixerinfo);
return (TargetDataLine) mixer.getLine(info);
失敗 - 只有使用javax線。 sound.sampled.Port.class在portMixer中可用。在我的港口,那條線是一個揚聲器,但即使不是,內部存儲的目標線似乎都是端口,這不是特別有用。甚至在課堂上的評論都說'只提供端口的混音器'。
因此,無論它用於什麼,它似乎都沒有獲取源/目標行。說實話,我看不到它的用途。我會試着看看你係統上的其他混音器。如果你的是我的,那麼會有一個directsound捕捉,你可以用它來代替。