我正在开发一个android应用程序,播放现场speex音频流。所以我使用jspeex library。
音频流为11 The,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)时,音质会变差。我想知道我的代码中是否有任何参数配置错误。
任何帮助,建议都很感谢。
提前谢谢。
发布于 2015-01-30 02:21:25
应针对特定设备以优化方式设置采样率和缓冲区大小。例如,您可以使用AudioRecord.getMinBufferSize()获取缓冲区的最佳大小:
int sampleRate = 11025; //try also different standard sampleRate
int bufferSize = AudioRecord.getMinBufferSize(sampleRate,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);如果你的Audiotrack有一个太小或太大的缓冲区,你会遇到音频故障。我建议您查看here并使用这些值(sampleRate和bufferSize)。
https://stackoverflow.com/questions/22957635
复制相似问题