如何在Java中播放不同的声音?
我想在
java中播放声音……
private Clip clip; public Sound(String filename) { try{ AudioInputStream ais; ais = AudioSystem.getAudioInputStream(this.getClass().getResource(filename)); clip = AudioSystem.getClip(); clip.open(ais); }catch(Exception e){e.printStackTrace();} } public void playSFX() { clip.stop(); clip.setFramePosition(0); clip.start(); } 我在.wav文件中使用上面的代码.我可以成功播放某些.wav片段;但我无法播放其他.wav片段.我究竟做错了什么? 解决方法
正如之前的人所说,不支持某些WAV格式.我只想补充一点细节.
我经常遇到以24位或32位编码的WAV,当16位是javax.sound.sampled支持的最大值时. 要了解特定的.wav文件,如果您有Windows,则可以右键单击该文件并检查属性和“摘要”选项卡.我不知道MAC或Linux系统上的等价物是什么. 了解格式后,您可以检查本教程中的代码是否支持: 以下是我的PC上支持的格式列表.我通过Eclipse调试器检查LineInfo对象获得了这个列表.我怀疑这些是标准的,但我不确定: BigEndian = false,PCM_UNSIGNED,channels = 1,bits = 8 BigEndian = false,PCM_SIGNED,bits = 16 BigEndian = true,bits = 16 BigEndian = false,channels = 2,bits = 16 我使用的大多数WAV文件是上面列表中的倒数第二个:小端,16位,立体声,以44100 fps编码. 以下代码也可以帮助您确定.wav文件的格式. InputStream inStream = YourClass.class.getResourceAsStream("YourSound.wav"); AudioInputStream aiStream = AudioSystem.getAudioInputStream(inStream); AudioFormat audioFmt = aiStream.getFormat(); DataLine.Info info = new DataLine.Info(SourceDataLine.class,audioFmt); System.out.println(info); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 使用Spring的注解方式实现AOP实例
- java – 生产中的ServletRequestWrapper或ServletResponseW
- java – 滑入加载到SimpleTarget中不遵守指定的宽度和高度
- 如何对使用ProcessBuilder和Process的Java方法进行单元测试
- 具有过滤条件工作流程的Java 8流
- java – 使用String.valueOf(myString)会变慢吗?
- Hibernate cache.use_minimal_puts属性:判断是否优化二级缓
- java – 未捕获的异常处理程序中的未捕获异常
- java – AWT XOR SWING在一个应用程序中?
- AQS(队列同步器)