【问题标题】:How can I decode OGG vorbis data from a ByteBuffer?如何从 ByteBuffer 解码 OGG vorbis 数据?
【发布时间】:2011-04-28 14:25:50
【问题描述】:

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

【问题讨论】:

    标签: java pcm bytebuffer javasound oggvorbis


    【解决方案1】:

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

    对于 (1),Java 声音 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);
    

    【讨论】:

    • 哦,我不知道我可以从字节数组创建输入流,谢谢,但我真的只有一个问题,pcm 直接进入 openal,java spi 不会碰它。跨度>
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-12-14
      • 2015-07-13
      • 2014-12-28
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      • 2011-07-08
      • 2011-06-12
      • 2011-05-19
      相关资源
      最近更新 更多