2012-03-21 7 views
1

私はオーディオエンコード用に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 

誰もがこの上の任意の情報を持っている場合は返信してください。

おかげ

答えて

0

私はこのポストは少し古いですが実現するが、Speex.js(ジャバスクリプトポート)と同様の問題に遭遇しました。

問題が同じであるかどうかはわかりませんが、実際にデータを変換していないFloat32ArrayからInt16Arrayへの暗黙の変換があったことがわかりました。これは、(-1.0,1.0)浮動小数点データのすべてが本質的に整数ゼロであり、そのまま変換されたことを意味していました。ただ、データを渡す前にInt16Arrayへの変換を行うために必要な(それは、ライブラリ内の任意のデータ変換を行う必要がありません)、出力は生活に跳び:)

希望に役立つこと

。乾杯!