java怎么播放不了声音_如何在Java中播放不同的声音?

正如之前的人所说,不支持某些WAV格式.我只想补充一点细节.

我经常遇到以24位或32位编码的WAV,当16位是javax.sound.sampled支持的最大值时.

要了解特定的.wav文件,如果您有Windows,则可以右键单击该文件并检查属性和“摘要”选项卡.我不知道MAC或Linux系统上的等价物是什么.

了解格式后,您可以检查本教程中的代码是否支持:

http://download.oracle.com/javase/tutorial/sound/converters.html

请参阅“编写声音文件”中的讨论,其中介绍了AudioSystem方法“isFileTypeSupported”.

以下是我的PC上支持的格式列表.我通过Eclipse调试器检查LineInfo对象获得了这个列表.我怀疑这些是标准的,但我不确定:

BigEndian = false, PCM_UNSIGNED, channels = 1, bits = 8

BigEndian = false, PCM_SIGNED, channels = 1, bits = 8

BigEndian = false, PCM_SIGNED, channels = 1, bits = 16

BigEndian = true, PCM_SIGNED, channels = 1, bits = 16

BigEndian = false, PCM_UNSIGNED, channels = 2, bits = 8

BigEndian = false, PCM_SIGNED, channels = 2, bits = 8

BigEndian = false, PCM_SIGNED, channels = 2, bits = 16

BigEndian = true, PCM_SIGNED, channels = 2, bits = 16

我使用的大多数WAV文件是上面列表中的倒数第二个:小端,16位,PCM_SIGNED,立体声,以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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值