我至今成立的库只有方法来从一个文件或解码InputStream
。 我有一个ByteBuffer
具有的Ogg Vorbis的数据,我需要它解码为PCM,而不必首先将它写入文件。
Answer 1:
似乎有2份这一问题。 1)获取Java声音处理的Ogg Vorbis格式。 2)避免文件。
对于(1)中,Java声音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);
Answer 2:
您可以使用ByteArrayInputStream的是InputStream的一个子类。 如果您的流是非常大的,你可能要写入文件。
文章来源: How can I decode OGG vorbis data from a ByteBuffer?