1

我正在使用 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

如果有人对此有任何信息,请回复。

谢谢

4

1 回答 1

0

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

不确定您的问题是否相同,但我发现有一个隐式转换,Float32Array实际上Int16Array并没有转换数据。这意味着所有的(-1.0,1.0)浮点数据本质上都是整数零,并且是这样转换的。

只需要Int16Array在传入数据之前进行转换(因此它不需要在库中进行任何数据转换)并且输出会变得生动:)

希望有帮助。干杯!

于 2013-01-11T14:00:08.683 回答