Я пытаюсь записать / обработать звук с трех USB-микрофонов с помощью Java Sound на Snow Leopard (но могу переключиться на Windows, если это все исправит).Проблема в том, что когда я пытаюсь использовать микшер, который соответствует USB-микрофону, Java Sound говорит мне, что линия не поддерживается.В частности, это говорит об этом ...
Доступные микшеры:
Java Sound Audio Engine
USBMIC Serial # 041270067
Встроенный входВстроенный микрофон
Soundflower (2 канала)
Soundflower (16 каналов)
Исключение в потоке "AWT-EventQueue-0" java.lang.IllegalArgumentException: строка не поддерживается: интерфейсTargetDataLine поддерживает формат PCM_SIGNED 96000,0 Гц, 8 бит, стерео, 2 байта / кадр,
... когда я прошу его выбрать микшер USBMIC:
Mixer mixer = AudioSystem.
getMixer(mixerInfo[1]);
У меня естьпопытался сопоставить аудиоформат с точными характеристиками микрофонов (16-бит, 44100 Гц, стерео), и это не имело никакого значения.
Проблема возникает здесь:
final TargetDataLine line = (TargetDataLine)
mixer.getLine(info);
Казалось бы, микшер и TargetDataLine не похожи друг на друга.Есть ли какой-нибудь способ заставить этих двоих «совпадать» и ладить?
Микрофоны, которые я использую, по общему признанию немного странны.Они были сделаны для использования в видеоигре для караоке под названием SingStar.Сами микрофоны имеют стандартные моно линейные разъемы, которые подключаются к маленькому концентратору (два к концентратору), который преобразует их в один мужской USB-разъем.Несмотря на странность, они, кажется, прекрасно работают с Audacity как отдельными каналами, поэтому многоканальная запись с ними явно возможна, просто возможно, не на Java.
Я также рассматривал возможность использования программы, подобной Soundflower, которая делит звук между различными программами.Тем не менее, я не уверен, что это сработает, поскольку я не могу понять, как сделать входы микрофонов USB для Soundflower, а затем направить их в Java.Быстрый эксперимент показал мне, что я могу записывать аудио в Audacity с микрофонов, передавать его через Soundflower, а затем обрабатывать в своей Java-программе.Тем не менее, я хотел бы, чтобы все это происходило в реальном времени на Java.
Кто-нибудь знаком с такой проблемой?