有时我希望我在Oboe中的音频输出不播放任何内容,但我不希望它停止播放,我只是希望在没有数据到达时保持静音。我试过了:

static void writeBlankData(float* pointer, int numFrames) {
    std::fill_n(pointer, numFrames, 0);
}
oboe::DataCallbackResult PlayRecordingCallback::onAudioReady(
        oboe::AudioStream *audioStream,
        void *audioData,
        int numFrames) {
    float *floatData = (float *) audioData;
    writeBlankData(floatData, numFrames);
    return oboe::DataCallbackResult::Continue;
}
但我听到音频输出嗡嗡声而不是静音。 0数组不应该保持沉默吗?我也尝试过-1.0f,它发出了不同的嗡嗡声。

最佳答案

最可能的原因是流是立体声的,因此每帧有2个样本。您当前的代码假设一个单声道流。
尝试更改:

writeBlankData(floatData, numFrames);
至:
writeBlankData(floatData, numFrames * audioStream->getChannelCount());

关于android - 如何给空白数据给双簧管库播放声音?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63478685/

10-09 12:47