【问题标题】:Decoding audio with Jspeex in android produces choppy/clipped sound在 android 中使用 Jspeex 解码音频会产生断断续续/削波的声音
【发布时间】:2014-04-09 09:02:11
【问题描述】:

我正在开发一个 android 应用程序,它可以播放实时 speex 音频流。所以我使用了 jspeex library .
音频流为 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)时,音质更差。 我想知道我的代码中是否有任何参数配置错误。
任何帮助,建议表示赞赏。
提前致谢。

【问题讨论】:

    标签: android audio live-streaming speex jspeex


    【解决方案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 的缓冲区太小或太大,您会遇到音频故障。我建议你看看here 并使用这些值(sampleRatebufferSize)。

    【讨论】:

    • 我设置了 11025,因为传入的音频是 11 KHz,我也尝试了不同的标准频率和缓冲区大小.. 但质量没有提高
    猜你喜欢
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多