当前位置: 首页 > 面试题库 >

Java Sound API-捕获麦克风

毕浩渺
2023-03-14
问题内容

我已经读了几天的Java声音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 ... 
  }
 }

}

问题答案:

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

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);

  }

 }


 类似资料:
  • 概述 100 mm铝制麦克纳姆轮组(2 x左,2 x右)包括2个右车轮和2个左车轮。每个车轮由9个滚轮组成,可以独立驱动。麦克纳姆轮让你的机器人不仅可以前后移动,而且可以左右平移。有了4个麦克纳姆轮,你就可以造出一辆可以向各个方向移动的汽车/机器人。该组件的每个轮子都配有一个兼容安装轮毂4mm轴连接器,因此它很容易与我们的编码器电机或步进电机配合。 产品特性 麦克纳姆轮允许机器人实现全方位运动,同

  • 我想直播Android麦克风,可以使用VLC播放器等听到。 Playstore主要提供IP摄像头应用,但这些应用是通过内部网络实现的。我想在互联网上播放流媒体。 可能吗? 我尝试了以下代码片段,但目前不起作用: 在VLC播放器前,我试着听(媒体)- 还有别的办法吗?

  • 播放音符 播放声音 录制 文字转语音

  • 问题内容: 我正在尝试通过Java访问麦克风的级别。我不需要录制任何东西,我只想知道声音水平的相对范围。 这可以实时吗? 如果这是不可能的,那么这可能会起作用:当电平超过某个值时开始记录,当电平下降到一定水平以下一段时间后停止录制四分之一秒的位并读取它的音量,如果它在阈值以下停止录音。 提前致谢 问题答案: 您可以通过Sound API访问麦克风,但不会给您简单的响度级别。您只需要捕获数据并就其声

  • 更新时间:2018-09-17 11:37:10 功能说明 高感度麦克风模块。rf13 是一款高感度麦克风模块,这里我们用该模块采集周围环境声音的大小。 硬件资源 1.ESP32Kit 开发板 2.RF13 模块 3.接线 rf13 GND 引脚接 esp32Kit GND 引脚 rf13 VCC 引脚接 esp32Kit 3.3V 引脚 rf13 AO 引脚接 esp32Kit IO34 引脚

  • 基本没问八股 1:自我介绍 2:单例模式(答的还不错),给个例子 3:面向对象特性,好处 4:抽象的概念(这问题太抽象了,答得像坨屎) 5:验证码登陆如何实现,给个思路 6:二维码登录如何实现,给个思路 7:抽象类,给个例子 8:数据库分页查询,(差点忘了limit的参数,后面想起来告诉面试官了) 大概就这些吧,基本没八股,面试官说了很多次让我用自己的话说,不要生搬硬套。 中途还被隔壁研究生实验室