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.
问问题
2350 次
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 回答