到目前为止,我创建的库只有从文件或InputStream
解码的方法。我有ByteBuffer
OGG vorbis数据,我需要将其解码为PCM,而不必先将其写入文件。
答案 0 :(得分:3)
这个问题似乎有2个部分。 1)让Java Sound处理OGG Vorbis格式。 2)避免文件。
对于(1),Java Sound API允许通过服务提供者接口添加额外的格式。我们的想法是将编码器/解码器放入Jar中,并使用标准路径和文件格式来识别进行编码/解码的类。
对于(2),只需将InputStream和所需的AudioFormat提供给AudioSystem静态函数的相关方法即可。例如。 (伪代码..)
byte[] b = byteBuffer.array();
ByteArrayInputStream bais = new ByteArrayInputStream(b);
InputStream is = new InputStream(bais);
AudioInputStrream aisOgg = AudioSystem.getAudioInputStream(is);
AudioInputStrream aisPcm = AudioSystem.
getAudioInputStream(pcmAudioFormat, aisOgg);
答案 1 :(得分:1)
您可以使用ByteArrayInputStream,它是InputStream的子类。 如果您的流非常大,您可能必须写入文件。