我正在使用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
如果有人对此有任何疑问,请回复。
由于
答案 0 :(得分:0)
我意识到这篇文章有点陈旧,但与Speex.js(一个javascript端口)遇到了类似的问题。
不确定问题是否与您相同,但我发现从Float32Array
到Int16Array
的隐式转换并未实际转换数据。这意味着所有(-1.0,1.0)
浮点数据基本上都是整数零,并按原样转换。
只需要在传入数据之前转换为Int16Array
(因此它不需要在库中进行任何数据转换),并且输出生机勃勃:)
希望有所帮助。干杯!