【问题标题】:javax.sound.sampled.LineUnavailableException : Why am I getting this exception?javax.sound.sampled.LineUnavailableException :为什么我会收到此异常?
【发布时间】:2021-01-20 09:16:30
【问题描述】:

当执行以下方法时:

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.

【问题讨论】:

    标签: java javasound


    【解决方案1】:

    这可能是什么原因?

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

    【讨论】:

    • 你知道如果我改变声音片段,它就可以了!但我不明白这一点。
    • 前一个文件的比特率为2116kbps,新文件的比特率为1411kbps。有什么区别吗?
    • PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian : 工作格式
    • 事情就是这样。 PC 通常设置为处理 16 位声音,因此 Java Sound 不支持 24 位,仅支持 8 位和 16 位。
    • 如果有人仍然对此感兴趣:有很多在线 wav 转换器从 x 位到 16 位 .wav 文件
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-11-08
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      • 2014-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多