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)float データが本質的に整数ゼロであり、そのように変換されたことを意味します。

データを渡す前に変換を行う必要があっただけInt16Arrayで(ライブラリ内でデータ変換を行う必要はありません)、出力が生き返りました:)

それが役立つことを願っています。乾杯!

于 2013-01-11T14:00:08.683 に答える