【问题标题】:Java Sound API - capturing microphoneJava Sound API - 捕获麦克风
【发布时间】:2011-04-11 23:01:11
【问题描述】:

几天来我一直在阅读 Java 的 Sound API,但我无法理解它。我是一个不错的程序员,只是很难理解 API。

我一直在尝试从我的麦克风捕获音频并实时显示波形图。

我无法捕捉音频,他们在教程中说要这样做,但我似乎无法让它工作。

任何建议和帮助将不胜感激,逐行回答将是理想的。

请,谢谢。

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.TargetDataLine;

public class FindLine {

 public static void main (String[] args){

  AudioFormat format = new AudioFormat(22000,16,2,true,true);
  TargetDataLine line;
  DataLine.Info info = new DataLine.Info(TargetDataLine.class, 
      format); // format is an AudioFormat object
  if (!AudioSystem.isLineSupported(info)) {
      // Handle the error ... 
  }
  // Obtain and open the line.
  try {
      line = (TargetDataLine) AudioSystem.getLine(info);
      line.open(format);
  } catch (LineUnavailableException ex) {
      // Handle the error ... 
  }
 }

}

【问题讨论】:

标签: java audio microphone


【解决方案1】:

这将为您提供操作系统设置的默认设置。

AudioFormat format = new AudioFormat(8000.0f, 16, 1, true, true);
TargetDataLine microphone = AudioSystem.getTargetDataLine(format);

要选择特定的输入设备 (TargetDataLine),最好枚举混音器并过滤所需混音器的名称。

 Mixer.Info[] mixerInfos = AudioSystem.getMixerInfo();
 for (Mixer.Info info: mixerInfos){
  Mixer m = AudioSystem.getMixer(info);
  Line.Info[] lineInfos = m.getSourceLineInfo();
  for (Line.Info lineInfo:lineInfos){
   System.out.println (info.getName()+"---"+lineInfo);
   Line line = m.getLine(lineInfo);
   System.out.println("\t-----"+line);
  }
  lineInfos = m.getTargetLineInfo();
  for (Line.Info lineInfo:lineInfos){
   System.out.println (m+"---"+lineInfo);
   Line line = m.getLine(lineInfo);
   System.out.println("\t-----"+line);

  }

 }

【讨论】:

  • +1 我知道这篇文章很旧,但我想知道您上面提供的代码是否足以从麦克风读取数据
  • 嗨西蒙,此代码仅枚举可用设备。选择所需的行后(可以读取的位置)。您可以按照docs.oracle.com/javase/tutorial/sound/capturing.html 中的建议进行操作
猜你喜欢
  • 1970-01-01
  • 2013-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
  • 2017-04-11
  • 1970-01-01
相关资源
最近更新 更多