javax.sound.sampled.LineUnavailableException:我得到这个异常是什么?

时间:2013-04-06 14:45:11

标签: java javasound

调用以下方法:

private void beep_player_1() {
    try {
        //clip_Player_2.close();
        clip_Player_1 = AudioSystem.getClip();
        ais = AudioSystem.getAudioInputStream(new File(Constants.Player1_Default_Tone)); // PATH FOR THE .WAV FILE
        clip_Player_1.open(ais);
        clip_Player_1.loop(0); // PLAY ONCE
    }catch(Exception exc) {
        System.out.println(exc);
     }
}
抛出

LineUnavailableException 。这可能是什么原因?

javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 24 bit, stereo, 6 bytes/frame, little-endian not supported.

2 个答案:

答案 0 :(得分:2)

  

这可能是什么原因?

javax.sound.sampled.LineUnavailableException: line with format 
  PCM_SIGNED 44100.0 Hz, 
  24 bit, 
  stereo, 
  6 bytes/frame, 
  little-endian not supported.

我不知道其余的,但我遇到的大多数PC使用8位或16位“位深度”,而使用24位。它表示非常精细的录音质量。如果8位是“电话质量”而16位是“CD质量”,则24位将是“主记录质量”。

答案 1 :(得分:0)

这是一个已知问题,但仅适用于 Windows。 Java 无法识别 Windows 上的声音设备播放 24 位数据(或记录 24 位数据)的能力。 Java 可以很好地处理 Linux 和 Mac 上的 24 位。我在这里和其他地方都看到过关于此的其他主题,有些是 2012 年开始的。

指出这个问题的人并不多。我只在这里看到了几个线程,一个在 Oracle 上。我没有看到解决方法(除了将声音数据转换为 16 位),也没有看到任何修复它的努力。