1

ライブ Speex オーディオ ストリームを再生する Android アプリを開発しています。だから私はjspeexライブラリを使用しました。
オーディオ ストリームは 11khz、16 ビットです。
Android側では、次のようにしました:

SpeexDecoder decoder = new SpeexDecoder();
decoder.init(1, 11025,1, true);
decoder.processData(subdata, 0, subdata.length);
byte[] decoded_data =  new byte[decoder.getProcessedDataByteSize()];
int result= decoder.getProcessedData(decoded_data, 0);

このデコードされたデータを Audiotrack で再生すると、オーディオの一部がクリップされます。
また、デコーダーが nb-mode (最初のパラメーターを 0 に設定) に設定されている場合、音質は悪化します。私のコードにパラメーター構成の間違いがあるのだろうか。
任意の助け、アドバイスをいただければ幸いです。
前もって感謝します。

4

1 に答える 1

1

サンプリング レートとバッファ サイズは、特定のデバイスに最適な方法で設定する必要があります。たとえば、AudioRecord.getMinBufferSize()を使用して、バッファーの最適なサイズを取得できます。

   int sampleRate = 11025; //try also different standard sampleRate
   int bufferSize = AudioRecord.getMinBufferSize(sampleRate,
                        AudioFormat.CHANNEL_CONFIGURATION_MONO,
                        AudioFormat.ENCODING_PCM_16BIT);

バッファAudiotrackが小さすぎたり大きすぎたりすると、オーディオの不具合が発生します。ここを見て、これらの値 ( sampleRatebufferSize ) をいじってみることをお勧めします。

于 2015-01-29T18:21:24.810 に答える