2012-02-21 36 views
3

我有一张带有多个输出的声卡,并使用ALSA将它们映射到2个独立的立体声通道。配置工作正常,并允许我,例如扬声器测试播放音频。通过Java SoundSystem使用ALSA pcm输出

我现在想使用AudioSystem API在Java程序中使用这2个立体声输出。但是,stereo1和stereo2不会'使用MixerInfo显示。

我真的不明白Java是如何决定使用AudioSystem API公开哪些“设备”的。我目前正在Ubuntu 11.10系统上进行测试。

这是所使用的asound.conf:

#/etc/asound.conf 
pcm_slave.fourchannels { 
     pcm "hw:0,0"   
     channels 4 
} 
pcm.stereo1 { 
     type plug 
     slave.pcm { 
       type dshare 
       ipc_key 87882222 
       slave fourchannels 
       bindings [ 0 1 ] 
     } 
} 
pcm.stereo2 { 
     type plug 
     slave.pcm { 
       type dshare 
       ipc_key 87882222 
       slave fourchannels 
       bindings [ 2 3 ] 
     } 
} 

这是我用来显示可用的输入和输出的代码:

Mixer.Info[] mixers = AudioSystem.getMixerInfo(); 
for (Mixer.Info mixerInfo : mixers) { 
    System.out.println("Found Mixer: " + mixerInfo); 
    Mixer m = AudioSystem.getMixer(mixerInfo); 

    Line.Info[] sourceLines = m.getSourceLineInfo(); 
    for (Line.Info li : sourceLines) { 
     System.out.println(" Found source line: " + li); 
     try { 
      m.open(); 
     } catch (LineUnavailableException e) { 
      System.out.println("  Line unavailable."); 
     } 
    } 

    Line.Info[] targetLines = m.getTargetLineInfo(); 
    for (Line.Info li : targetLines) { 
     System.out.println(" Found source line: " + li); 
     try { 
      m.open(); 
     } catch (LineUnavailableException e) { 
      System.out.println("  Line unavailable."); 
     } 
    } 
} 
+1

我们可以看一下您正在使用,以显示你的混频器的代码? – 2012-02-22 01:59:15

+0

完成,见上面! – nanoman 2012-02-22 08:43:55

+0

看起来不错。嗯。这个代码的输出如何?我承认我对nix系统声音了解不多,可能不会有太大的帮助。但其他人也许可以使用这些信息。我记得有一个线索与独占音频线的应用程序之一有关,而不是让Java到达它们。但我无法理解(理解)整个交易所。如果你想看看那个主题,那就在JGO:http://www.java-gaming.org/topics/javasound-on-linux/24686/view.html有几个对ALSA的参考。 – 2012-02-22 21:20:40

回答