我的目标是在录制设备的麦克风输入时播放本地文件,并实现低延迟。我找到了Superpowered库,因为文档中提供了低延迟特性。我使用SuperpoweredAdvancedAudioPlayer和SuperpoweredAndroidAudioIO创建了播放器,它能够正常播放。
SuperpoweredAndroidAudioIO有一个构造函数,带有参数boolean enableInput, boolean enableOutput。当前我使用的是enableInput == false,enableOutput == true。当我将这些参数设置为true时,没有任何效果。
我想知道是否可能同时录制文件和播放其他文件?
此外,库中还有SuperpoweredRecorder类,但它不适用于直接写入磁盘。需要使用createWAV、fwrite、closeWAV方法。我尝试单独实现Recorder,但质量不好(比真实录音快两三倍 + 声音失真)。以下是我使用的记录最简单的代码片段:
SuperpoweredAndroidAudioIO有一个构造函数,带有参数boolean enableInput, boolean enableOutput。当前我使用的是enableInput == false,enableOutput == true。当我将这些参数设置为true时,没有任何效果。
我想知道是否可能同时录制文件和播放其他文件?
此外,库中还有SuperpoweredRecorder类,但它不适用于直接写入磁盘。需要使用createWAV、fwrite、closeWAV方法。我尝试单独实现Recorder,但质量不好(比真实录音快两三倍 + 声音失真)。以下是我使用的记录最简单的代码片段:
void SuperpoweredFileRecorder::start(const char *destinationPath) {
file = createWAV(destinationPath, sampleRate, 2);
audioIO = new SuperpoweredAndroidAudioIO(sampleRate, bufferSize, true, false, audioProcessing, NULL, bufferSize); // Start audio input/output.
}
void SuperpoweredFileRecorder::stop() {
closeWAV(file);
audioIO->stop();
}
static bool audioProcessing(void *clientdata, short int *audioInputOutput, int numberOfSamples, int samplerate) {
fwrite(audioInputOutput, sizeof(short int), numberOfSamples, file);
return false;
}
也许我不能使用Superpowered来实现这个目的,需要直接使用OpenSL ES进行录音。
提前致谢!