6

当执行以下方法时:

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.
4

2 回答 2

3

这可能是什么原因?

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 位就是“主录音质量”。

于 2013-04-06T23:31:36.490 回答
0

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

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

于 2021-01-20T01:16:30.223 回答