无法在Java中管理相同的麦克风进行录制

时间:2014-08-22 07:50:42

标签: java record microphone javasound

我想知道是否可以区分两个相同的USB麦克风(相同的供应商,相同的型号,相同的名称)并为每个麦克风找到唯一的标识符。

到目前为止,我所尝试的是getMixerInfo()方法适用于具有一些变体的混音器:

    // Setup a Line.Info instance specifically of the TargetDataLine class.
    Line.Info targetDLInfo = new Line.Info(TargetDataLine.class);

    // Get all the mixers from the Java AudioSystem
    Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();

    // Iterate through each mixer and see if it supports TargetDataLine
    for (int cnt = 0; cnt < mixerInfo.length; cnt++) {

        // Get a temporary instance of the current mixer
        Mixer currentMixer = AudioSystem.getMixer(mixerInfo[cnt]);

        if (currentMixer.isLineSupported(targetDLInfo)) {
            // This mixer supports recording 
                System.out.println("MixerInfo: " + mixerInfo[cnt]);
                System.out.println("Current mixer supports recording: \n"
                        + "name: " + currentMixer.getMixerInfo().getName() + "\n"
                        + "vendor: " + currentMixer.getMixerInfo().getVendor() + "\n"
                        + "version: " + currentMixer.getMixerInfo().getVersion() + "\n"
                        + "description: " + currentMixer.getMixerInfo().getDescription() + "\n"
                        + "Source Line Info: " + Arrays.toString(currentMixer.getSourceLineInfo()) + "\n");
        }
    }

对于我的麦克风,这输出:

MixerInfo: MicrophoneName [plughw:2,0], version 3.8.0-44-generic
Current mixer supports recording: 
name: MicrophoneName [plughw:2,0]
vendor: ALSA (http://www.alsa-project.org)
version: 3.8.0-44-generic
description: Direct Audio Device: Producer MicrophoneName, USB Audio, USB Audio
Source Line Info: []

MixerInfo: MicrophoneName_1 [plughw:3,0], version 3.8.0-44-generic
Current mixer supports recording: 
name: MicrophoneName_1 [plughw:3,0]
vendor: ALSA (http://www.alsa-project.org)
version: 3.8.0-44-generic
description: Direct Audio Device: Producer MicrophoneName, USB Audio, USB Audio
Source Line Info: []

我没有从广告原因中提供MicrophoneNameProducer的实际名称,但我希望您能理解。如您所见,对它们使用相同的名称会自动将一个名称更改为MicrophonaName_1。它发生在最后插入的那个,它也不依赖于USB端口。

我正在为每个设备寻找独特的东西,例如每个设备不同的MAC地址,并且不会随时间变化。我将使用它从这些唯一标识符列表中选择所需的麦克风。有没有办法在Java中找到它?或者也许是一个让我有可能使用其独特性的演练?

0 个答案:

没有答案