android - Oboe onAudioReady方法如何放大音频数据?

标签 android c++ audio oboe

我想使用双簧管库放大麦克风录制的音频数据。 我这样创建 AudioEngine.cpp:https://github.com/google/oboe/blob/master/samples/LiveEffect/src/main/cpp/LiveEffectEngine.cpp 这是具有 audioData 的类:

DataCallbackResult
AudioEngine::onAudioReady(AudioStream *oboeStream, void *audioData, int32_t numFrames) {

    /* some code */


 // add your audio processing here

    return DataCallbackResult::Continue;
}

最佳答案

在 LiveEffect 示例中,录制和播放流都是 AudioFormat::I16,即 16 位整数。在这一行中,您要转换为 float:

auto *outputData = static_cast<float *>(audioData);    

这会导致您听到的失真,因此只需转换为 int16_t 并乘以恒定幅度即可。

确保检查放大后的样本值不高于INT16_MAX,否则会出现环绕和失真。

关于android - Oboe onAudioReady方法如何放大音频数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55384777/

相关文章:

android - 在 Jetpack Compose Android 中禁用文本字段上的键盘?

java - 这个 Activity 已经有一个由窗口装饰提供的操作栏?

c++ - 在 Windows 7 上使用 Windows Media Foundation 将原始音频文件转换为 AAC

Android MediaPlayer seekTo 精确

Android:将操作系统版本更新到 5.1.1 后图像裁剪后崩溃

Android - 随机列出按钮

c++ - Qt QString "key-value"从 QHash 替换

c++ - 成对和元组计算嵌套类型

c++ - 这个程序调用带有参数包的函数指针有什么问题?

c - 是否可以使用 ALSA 同时捕获麦克风和线路输入?