使用Java,我认为Java Sound API是否可以实时录制系统音频?我的意思是从系统错误通知到iTunes和chrome。
答案 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
来从调音台接收数据。
现在,要记录您必须保存此数据。这涉及获取数据并将缓冲区写入文件。如何执行此操作当然取决于您希望使用的文件格式。