我正在尝试将WAV文件(以及将来的MP3和Ogg)文件作为Java中的浮点数组读取,就像libsndfile一样在C.
我正在查看javax.sampled包中的各种文档,但是我找不到关于如何做到这一点的明确解释;如果可能的话,我想避免重复使用外部库。
有什么建议吗?
答案 0 :(得分:2)
JavaSound只会让您对WAV文件中嵌入的声音数据进行“原始”访问,例如: 8位无符号PCM或16位有符号PCM数据(如果您的WAV文件是PCM编码的)。在任何一种情况下,每个样本的值都在0到255或-32768到32767的范围内,你只需要移动范围以适应-1f到1f。
您应该使用适当的源(File,InputStream或URL)从AudioSystem.getAudioInputStream(...)
开始,检查格式以检查样本大小和通道数,然后您可以从中读取和转换PCM编码数据相应的AudioInputStream。
答案 1 :(得分:0)
找到了这个页面:
http://www.jsresources.org/faq_audio.html
特别参见9.4:如何从字节数组中重建样本值?
通过比较java的输出与c ++(libsndfile)和matlab(wavread),它可以正常工作。 当我有时间时,我将把代码放在m github帐户上