给定一个调用的InputStream,其中包含压缩格式的音频数据(如MP3或OGG),我希望创建一个包含输入数据的WAV转换的字节数组.不幸的是,如果您尝试这样做,JavaSound会向您发出以下错误:
java.io.IOException: stream length not specified
我设法通过将wav写入临时文件然后将其读回来使其工作,如下所示:
AudioInputStream source = AudioSystem.getAudioInputStream(new BufferedInputStream(in,1024)); AudioInputStream pcm = AudioSystem.getAudioInputStream(AudioFormat.Encoding.PCM_SIGNED,source); AudioInputStream ulaw = AudioSystem.getAudioInputStream(AudioFormat.Encoding.ULAW,pcm); File tempFile = File.createTempFile("wav","tmp"); AudioSystem.write(ulaw,AudioFileFormat.Type.WAVE,tempFile); // The filetoByteArray() method reads the file // into a byte array; omitted for brevity byte[] bytes = filetoByteArray(tempFile); tempFile.delete(); return bytes;
这显然不太理想.有没有更好的办法?
解决方法
原文地址:https://www.jb51.cc/java/129085.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。