0

The libraries I founded so far only have methods to decode from a file or InputStream. I have a ByteBuffer with OGG vorbis data and I need it decoded to PCM without having to write it to a file first.

4

2 回答 2

3

这个问题似乎有两个部分。1) 让 Java Sound 处理 OGG Vorbis 格式。2)避免文件。

对于 (1),Java Sound API 允许通过服务提供者接口添加额外的格式。想法是将编码器/解码器放入 Jar 中,并使用标准路径和文件格式来识别进行编码/解码的类。

对于 (2),只需将 InputStream 和所需的 AudioFormat 提供给 AudioSystem 静态函数的相关方法即可。EG(伪代码..)

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);
于 2010-10-21T12:52:53.100 回答
1

您可以使用 ByteArrayInputStream,它是 InputStream 的子类。如果您的流非常大,您可能必须写入文件。

于 2010-10-21T12:55:04.333 回答