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

标签 java audio javasound

<分区>

我正在使用 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/x86 Java: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) 

最佳答案

OS: Mac OS X 10.5.6/i386
Java: 1.5.0_16 (Apple Inc.)

Mixer: Software mixer and synthesizer [Java Sound Audio Engine]
Mixer: No details available [Built-in Microphone]
Mixer: No details available [Built-in Input]

关于java - Java Sound API 在您的计算机上找到哪些输出和录音端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/562273/

相关文章:

c# - 播放整个声音文件 C# - Visual Studio

xcode - 如何在Xcode中查看文件读写日志以进行调试应用

java - JAVA音频数据流0s

java - 这是 java 中用于数据库到数据库之间数据迁移的最佳 API

java - 如何使用 Java 文件中的特定行号读取特定行?

java - 用于记录方法参数的想法实时模板

java - AudioSystem 可以从 Java EE Web 应用程序访问吗?

java - `contract of a class`仅由公共(public)接口(interface)定义吗?

android - Android:更改背景颜色后,声音应用崩溃

java - 无法导入javax.media.*; (包不存在)为什么这么说呢?