gpt4 book ai didi

java - Java Sound API 在您的计算机上找到哪些输出和录音端口?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:26:29 24 4
gpt4 key购买 nike

<分区>

我正在使用 Java Sound API ,事实证明,如果我想调整录音音量,我需要对操作系统向 Java 公开的硬件建模。事实证明,所呈现的内容多种多样。

正因为如此,我谦虚地请求任何人能够帮助我在他们的计算机上运行以下程序并发回结果,以便我可以了解那里有什么。

提前感谢任何可以提供帮助的人:-)

import javax.sound.sampled.*;
public class SoundAudit {
public static void main(String[] args) { try {
System.out.println("OS: "+System.getProperty("os.name")+" "+
System.getProperty("os.version")+"/"+
System.getProperty("os.arch")+"\nJava: "+
System.getProperty("java.version")+" ("+
System.getProperty("java.vendor")+")\n");
for (Mixer.Info thisMixerInfo : AudioSystem.getMixerInfo()) {
System.out.println("Mixer: "+thisMixerInfo.getDescription()+
" ["+thisMixerInfo.getName()+"]");
Mixer thisMixer = AudioSystem.getMixer(thisMixerInfo);
for (Line.Info thisLineInfo:thisMixer.getSourceLineInfo()) {
if (thisLineInfo.getLineClass().getName().equals(
"javax.sound.sampled.Port")) {
Line thisLine = thisMixer.getLine(thisLineInfo);
thisLine.open();
System.out.println(" Source Port: "
+thisLineInfo.toString());
for (Control thisControl : thisLine.getControls()) {
System.out.println(AnalyzeControl(thisControl));}
thisLine.close();}}
for (Line.Info thisLineInfo:thisMixer.getTargetLineInfo()) {
if (thisLineInfo.getLineClass().getName().equals(
"javax.sound.sampled.Port")) {
Line thisLine = thisMixer.getLine(thisLineInfo);
thisLine.open();
System.out.println(" Target Port: "
+thisLineInfo.toString());
for (Control thisControl : thisLine.getControls()) {
System.out.println(AnalyzeControl(thisControl));}
thisLine.close();}}}
} catch (Exception e) {e.printStackTrace();}}
public static String AnalyzeControl(Control thisControl) {
String type = thisControl.getType().toString();
if (thisControl instanceof BooleanControl) {
return " Control: "+type+" (boolean)"; }
if (thisControl instanceof CompoundControl) {
System.out.println(" Control: "+type+
" (compound - values below)");
String toReturn = "";
for (Control children:
((CompoundControl)thisControl).getMemberControls()) {
toReturn+=" "+AnalyzeControl(children)+"\n";}
return toReturn.substring(0, toReturn.length()-1);}
if (thisControl instanceof EnumControl) {
return " Control:"+type+" (enum: "+thisControl.toString()+")";}
if (thisControl instanceof FloatControl) {
return " Control: "+type+" (float: from "+
((FloatControl) thisControl).getMinimum()+" to "+
((FloatControl) thisControl).getMaximum()+")";}
return " Control: unknown type";}
}

应用程序所做的只是打印出一行关于操作系统的信息,一行关于 JVM 的信息,以及几行关于发现的可能与记录硬件有关的硬件信息的信息。例如,在我工作的电脑上,我得到以下信息:

操作系统:Windows XP 5.1/x86Java:1.6.0_07(Sun Microsystems Inc.)

Mixer: Direct Audio Device: DirectSound Playback [Primary Sound Driver]Mixer: Direct Audio Device: DirectSound Playback [SoundMAX HD Audio]Mixer: Direct Audio Device: DirectSound Capture [Primary Sound Capture Driver]Mixer: Direct Audio Device: DirectSound Capture [SoundMAX HD Audio]Mixer: Software mixer and synthesizer [Java Sound Audio Engine]Mixer: Port Mixer [Port SoundMAX HD Audio]  Source Port: MICROPHONE source port    Control: Microphone (compound - values below)      Control: Select (boolean)      Control: Microphone Boost (boolean)      Control: Front panel microphone (boolean)      Control: Volume (float: from 0.0 to 1.0)  Source Port: LINE_IN source port    Control: Line In (compound - values below)      Control: Select (boolean)      Control: Volume (float: from 0.0 to 1.0)      Control: Balance (float: from -1.0 to 1.0) 

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com