3

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

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;
}

但我在音频输出上听到嗡嗡声而不是静音。s数组不0应该保持沉默吗?我也试过-1.0f了,它给出了不同的嗡嗡声。

4

1 回答 1

3

最可能的原因是流是立体声的,因此每帧有 2 个样本。您当前的代码假定为单声道流。

尝试改变:

writeBlankData(floatData, numFrames);

至:

writeBlankData(floatData, numFrames * audioStream->getChannelCount());
于 2020-08-25T16:43:41.170 回答