Java 将音频强制输入麦克风

Java 将音频强制输入麦克风,java,audio,device,Java,Audio,Device,我正在寻找一种方法来获取音频数据并将其发送到默认的录音设备(如立体声混音)或创建另一个虚拟音频设备。我已经研究了JMF,但我不明白如何将音频发送到设备。请让我知道是否有一个更适合这个项目的库,以及如何实现它 **我想创建一个音频源,以便使用skype等麦克风的程序可以使用它。我按下音板上的一个按钮,它就会向其他呼叫者播放 在标准Java中无法做到这一点,您将不得不分支到本机代码,甚至更糟的是,操作特定的本机代码。例如,您可以使用以下方法查找Windows系统上的音频设备 但是遵循这些说明并不容易

我正在寻找一种方法来获取音频数据并将其发送到默认的录音设备(如立体声混音)或创建另一个虚拟音频设备。我已经研究了JMF,但我不明白如何将音频发送到设备。请让我知道是否有一个更适合这个项目的库,以及如何实现它


**我想创建一个音频源,以便使用skype等麦克风的程序可以使用它。我按下音板上的一个按钮,它就会向其他呼叫者播放

在标准Java中无法做到这一点,您将不得不分支到本机代码,甚至更糟的是,操作特定的本机代码。例如,您可以使用以下方法查找Windows系统上的音频设备

但是遵循这些说明并不容易-首先需要加载
MMDeviceApi.dll
库,并编写自己的
MMDeviceApi.h
和的JNA实现。这将允许您在Windows上访问。该API允许您使用枚举系统上的所有音频设备,包括仅枚举音频输入设备

一旦通过获取了相应的音频端点,您就可以生成一个填充了音频数据的缓冲区,并将该缓冲区发送到设备。但是遵循第二组指令需要加载
Audioses.dll
库,并为此新库编写另一个JNA接口

一旦您完成了所有这些步骤,基本上是以跨语言的方式进行复制,您将最终实现您的功能-但只针对一个操作系统!对于您将支持的每个操作系统,您都需要使用特定于操作系统的功能重新执行此操作


您的问题的最终答案是,没有一个库允许您从Java执行此操作。您可以做到这一点,它只需要您解决Java与系统级资源交互不畅这一事实。实现功能的最简单方法是完全在java上跳过,简单地用较低级别的语言编写一个库,如C++或C++。如果您只想在Windows上实现此功能,您甚至可以不用使用.Net/C。C#与Java非常相似,切换语言也不难。基本上,做你想做的事情的最好方式是通过不同的语言!如果你想要的是坚持java,那是可能的,但是请强烈地考虑其他的选择。你能解释一下将音频数据强制转换成一个音频数据意味着什么吗?创建另一个Java(eclipse)?恐怕我不理解这个问题。请解释一下你到底想做什么。做你想做的事-但我担心它在windows 10下不起作用,因为它使用过时的API-而且它似乎被抛弃了。。。太悲伤了