【发布时间】:2011-04-28 14:25:50
【问题描述】:
到目前为止,我创建的库只有从文件或InputStream 解码的方法。我有一个带有 OGG vorbis 数据的 ByteBuffer,我需要将其解码为 PCM,而无需先将其写入文件。
【问题讨论】:
标签: java pcm bytebuffer javasound oggvorbis
到目前为止,我创建的库只有从文件或InputStream 解码的方法。我有一个带有 OGG vorbis 数据的 ByteBuffer,我需要将其解码为 PCM,而无需先将其写入文件。
【问题讨论】:
标签: java pcm bytebuffer javasound oggvorbis
这个问题似乎有两个部分。 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);
【讨论】:
您可以使用 ByteArrayInputStream,它是 InputStream 的子类。 如果您的流非常大,您可能必须写入文件。
【讨论】: