【问题标题】:Java Sound format not supported不支持 Java 声音格式
【发布时间】:2012-08-08 13:41:40
【问题描述】:

使用以下代码时:http://pastebin.com/5iVnttiP

我收到此错误:

javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 16000.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian not supported.
    at com.sun.media.sound.DirectAudioDevice$DirectDL.implOpen(Unknown Source)
    at com.sun.media.sound.AbstractDataLine.open(Unknown Source)
    at com.sun.media.sound.AbstractDataLine.open(Unknown Source)
    at com.AIComputer.model.Recorder.<init>(Recorder.java:124)
    at com.AIComputer.AIComputer.main(AIComputer.java:7)

现在我做了一些研究,发现并非所有声卡都支持每种格式,但是在运行此演示时:http://java.sun.com/products/java-media/sound/samples/JavaSoundDemo/ 我设法使用完全相同的参数(线性、16000、16、有符号、小端、立体声)制作了录音。

我不知道我在这里做错了什么(也因为我还是 Java 编码的初学者)。

任何帮助将不胜感激!

【问题讨论】:

  • 我认为我从未使用过 AudioFormat 构造函数。我觉得他们要求采样率和帧率很奇怪——这是多余的和模棱两可的。尝试其他构造函数,看看是否可行。
  • 你有我的例子吗?正如我所说,我只是 Java 的初学者。
  • 还有一个构造函数:AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian) 试试 AudioFormat(16000, 2, true, false);
  • 第一次eclipse给出了必须添加采样率的错误,这样做并再次运行程序将导致与上述相同的错误。
  • 你能说出这个异常是从你的代码的哪一行抛出的吗? The docs of LineUnavailableException“当请求的行已被另一个应用程序使用时,这种情况最常见”,并且您的代码中有两行。我只是想知道这是来自第一线还是第二线开放..

标签: java audio recording


【解决方案1】:

你能说出这个异常是从你的代码的哪一行抛出的吗?

LineUnavailableException 的docs 表示

当请求的线路已被另一个应用程序使用时,最常出现这种情况。

您在代码中打开了两行代码。当您尝试打开第二个时,第一个的存在会阻止它。

【讨论】:

  • @xorinzor 那么你到底需要做些什么改变呢?
  • @trusktr 我想是在第 131 行,我尝试打开同一个设备两次
  • @xorinzor 哦,当然。谢谢。我最终使用了令人惊叹的 Beads 声音库(beadsproject.net)。它解决了所有问题(虽然我只是播放声音,而不是录音)。
猜你喜欢
  • 1970-01-01
  • 2019-05-17
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
  • 2011-04-20
  • 1970-01-01
相关资源
最近更新 更多