我使用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如果任何人有任何关于这方面的信息,请回复。
谢谢
发布于 2013-01-11 22:00:09
我知道这篇文章有点老了,但在Speex.js (一个javascript端口)上遇到了类似的问题。
不确定这个问题对您来说是否相同,但我发现有一个从Float32Array到Int16Array的隐式转换,实际上并没有转换数据。这意味着所有的(-1.0,1.0)浮点数据本质上都是整数零,并被转换为整数零。
只需要在传入数据之前完成到Int16Array的转换(因此它不需要在库中进行任何数据转换),输出就会变得生动起来:)
希望这能有所帮助。干杯!
https://stackoverflow.com/questions/9804848
复制相似问题