我怎样才能解码来自字节缓冲区的Ogg Vorbis数据?(How can I decode OGG

2019-10-28 14:05发布

我至今成立的库只有方法来从一个文件或解码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?