通过Java录制系统音频

时间:2016-01-08 13:07:45

标签: java

使用Java,我认为Java Sound API是否可以实时录制系统音频?我的意思是从系统错误通知到iTunes和chrome。

1 个答案:

答案 0 :(得分:0)

您需要将应用程序连接到主声音驱动程序(在系统上提供输出的驱动程序)。通常这个驱动程序可以更改,并且提供能够切换驱动程序的代码是一个好主意。

完成后,您需要将声音数据的缓冲区作为输入并保存。

一个好的起点是Oracle阅读Java Sound API Tutorials

通常,您需要先抓取正确的音频设备:

  

获取调音台 (取自Accessing Audio System Resources

     

通常,使用Java Sound API的程序需要做的第一件事就是获得一个混音器,或至少一行混音器,以便您可以将声音输入或输出计算机。您的程序可能需要特定类型的混音器,或者您可能希望显示所有可用混音器的列表,以便用户可以选择一个。在任何一种情况下,您都需要了解安装了哪种混合器。 AudioSystem提供以下方法:

     

static Mixer.Info[] getMixerInfo()

     

此方法返回的每个Mixer.Info对象都标识了一种已安装的混音器。 (通常系统最多只有一个给定类型的混合器。如果碰巧有多个给定类型,则返回的数组对于该类型仍然只有一个Mixer.Info。)应用程序可以迭代Mixer.Info对象根据需要找到合适的对象。 Mixer.Info包含以下字符串以标识混音器的类型:

     
      
  • 名称

  •   
  •   
  • 供应商

  •   
  • 描述

  •   

我建议您访问整个设备列表,以便在运行时选择正确的设备。在编译时,您无法轻易地知道(如果有的话)哪个设备是正确的,尤其是在部署应用程序时。

之后,您需要创建一个TargetDataLine来从调音台接收数据。

现在,要记录您必须保存此数据。这涉及获取数据并将缓冲区写入文件。如何执行此操作当然取决于您希望使用的文件格式。