gpt4 book ai didi

java - 使用 Java Sound API 进行多 channel USB 录音?

转载 作者:IT老高 更新时间:2023-10-28 20:38:58 24 4
gpt4 key购买 nike

我正在尝试使用 Snow Leopard 上的 Java Sound 录制/处理来自三个 USB 麦克风的一些音频(但如果可以解决问题,可以切换到 Windows)。问题是,当我尝试使用与 USB 麦克风对应的混音器时,Java Sound 告诉我该线路不受支持。具体来说,它是这样说的……

Available mixers:

Java Sound Audio Engine

USBMIC Serial# 041270067

Built-in Input Built-in Microphone

Soundflower (2ch)

Soundflower (16ch)

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Line unsupported: interface TargetDataLine supporting format PCM_SIGNED 96000.0 Hz, 8 bit, stereo, 2 bytes/frame,

...当我要求它选择 USBMIC 混音器时:

  Mixer mixer = AudioSystem.
getMixer(mixerInfo[1]);

我已尝试将音频格式与麦克风的确切规范(16 位、44100Hz、立体声)匹配,但没有任何区别。

问题出现在这里:

 final TargetDataLine line = (TargetDataLine)
mixer.getLine(info);

看起来混音器和 TargetDataLine 彼此不喜欢。有没有办法让这两者“匹配”并相处融洽?

无可否认,我使用的麦克风有点奇怪。它们被用于名为 SingStar 的卡拉 OK 视频游戏中。麦克风本身具有标准的单声道输入连接器,可插入一个小集线器(两个到一个集线器),将它们转换为单个公 USB 连接器。不过,除了奇怪之外,它们似乎与 Audacity 作为单独的 channel 一起工作得很好,所以用它们进行多 channel 录制显然是可能的,只是在 Java 中可能不行。

我还考虑过使用像 Soundflower 这样的程序来在不同程序之间共享音频。但是,我不确定这是否可行,因为我看不到如何将 USB 麦克风输入到 Soundflower,然后将它们通过管道传输到 Java 中。一个快速的实验告诉我,我可以在 Audacity 中从麦克风录制音频,通过 Soundflower 将其输出,然后在我的 Java 程序中进行处理。不过,我想做的是让这一切都在 Java 中实时发生。

有人熟悉这类问题吗?

最佳答案

我认为一个简单的方法是使用 Soundflower 和 Soundflowerbed。

I can't see how to make the USB mics inputs to Soundflower and then pipe them into a Java.

听起来您已经安装了 Soundflower。 Soundflowerbed 与 Soundflower 位于同一磁盘镜像中,是一个菜单栏应用程序。它允许您在没有内置控件用于选择声音设备的应用程序之间路由声音。从磁盘镜像安装它并单击它运行。

以下所有内容都将使用我的 Echo Audiofire 4,但原则上应该适用于任何音频设备。

使用 Soundflowerbed

打开 Soundflower 并在 Soundflower (16ch) 下勾选您要使用的音频设备。由于我是新用户,我无法发布图片,但它们在下面链接。如果我得到赏金,那么我将编辑帖子以包含内联图像。

1

从这里您将使用 Soundflower (16ch) 作为 Java 声音中的音频输入设备。

创建聚合音频设备

如果这不起作用,另一种解决方法是创建一个聚合设备。打开 Applications > Utilities > Audio Midi Setup 并单击加号以创建新的聚合设备。

2勾选您要聚合的设备。你只想要你的 USBMIC(因为我是一个新的 SO 用户,我每个答案只能发布两张图片,所以接下来的两张在这里链接)。

3

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

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

5

其他选项

最后,我以前没有使用过这个,但 Pulse Audio(谷歌它,我不能在这篇文章中插入更多链接)可能是一个可能的解决方案,可以将你的音频流混合在一起。不过它看起来很重。

关于java - 使用 Java Sound API 进行多 channel USB 录音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4239705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com