【发布时间】:2018-03-25 14:32:35
【问题描述】:
我正在开发一个播放、暂停和停止音乐的系统。我正在用 2 个不同的 wav 文件对此进行测试,一个长度为 45 秒,另一个长度为 3:35 分钟。我遇到的问题是 45 秒的 wav 文件播放没有任何问题。另一方面,3:35 分钟的 wav 文件不会加载。 java中的wav文件是否有最大时间限制,或者wav文件是否可能损坏?它在 Windows 应用程序“groove 音乐”上播放没有任何问题。
我搜索了堆栈溢出,但似乎没有人遇到与我相同的问题,一个 wav 文件正在播放,另一个没有。
我得到的错误代码:
javax.sound.sampled.LineUnavailableException: line with format PCM_FLOAT 44100.0 Hz, 32 bit, stereo, 8 bytes/frame, not supported.
我用来播放wav文件的方法。
public static void playAudio(String name) {
try {
System.out.println("NOTE: Playing audio");
clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(
Engine.class.getResourceAsStream("/Audio/" + name));
clip.open(inputStream);
clip.start();
} catch(Exception e) {
System.out.println("ERROR: Failed to load audio");
}
}
调用方法
Engine.playAudio("easy2.wav");
“src/Audio/”文件夹中的wav文件图片
【问题讨论】:
-
使用
e.printStackTrace()打印异常堆栈跟踪,并找出 wav 文件的实际格式。然后请将该信息编辑到您的问题中。 (Wav 只是一种容器格式,几乎可以使用任何编码,甚至是 mp3。) -
如何找出 wav 文件的编码?
-
当你看到一个位深为 32 位的音频文件时,它应该抛出一个危险信号,因为人类听觉的极限在 16 到 24 位之间……32 位提供的粒度级别蝙蝠很可能会使用比特或其他一些深奥的目的