JSpeex解码不起作用

时间:2012-03-21 12:43:11

标签: java audio jspeex

我正在使用JSpeex库进行音频编码。 编码似乎工作正常。但是解码没有。(即我将所有零都作为解码数据。)

// encoding ///

SpeexEncoder enc = new SpeexEncoder();


// if i use channel as 1 instead of 2 even encoding doesn't work

enc.init(mode, quality, 44100, 2);

enc.processData(b, 0, b.length); // b is byte array i'm trying to encode & then decode

enc.getProcessedData(temp, 0); // save encoded data to temp // temp is byte array

////Decoding /////////

SpeexDecoder dec = new SpeexDecoder();

dec.init(mode,44100,2,true);

dec.processData(temp, 0, temp.length);

dec.getProcessedData(decoded, 0); //decoded is the output byte array which comes only zeros

如果有人对此有任何疑问,请回复。

由于

1 个答案:

答案 0 :(得分:0)

我意识到这篇文章有点陈旧,但与Speex.js(一个javascript端口)遇到了类似的问题。

不确定问题是否与您相同,但我发现从Float32ArrayInt16Array的隐式转换并未实际转换数据。这意味着所有(-1.0,1.0)浮点数据基本上都是整数零,并按原样转换。

只需要在传入数据之前转换为Int16Array(因此它不需要在库中进行任何数据转换),并且输出生机勃勃:)

希望有所帮助。干杯!