我正在尝试记录/处理三个带有Java声音的usb麦克风上的一些音频(但如果它修复了问题,可以切换到Windows )。问题是,当我尝试使用与usb麦克风相对应的混频器时,Java声音告诉我这条线是不支持的。特别是上面写着..。
可用搅拌机: Java音频引擎 美国Serial# 041270067 内置输入式麦克风 声波花(2ch) 声波花(16) 线程“AWT 0”java.lang.IllegalArgumentException中的异常:不支持的行:接口TargetDataLine支持格式PCM_SIGNED 96000.0 Hz,8位,立体声,2字节/帧,
...when我要求它选择USBMIC混频器:
Mixer mixer = AudioSystem.
getMixer(mixerInfo[1]);我试着将音频格式与麦克风(16位,44100赫兹,立体声)的精确规格相匹配,但没有产生任何不同。
问题就出现在这里:
final TargetDataLine line = (TargetDataLine)
mixer.getLine(info);似乎混频器和TargetDataLine不喜欢对方。有什么办法可以让这两个人“匹配”和相处吗?
诚然,我使用的麦克风有点奇怪。它们被制成用于一款名为SingStar的卡拉OK电子游戏。mics本身有标准的单线连接器,可以插入到一个小集线器(两个到一个集线器)中,将它们转换成一个单一的男性usb连接器。不过,撇开奇怪之处不说,它们似乎完全可以用Audacity作为单独的频道进行录制,因此使用它们进行多声道记录显然是可能的,只是在Java中就不行了。
我还考虑过使用一个类似于声音花的程序,它可以在不同的程序之间共享音频。但是,我不确定这是否会起作用,因为我看不出如何将USB输入到Soundflower,然后将它们输送到Java中。一个快速的实验告诉我,我可以从mics录下Audity中的音频,通过Sound花将其播放出来,然后在我的Java程序中进行处理。不过,我想做的是让这一切在Java中实时发生。
有谁知道这种问题吗?
发布于 2011-10-15 20:35:27
我认为一个简单的方法是使用声波花和声波花坛。
我看不出如何将USB输入输入到Soundflower,然后将它们导入Java。
听起来好像你已经安装了声波花。Soundflowerbed与Soundflower在同一个磁盘映像中找到,是一个菜单栏应用程序。它允许您在没有内置用于选择声音设备的控件的应用程序之间路由声音。从磁盘映像中安装它并单击它以运行。
以下所有将使用我的回声音频4,但原则上应该工作在任何音频设备。
使用声波花坛
打开“声音花”并在“声音花”(16 to )下勾选要使用的音频设备。由于我是一个新的用户,我不能张贴图片,但他们是链接在下面。如果我得到赏金,那么我将编辑文章,以包括图像内联。

从这里开始,您将使用声波(16 in )作为Java声音中的音频输入设备。
创建聚合音频设备
如果不能解决这个问题,另一种解决方法是创建一个聚合设备。打开应用程序>实用程序> Audio Midi安装程序,然后单击加号创建新的聚合设备。

勾选要聚合的设备。您只需要您的USBMIC (因为我是一个新用户,所以我只能在每个回答中发布两个图片,因此下面的两个图片在这里链接)。

可能会给你带来麻烦的关键部分是设备上的时钟。如果您选择Mac作为时钟源,那么这可能会更稳定。

如果这仍然不起作用,那么您可以尝试将Mac内置音频添加到聚合设备中,并通过右键单击要成为主设备的设备使其成为主时钟。

其他选项
最后,我以前没有使用过这个,但是Pulse (Google它,我不能在这篇文章中插入更多的链接)可能是一个可能的解决方案,把你的音频流混合在一起。不过看起来挺重的。
发布于 2011-10-15 20:04:18
根据我的研究,特别是像这这样的线程,你使用的麦克风最有可能导致问题。线程声明,话筒甚至是一个问题,当涉及到切换游戏,所以我猜它将是一个问题时,切换平台,也。
我的建议是-如果你还没有尝试过-使用不同的麦克风!我遇到的大多数麦克风都有特殊的芯片控制器,可以将数据转换成与游戏系统兼容的数据。如果你在电脑的操作系统上使用这个,你可能会得到一些非常奇怪的效果,而在游戏系统中,比如Playstation或其他游戏系统,你就不会得到这样的效果。
希望这能帮上忙!编码愉快!
发布于 2013-04-17 12:53:49
AudioFormat与TargetDataLine支持的格式不匹配。我不知道这是否是一个错误,但抛出的异常显示,TargetDataLine支持8位音频,就在下面,您说您使用的是16位AudioFormat。它还支持每帧最多2字节,以多快和多大的块来读取数据?对不起,如果这没有帮助,但我想我应该指出这一点,以防它被忽视。
https://stackoverflow.com/questions/4239705
复制相似问题