如何从ByteBuffer解码OGG vorbis数据?

时间:2010-10-21 12:38:58

标签: java pcm bytebuffer javasound oggvorbis

到目前为止,我创建的库只有从文件或InputStream解码的方法。我有ByteBuffer OGG vorbis数据,我需要将其解码为PCM,而不必先将其写入文件。

2 个答案:

答案 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的子类。 如果您的流非常大,您可能必须写入文件。