【发布时间】: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 说 “当请求的行已被另一个应用程序使用时,这种情况最常见”,并且您的代码中有两行。我只是想知道这是来自第一线还是第二线开放..