微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何给空白数据给双簧管库播放声音?

如何解决如何给空白数据给双簧管库播放声音?

有时我希望我在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());

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。