2012-03-21 103 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類似的問題(一個javascript端口)。

不知道問題是否與您的問題相同,但我發現有一個從Float32ArrayInt16Array的隱式轉換,並未實際轉換數據。這意味着所有的浮點型數據本質上都是整數零,並且如此轉換。

只是需要在數據傳遞(所以它不會需要做的圖書館內的任何數據轉換)之前做轉換爲Int16Array,輸出又活了:)

希望有所幫助。乾杯!